- 线性规划
- 非线性规划
线性规划
MATLAB \text {MATLAB} MATLAB线性规划的标准形式: min x c ⊤ x s. t. A x ⩽ b \min _{x} \boldsymbol{c}^{\top} \boldsymbol{x} \quad \text { s. t. } \quad \boldsymbol{A} \boldsymbol{x} \leqslant \boldsymbol{b} xminc⊤x s. t. Ax⩽b其中, c \boldsymbol c c和 x \boldsymbol x x 为 n n n维列向量, b \boldsymbol b b为 m m m维列向量; A \boldsymbol A A为 m × n m \times n m×n矩阵
max x c ⊤ x s. t. A x ⩾ b \max _{x} \boldsymbol{c}^{\top} \boldsymbol{x} \quad \text { s. t. } \quad \mathbf{A x} \geqslant \boldsymbol{b} xmaxc⊤x s. t. Ax⩾b的 MATLAB \text {MATLAB} MATLAB标准型为 min x − c ⊤ x s. t. − A x ⩽ b \min _{x} -\boldsymbol{c}^{\top} \boldsymbol{x} \quad \text { s. t. } \quad -\boldsymbol{A} \boldsymbol{x} \leqslant \boldsymbol{b} xmin−c⊤x s. t. −Ax⩽b一般线性规划问题的标准型为 min z = ∑ i = 1 n c j x j ( 1 ) \min z=\sum_{i=1}^{n} c_{j} x_{j} \qquad(1) minz=i=1∑ncjxj(1) s.t. ∑ j = 1 n a i j x j ⩽ b j , i = 1 , 2 , ⋯   , m ( 2 ) \text { s.t. } \quad \sum_{j=1}^{n} a_{i j} x_{j} \leqslant b_{j}, \quad i=1,2, \cdots, m \qquad(2) s.t. j=1∑naijxj⩽bj,i=1,2,⋯,m(2)满足约束条件 ( 2 ) (2) (2)的解 x = ( x 1 , x 2 , ⋯   , x n ) \boldsymbol{x}=\left(x_{1}, x_{2}, \cdots, x_{n}\right) x=(x1,x2,⋯,xn)称为线性规划问题的可行解,使目标函数 ( 1 ) (1) (1)达到最小值的可行解称为最优解。所有可行解构成的集合称为问题的可行域,记为 R R R.
MATLAB \text {MATLAB} MATLAB命令函数为 [ x , f v a l ] = linprog ( c , A , b , A e q , b e q , L B , U B , X 0 , O P T I O N S ) [\mathrm{x}, \mathrm { fval }]=\operatorname{linprog}(\mathrm{c}, \mathrm{A}, \mathrm{b}, \mathrm { Aeq, beq }, \mathrm{LB}, \mathrm{UB}, \mathrm{X}_0, \mathrm { OPTIONS) } [x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) f v a l \mathrm{fval} fval返回目标函数的值; A e q , b e q \mathrm{Aeq,beq} Aeq,beq对应等式约束 A x = b Ax=b Ax=b; L B , U B \mathrm{LB,UB} LB,UB分别是变量 x x x的下界和上界; X 0 \mathrm{X_0} X0是 x x x的初始值; O P T I O N S \mathrm{OPTIONS} OPTIONS是控制参数
例1 min z = 2 x 1 + 3 x 2 + x 3 \min z=2 x_{1}+3 x_{2}+x_{3} minz=2x1+3x2+x3 s. t. { x 1 + 4 x 2 + 2 x 3 ⩾ 8 3 x 1 + 2 x 2 ⩾ 6 x 1 , x 2 , x 3 ⩾ 0 \text { s. t. }\left\{\begin{array}{l}{x_{1}+4 x_{2}+2 x_{3} \geqslant 8} \\ {3 x_{1}+2 x_{2} \geqslant 6} \\ {x_{1}, x_{2}, x_{3} \geqslant 0}\end{array}\right. s. t. ⎩⎨⎧x1+4x2+2x3⩾83x1+2x2⩾6x1,x2,x3⩾0解: c = [ 2 ; 3 ; 1 ] ; a = [ 1 , 4 , 2 ; 3 , 2 , 0 ] ; b = [ 8 ; 6 ] ; [ x , y ] = linprog ( c , − a , − b , [ ] , [ ] , z e r o s ( 3 , 1 ) ) ; \begin{array}{l}{\mathrm{c}=[2 ; 3 ; 1];} \\ {\mathrm{a}=[1,4,2 ; 3,2,0];} \\ {\mathrm{b}=[8 ; 6];} \\ {[\mathrm{x}, \mathrm{y}]=\text { linprog }(\mathrm{c},-\mathrm{a},-\mathrm{b},[ ],[ ], \mathrm{zeros}(3,1));}\end{array} c=[2;3;1];a=[1,4,2;3,2,0];b=[8;6];[x,y