このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
intlinprog
混合整数線形計画法 (MILP)
構文
説明
混合整数線形計画法ソルバー。
以下で指定された問題の最小値を見つけます。
f、x、intcon、b、beq、lb、ub はベクトル、A と Aeq は行列です。
f、intcon、lb および ub をベクトルまたは配列として指定することができます。詳細は、行列引数を参照してください。
メモ
intlinprog
は、ソルバーベースのアプローチのみに適用されます。2 つの最適化アプローチの詳細については、はじめに問題ベース アプローチまたはソルバーベース アプローチを選択を参照してください。
は x
= intlinprog(problem
)problem
構造体を使用してすべてのソルバーの入力をカプセル化します。mpsread
を使用して MPS ファイルから problem
構造体をインポートできます。prob2struct
を使用して OptimizationProblem
オブジェクトから構造体 problem
を作成することもできます。
例
入力引数
出力引数
制限
通常、解
x(intCon)
の整数値と推定される要素は厳密に整数ではありません。intlinprog
では整数のIntegerTolerance
内の解の値はすべて整数と見なされます。整数と推定されるすべての数値を厳密に整数に丸めるには、関数
round
を使用します。x(intcon) = round(x(intcon));
注意
丸めによって解が実行不可能になる場合があります。丸めを行った後に実行可能性をチェックします。
max(A*x - b) % See if entries are not too positive, so have small infeasibility max(abs(Aeq*x - beq)) % See if entries are near enough to zero max(x - ub) % Positive entries are violated bounds max(lb - x) % Positive entries are violated bounds
intlinprog
は、絶対値が2.1e9
を超える場合、解の要素に整数値を適用しません。このような要素が解に含まれる場合、intlinprog
は警告を表示します。この警告が表示された場合は、解をチェックして、解の整数値と推定される要素が整数に近いかどうかを確認します。intlinprog
では、f
、A
またはub
の係数など、問題の要素が絶対値の1e25
を超えることはできません。このような問題をもつintlinprog
を実行しようとすると、intlinprog
でエラーが発生します。
ヒント
2 値変数を指定するには、変数が
intcon
で整数となるように設定し、下限に0
、上限に1
を指定します。スパース線形制約行列
A
とAeq
を指定してメモリを節約します。ただし、b
とbeq
にスパース行列を指定することはできません。x0
引数を含めると、intlinprog
でより良い整数実行可能点が見つかるまで、'rins'
およびガイド付きダイビング ヒューリスティックでその値が使用されます。そのため、x0
を指定する場合には、'Heuristics'
オプションを'rins-diving'
に設定するか、'rins'
を使用する別の設定にすることによって、良好な結果を得ることができます。整数要素、つまり整数を示す
1
をもつバイナリ ベクトルの論理インデックスを提供するには、find
を使用してintcon
形式に変換します。たとえば、logicalindices = [1,0,0,1,1,0,0]; intcon = find(logicalindices)
intcon = 1 4 5
bintprog
はintlinprog
に置き換えられています。古いbintprog
コードをintlinprog
で使用するように更新するには、次の変更を行います。intcon
を1:numVars
に設定します。ここで、numVars
は問題の変数の数です。lb
をzeros(numVars,1)
に設定します。ub
をones(numVars,1)
に設定します。関連するオプションを更新します。
optimoptions
を使用してintlinprog
オプションを作成します。呼び出しを
bintprog
に変更します。以下のようになります。[x,fval,exitflag,output] = bintprog(f,A,b,Aeq,Beq,x0,options) % Change your call to: [x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,Beq,lb,ub,x0,options)
代替機能
アプリ
[最適化] ライブ エディター タスクが intlinprog
にビジュアル インターフェイスを提供します。