2012-03-08 169 views
1

我试图在Matlab求解线性规划问题,输入是linprog给出错误的解决方案?

[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 

回答

2

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

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