规划问题MATLAB求解

本文详细介绍了如何使用MATLAB解决线性规划、非线性规划和二次规划问题。通过具体的例子展示了MATLAB的linprog、fmincon和quadprog函数的用法,并讲解了罚函数法求解非线性规划的基本思想。
摘要由CSDN通过智能技术生成
  • 线性规划
  • 非线性规划

线性规划
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} xmincx s. t. Axb其中, 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} xmaxcx s. t. Axb 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} xmincx s. t. Axb一般线性规划问题的标准型为 min ⁡ z = ∑ i = 1 n c j x j ( 1 ) \min z=\sum_{i=1}^{n} c_{j} x_{j} \qquad(1) minz=i=1ncjxj(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=1naijxjbj,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+2x383x1+2x26x1,x2,x30解: 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值