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

OK、問題が見つかりました。下限と上限はスカラーだと思っていましたが、それらはベクトルであり、各座標の上限と下限を指定しているため、関数を呼び出す正しい方法は次のとおりです。

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