導入
前回の記事で 0-1 変数の特性を理解して体験した後、この特殊な 0-1 整数計画法モデルの解き方を学習してみましょう。
4. 0-1 整数プログラミング
4.2 0-1 整数計画法の解法
整数計画法であるため、実行可能なすべての解の数は限られており、完全な列挙法はアルゴリズムです。各変数が0または1をとるすべての組み合わせを確認し、すべての制約を満たし、目的関数が最適になる組み合わせが0-1整数計画法の最適解となります。
0-1 の変数が n 個ある場合は、2 n 2^nをチェックする必要があります。2n 個の変数の組み合わせ。んんとき_nの数が大きい場合、すべてをリストすることはほとんど不可能です。
次に、暗黙的な列挙法を紹介します。これは、すべての変数の組み合わせの一部をチェックするだけで最適解を見つけることができます。これは、前述の分岐限定法に似ています。
4.2.1 0-1計画モデルの標準タイプ
まず、陰的列挙法を適用して解決するには、元のモデルを次の標準形式に変換する必要があります。
ここで、cj ≥ 0 c_j \geq 0cj≥0、bi b_ib私は正、負、または 0 を指定できます。すべての制約は" ≤ " "\leq "である必要があります。」≤” 型。
通常の標準形式とは少し異なり、式に変換する必要はなく、右端は負の数でも構いませんが、最小値でなければなりません。
指定されたモデルが標準形式でない場合は、次のように変換できます。
- 目的関数が最大値を求める場合、目的関数に -1 を乗算できます。
- 変数xj x_jの場合バツj対応する目的関数係数cj ≤ 0 c_j \leq 0cj≤0の場合は、 ( 1 − xj ) (1-x_j)を使用できます。( 1−バツj) xj x_jを置き換えますバツjそして最後に結果を復元することを忘れないでください。
- 制約が" ≥ " "\geq"の場合「≥」形式の場合は、-1 を掛けます。
- 制約が「=」「=」の場合「="形式で、 " ≥ " "\geq"に変換します。」≥"と" ≤ " "\leq"」≤"、前者に -1 を掛けます。
4.2.2 陰的列挙法の計算手順
暗黙的列挙法では、最初にすべての変数を 0 に設定し、解が実行可能かどうかを確認します。該当する場合、z = 0 z=0z=0の場合、最適解が得られていますが、それが不可能な場合は、変数に 0 または 1 の値をとり、これを固定変数と呼びます。固定変数の各値はサブ問題に対応し、問題は 2 つのサブ領域に分割できます。値が割り当てられていない残りの変数は自由変数と呼ばれます。
標準形式の要件に従って、これらの自由変数の係数はすべて非負であり、すべての自由変数を 0 とし、固定変数の値を加算し、このサブフィールドの解を結合します。チェック後、分岐を停止するか、自由変数がなくなるかすべてのサブフィールドが分岐を停止するまで固定変数の指定を続けます。
そのフローチャートは次のとおりです。
3 番目、4 番目、5 番目はすべて分岐を停止する状況があるため、これらのサブフィールド自由変数の値 0 または 1 の可能なすべての組み合わせが暗黙的に考慮され、必要はありません。それらを 1 つずつリストします。したがって、この方法は暗黙的列挙法と呼ばれ、計算量を大幅に削減できます。
同時に、実際の問題解決において、固定変数を指定する場合、目的関数係数が最も小さい変数を最初に指定することで計算を高速化できます。
最後に書きます
陰的列挙法の解決プロセスは依然として比較的複雑で面倒であり、各ステップで考え方とロジックを明確にする必要があります。次の記事では、代入問題について学びましょう。