混合整数線形計画法(MILP)は確かにNP完全ですが、混合整数線形計画法の解決可能な(重要な)インスタンスがあります。
NP完全とは、混合整数線形計画法が次のことを意味します。
a)非決定性チューリングマシン(NP部分)を使用して多項式時間で解ける
b)3-SATに還元可能な多項式時間(完全な部分。残りの議論では、この部分は実際には重要ではない)
実際には、非決定的なチューリングマシンがなく、「バイナリ決定変数を0と1のすべての可能な組み合わせに設定し、結果の線形プログラム(LP)を解く」などのアルゴリズムを書くことができないため、多項式時間。つまり、漸近的な意味で、MILPはであり、O( 2n)n
このステートメントは、「小さな」インスタンスが扱いにくいという意味ではありません。残念ながら、MILPインスタンスにとって小さな意味を正確に述べることはできません。日常的に3,000以上のバイナリ決定変数を持つ問題を解決します。問題の定式化に応じて、問題は.01秒未満(比較的制約の少ない問題の場合)または1時間以上(多くの制約がアクティブな問題の場合)かかります。有利な構造を持つため。最先端のLPソルバーは数百万の連続決定変数でLPを解くことができ、特別な構造がなければ、1,000から10前後の問題のインスタンスはほとんどありません。
MILPの解決可能なインスタンスがあると思われる場合は、ブランチアンドバインドまたはブランチアンドカットアルゴリズムを使用する必要があります。最適な実装はCPLEXとGurobiです。両方とも、十分に掘り下げると無料のアカデミックライセンスを持つ商用製品です。オープンソースソルバーが本当に必要な場合は、COIN-ORコミュニティのプロジェクトの方が適していますが、ソースパッケージは細心の注意を払うこともあります。最も関連性の高いプロジェクトは、CBCブランチカットソルバー、SYMPHONYソルバー、BCPブランチカット価格ソルバー、ABACUSブランチカットソルバーです。これらのプロジェクトはすべて、COIN-ORからの複数のパッケージを必要とします、そのモジュール構造のため。
複数のソルバーを試すオプションが必要な場合は、COIN-ORのOpen Solver Interfaceを使用することをお勧めします。このインターフェイスの一部では基本的なソルバーオプションのみを設定でき、ソルバーの高度なオプションを設定するには、COIN-ORのメーリングリストで詳細を確認する必要があります。商用のMILPソルバーは、オープンソースソルバーよりもはるかに高速です(場合によっては1桁以上)。プロトタイピングの別のオプションは、GAMSやAMPLなどの代数モデリング言語の使用です。どちらのソフトウェアパッケージも商用ですが、小さな問題のあるインスタンスで使用できる試用版があります。より大きな問題の場合は、GAMSまたはAMPLファイルを解決するNEOSサーバー。このサーバーは公開されています。
MILPのインスタンスが十分に大きい場合、これらのソルバーはどれもうまく機能しません。整数変数を連続変数に緩和し、問題を解決してから、問題インスタンスの実行可能な解決策である整数変数の最も近いコレクションに丸めることができます。MILPのLP緩和の最適なソリューションは、MILPの最適な目的関数値の下限(もちろん最小化を想定)を提供し、MILPの実行可能なソリューションは、最適な目的の上限を提供しますMILPの関数値。
本当に幸運で、制約行列が完全にユニモジュラーである場合、LPソルバーを使用してMILPの整数解を生成でき、サイズが大きいにもかかわらず問題を効率的に解決できます。他のクラスの問題には、ナップザック問題や切り株問題などの高速近似アルゴリズムがあります。特殊なMILP分解アルゴリズムは、特殊な構造を持つ問題にも存在しますが、これらのトピックはやや専門的であり、私の論文の範囲外であるため、詳細には詳しくありません。
MILPを含む問題クラスのFPTASが存在しますが、MILP専用の完全多項式時間近似スキーム(FPTAS)については知りません(このペーパーを参照してください))。私の推奨事項は、上記の混合整数線形計画法ソルバーのいずれかを、制限時間と最適性ギャップの適切な許容値と組み合わせて使用することです。そうすることで、制限時間内にMILPに対して可能な限り最良の実行可能なソリューションが得られ、制限時間内にソルバーが正常に終了した場合、実行可能なソリューションは、設定した最適性ギャップ許容範囲内で最適になります。実行可能な解は上限であり、ソルバーは適切な下限を与える可能性があるため、この一連のアクションでは、解の品質に限界があります。限界は特定の因子の最適なソリューション内にあるとは限りませんが、その場合も、FPTASは近似が良くなるとより高価になります。
MILP処方に落ち着く前にできる最も重要なことは、あなたが見つけることができる最も強い処方を選ぶことです。強力な定式化の選択方法に関するアドバイスは、BertsimasとTsitsiklisによる線形最適化入門にあります。主なアイデアは、制約が可能な限り公式の凸包に近いポリトープを定義する公式を選択することです(これらのコースノートも参照してください)。強力な定式化を選択すると、問題の解決にかかる時間に大きな違いが生じる可能性があります。