matlab解决有约束的线性规划问题

在《matlab解决有约束的二次规划问题》中,提到了线性规划问题(linear programming),而线性规划问题实际与二次规划问题十分相似,现在在matlab中实现求解

这是用于求解问题的linprog()函数文档

同样使用一个例子说明这个函数的调用方法

【例】求解如下线性规划问题

【分析】对比帮助文档,需要将目标函数和约束条件分别表示成这样的格式:

表示出这个式子中的各个矩阵即可

1.目标函数的表示

与线性代数课中所学的一样,用一个列矩阵f表示表示各个一次项的系数,即f=\begin{bmatrix} -5\\ -4\\ -6 \end{bmatrix}

2.约束条件的表示

由于约束条件中不含等式,所以Aeq与beq全为空 Aeq=[]  ,  beq=[]

A是前三个约束条件的左边部分,表示为A=\begin{bmatrix} 1& -1 & 1\\ 3& 2& 4\\ 3& 2& 0 \end{bmatrix}

b是前三个约束条件的右边部分,表示为b=\begin{bmatrix} 20\\ 42\\ 30 \end{bmatrix}

lb表示变量的下限lb=\begin{bmatrix} 0\\ 0\\ 0 \end{bmatrix},使用这个式子表示第四个约束条件

3.带入程序中进行计算

查看linprog的帮助文档,根据调用格式使用linprog函数

>> f=[-5;-4;-6];
>> A=[1 -1 1;3 2 4;3 2 0];
>> b=[20;42;30];
>> lb=[0;0;0];
>> [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)

最后一行不打分号,方便显示结果

产生结果如下:

Optimal solution found.


x =

         0
   15.0000
    3.0000


fval =

   -78


exitflag =

     1


output = 

  包含以下字段的 struct:

         iterations: 3
    constrviolation: 0
            message: 'Optimal solution found.'
          algorithm: 'dual-simplex'
      firstorderopt: 1.7764e-15


lambda = 

  包含以下字段的 struct:

      lower: [3×1 double]
      upper: [3×1 double]
      eqlin: []
    ineqlin: [3×1 double]

成功完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值