- 线性规划
- 非线性规划
线性规划
MATLAB\text {MATLAB}MATLAB线性规划的标准形式:minxc⊤x s. t. Ax⩽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 cc和x\boldsymbol xx 为nnn维列向量,b\boldsymbol bb为mmm维列向量;A\boldsymbol AA为m×nm \times nm×n矩阵
maxxc⊤x s. t. Ax⩾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标准型为minx−c⊤x s. t. −Ax⩽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一般线性规划问题的标准型为minz=∑i=1ncjxj(1) \min z=\sum_{i=1}^{n} c_{j} x_{j} \qquad(1) minz=i=1∑ncjxj(1) s.t. ∑j=1naijxj⩽bj,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=(x1,x2,⋯ ,xn)\boldsymbol{x}=\left(x_{1}, x_{2}, \cdots, x_{n}\right)x=(x1,x2,⋯,xn)称为线性规划问题的可行解,使目标函数(1)(1)(1)达到最小值的可行解称为最优解。所有可行解构成的集合称为问题的可行域,记为RRR.
MATLAB\text {MATLAB}MATLAB命令函数为[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) [\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)fval\mathrm{fval}fval返回目标函数的值;Aeq,beq\mathrm{Aeq,beq}Aeq,beq对应等式约束Ax=bAx=bAx=b;LB,UB\mathrm{LB,UB}LB,UB分别是变量xxx的下界和上界;X0\mathrm{X_0}X0是xxx的初始值;OPTIONS\mathrm{OPTIONS}OPTIONS是控制参数
例1minz=2x1+3x2+x3 \min z=2 x_{1}+3 x_{2}+x_{3} minz=2x1+3x2+x3 s. t. {
x1+4x2+2x3⩾83x1+2x2⩾6x1,x2,x3⩾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,[],[],zeros(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];