1

我正在尝试解决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
4

1 回答 1

2

好的,我发现了问题:我以为下界和上界是标量,但它们是向量,为每个坐标指定它的上下界是什么,所以调用函数的正确方法是

[weights,~,flag]=linprog(f,[],[],C,b,zeros(size(C,2),1,1),ones(size(C,2))*10);
于 2012-03-08T01:40:15.967 回答