混合整数線形プログラムの効率的なソリューション


12

多くの重要な問題は、混合整数線形プログラムとして表現できます。残念ながら、このクラスの問題に対する最適なソリューションの計算はNP-Completeです。幸いなことに、適度な量の計算のみで高品質のソリューションを提供できる近似アルゴリズムがあります。

特定の混合整数線形プログラムを分析して、これらの近似アルゴリズムのいずれかに役立つかどうかを確認するにはどうすればよいですか?そのようなプログラムが持つ可能性のある関連する特性または品質は何ですか?

現在使用されている関連アルゴリズムは何ですか?また、これらの品質はどのようにこれらのアルゴリズムにマッピングされますか?

実験のためにどのソフトウェアパッケージを探す必要がありますか?

回答:


15

混合整数線形計画法(MILP)は確かにNP完全ですが、混合整数線形計画法の解決可能な(重要な)インスタンスがあります。

NP完全とは、混合整数線形計画法が次のことを意味します。

a)非決定性チューリングマシン(NP部分)を使用して多項式時間で解ける

b)3-SATに還元可能な多項式時間(完全な部分。残りの議論では、この部分は実際には重要ではない)

実際には、非決定的なチューリングマシンがなく、「バイナリ決定変数を0と1のすべての可能な組み合わせに設定し、結果の線形プログラム(LP)を解く」などのアルゴリズムを書くことができないため、多項式時間。つまり、漸近的な意味で、MILPはであり、O2nn

このステートメントは、「小さな」インスタンスが扱いにくいという意味ではありません。残念ながら、MILPインスタンスにとって小さな意味を正確に述べることはできません。日常的に3,000以上のバイナリ決定変数を持つ問題を解決します。問題の定式化に応じて、問題は.01秒未満(比較的制約の少ない問題の場合)または1時間以上(多くの制約がアクティブな問題の場合)かかります。有利な構造を持つため。最先端のLPソルバーは数百万の連続決定変数でLPを解くことができ、特別な構造がなければ、1,000から10前後の問題のインスタンスはほとんどありません。

MILPの解決可能なインスタンスがあると思われる場合は、ブランチアンドバインドまたはブランチアンドカットアルゴリズムを使用する必要があります。最適な実装はCPLEXGurobiです。両方とも、十分に掘り下げると無料のアカデミックライセンスを持つ商用製品です。オープンソースソルバーが本当に必要な場合は、COIN-ORコミュニティのプロジェクトの方が適していますが、ソースパッケージは細心の注意を払うこともあります。最も関連性の高いプロジェクトは、CBCブランチカットソルバーSYMPHONYソルバーBCPブランチカット価格ソルバーABACUSブランチカットソルバーです。これらのプロジェクトはすべて、COIN-ORからの複数のパッケージを必要とします、そのモジュール構造のため。

複数のソルバーを試すオプションが必要な場合は、COIN-ORのOpen Solver Interfaceを使用することをお勧めします。このインターフェイスの一部では基本的なソルバーオプションのみを設定でき、ソルバーの高度なオプションを設定するには、COIN-ORのメーリングリストで詳細を確認する必要があります。商用のMILPソルバーは、オープンソースソルバーよりもはるかに高速です(場合によっては1桁以上)。プロトタイピングの別のオプションは、GAMSAMPLなどの代数モデリング言語の使用です。どちらのソフトウェアパッケージも商用ですが、小さな問題のあるインスタンスで使用できる試用版があります。より大きな問題の場合は、GAMSまたはAMPLファイルを解決するNEOSサーバー。このサーバーは公開されています。

MILPのインスタンスが十分に大きい場合、これらのソルバーはどれもうまく機能しません。整数変数を連続変数に緩和し、問題を解決してから、問題インスタンスの実行可能な解決策である整数変数の最も近いコレクションに丸めることができます。MILPのLP緩和の最適なソリューションは、MILPの最適な目的関数値の下限(もちろん最小化を想定)を提供し、MILPの実行可能なソリューションは、最適な目的の上限を提供しますMILPの関数値。

本当に幸運で、制約行列が完全にユニモジュラーである場合、LPソルバーを使用してMILPの整数解を生成でき、サイズが大きいにもかかわらず問題を効率的に解決できます。他のクラスの問題には、ナップザック問題切り株問題などの高速近似アルゴリズムがあります。特殊なMILP分解アルゴリズムは、特殊な構造を持つ問題にも存在しますが、これらのトピックはやや専門的であり、私の論文の範囲外であるため、詳細には詳しくありません。

MILPを含む問題クラスのFPTASが存在しますが、MILP専用の完全多項式時間近似スキーム(FPTAS)については知りません(このペーパーを参照してください))。私の推奨事項は、上記の混合整数線形計画法ソルバーのいずれかを、制限時間と最適性ギャップの適切な許容値と組み合わせて使用​​することです。そうすることで、制限時間内にMILPに対して可能な限り最良の実行可能なソリューションが得られ、制限時間内にソルバーが正常に終了した場合、実行可能なソリューションは、設定した最適性ギャップ許容範囲内で最適になります。実行可能な解は上限であり、ソルバーは適切な下限を与える可能性があるため、この一連のアクションでは、解の品質に限界があります。限界は特定の因子の最適なソリューション内にあるとは限りませんが、その場合も、FPTASは近似が良くなるとより高価になります。

MILP処方に落ち着く前にできる最も重要なことは、あなたが見つけることができる最も強い処方を選ぶことです。強力な定式化の選択方法に関するアドバイスは、BertsimasとTsitsiklisによる線形最適化入門にあります。主なアイデアは、制約が可能な限り公式の凸包に近いポリトープを定義する公式を選択することです(これらのコースノートも参照してください)。強力な定式化を選択すると、問題の解決にかかる時間に大きな違いが生じる可能性があります。


参照する好ましい構造の例は何ですか?私のプログラムについて尋ねるべき質問は何ですか?
MRocklin

ユニモジュラ性、ナップザックの問題、在庫切れの問題以外に、問題が多段階の確率的プログラムである場合、その構造を活用する分解戦略があります。(一般化された)ベンダーの分解、ダンツィッヒ-ウルフ分解、L字分解などの方法を使用できます。制約でブロック角構造を利用することもできます。Dantzig-Wolfe分解、ベンダーの分解、および一般化されたベンダーの分解は、宿題の問題のために過去に1〜2回使用した方法です。
ジェフオックスベリー

Geoffが言及しなかった他のトリックとトラップがいくつかありますが、正確な問題やクラスを見ずに特定のアドバイスを思い付くことは困難です。
アロンアフマディア

NEOSサーバーは、商用サーバーでも問題を解決できるかどうかを判断するのに最適な方法です。
Ant6n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.