2017-05-23 12 views
2

私は関数の最小値を与える数学の問題を解決したいと思います。機能はmin y = x1 + x2 + x3 +...+ x14です。不変条件は以下のとおりです。Matlabについて "intlinprog" function

2x_1 + x_2 + x_3 + x_4 + x_5 ≥ 28 
x_4+ x_5 + 2x_6 + x_7 + x_8 + x_9 ≥ 79 
x_3 + x_5 + 2x_7 + x_8 + 4x_10 + 3x_11 + 2x_12 + x_13 ≥ 46 
x_1 + 3x_2 + 2x_3 + x_4 + x_6 + 2x_8 + 3x_9 + x_11 + 2x_12 + 4x_13 + 5x_14 ≥ 33 

ので、私はこのようなMATLABコードを記述します。

fun = [1;1;1;1;1;1;1;1;1;1;1;1;1;1]; 
intcon = 14; 
a = [-2 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0; 0 0 0 -1 -1 -2 -1 -1 -1 0 0 0 0 0;... 
    0 0 -1 0 -1 0 -2 -1 0 -4 -3 -2 -1 0; -1 -3 -2 -1 0 -1 0 -2 -3 0 -1 -2 -4 -5]; 
b = [-28;-79;-46;-33]; 
[x,fval] = intlinprog(fun,intcon,a,b) 

が、私はこのコードを実行すると、それは私に次のエラー与える:

Intlinprog stopped because the root LP problem is unbounded.

x =

[] 

fval =

[] 

を私が発見しましたその解決策はx5 = 28,x6 = 23,x8 = 5,x10 = 4min y = 60

エラーの原因を教えてください。正しい答え(xiは整数でなければならない)を取得したい場合は、何を変更すればよいですか?

答えて

1

問題が無制限であると訴える場合、目的関数が無期限にどの方向に改善できるかはわかります。あなたの場合、目的関数はすべての変数の合計であり、制限のない最小化問題に関する警告は、制約に応じて有効なポイントである一方、変数の1つ以上が負の無限大に向かって減少していることを意味します。

このような小さな思考実験は、問題の定式化に何が問題なのかを調べるときに役立ちます。あなたの変数の最小範囲を含めることを意味すると思います。0 <= x_ilbubの入力パラメータをintlinprog()に指定すると、変数の下限と上限が含まれます。

+1

ありがとうございました。私はlbとubのパラメータを追加することでそれを修正しました。私の変数の最小限の範囲を含めて忘れました。 – xiaoli

関連する問題