2012-03-08 92 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);