linprog给出了错误的解决方案?

时间:2012-03-08 01:24:59

标签: matlab linear-programming

我正在尝试在matlab中解决线性编程问题,输入是

[weights,~,flag]=linprog(f,[],[],C,b,0,10);

所以,根据手册,这应解决问题min f*x with the constraints C*x=b and 0<=x<=10。因此x的所有条目都应为正数。但是,我得到的解决方案包含否定条目(请参阅下面重现问题的示例)。我得到的标志是1,根据文档意味着该方法已经收敛。

我做错了什么?

这是输入

C =

    19    20    18    20    18
     3     3     4     5     3
     1     1     1     1     2
     1     1     1     1     1

b =

    19
     4
     1
     1

f =

     1
     1
     1
     1

结果是

weights =

   84.1104
  -62.8328
  -41.5552
   21.2776
   -0.0000

1 个答案:

答案 0 :(得分:2)

好的,我发现了问题:我认为下限和上限是标量,但它们是向量,为每个坐标指定它的上限和下限,因此调用函数的正确方法是

[weights,~,flag]=linprog(f,[],[],C,b,zeros(size(C,2),1,1),ones(size(C,2))*10);