整数線形計画法(ILP)問題のすべての解決策を見つける


8

私の問題は、ILPのすべての整数解を見つけることです。例として、2つの変数を持つILPを使用していますが、3つ以上の変数がある場合があります。この問題を最後に解決するために現在使用している方法について説明しますが、この種の問題を解決するための適切で効率的なアルゴリズムまたは方法があるかどうかを知りたいです。

目的関数はありませんが、このILPの制約は

0≤−2x−y≤80≤1−x+3y≤50≤2+x−y≤2x,y∈Z

このILPには2つの変数があるため、制約によって形成される線をグラフ化することで、ソリューション領域を視覚的に検査できます。

y≤−2xy≥−2x−8y≥13x−13y≤13x+43y≤x+2y≥x

グラフ

検査により、には6つの整数解があります:。(x,y){(0,0),(−1,1),(−1,0),(−2,0),(−2,−1),(−3,−1)}

しかし、私の現在の方法は、非負性を緩和し、ブランチアンドカットからの整数で線形計画法を使用することです。最小化、最大化、最小化、最大化の4つの目的関数のセットを使用してみました。これらは以下のようにより小さい検索領域を提供しますxxyy

−3≤x≤0−1≤y≤1

次に、その小さい領域内のすべての有効な整数タプルを反復処理し、元の制約を満たすタプルをフィルタリングします。残っているタプルはすべて有効な整数ソリューションです。

回答:


8

「線形計画法」は最適化問題です。解決しようとしている問題は、有限凸有理ポリトープ内の格子点を数えることです。

この問題には多項式時間アルゴリズムがあり、1994年にAlexander Barvinokによって発見された一般的なケースです。すべての最新のアルゴリズムは、この方法に広く基づいているようです。Barvinok&Pommersheinの1999年の論文、「多面体の格子点のアルゴリズム理論」は、おそらく理論の最良の入門書です。(実際、Barvinokはその後本またはモノグラフを書いたようです。それはさらに良いかもしれません。)

おそらく私が知っているよりも最近の進展がありますが、これは引用を追跡するための出発点になります。


ご覧いただきありがとうございます。私はあなたが言及したトピックに精通していませんが、短い検査で、それらはより多くを学ぶための良い出発点だと思います。残念ながら、私の評判はあなたを賛成するには低すぎます。
— 2016

4
ええと。それは驚くべきことです。が存在するか否かを確認する任意の(例えば、点の数が0以上であるか否かを整数点が凸多面体内)(ILP)インスタンスをプログラミング線形整数の実現可能性を確認することと等価です。ILPはNPハードです。そのため、ポリトープに整数点が1つ含まれているかどうかをチェックすることはもちろん、それらの数を数えることもNP困難であると推測していました。これら2つの事実をどのように調整しますか?どこが間違っているのですか?>0
— DW

問題は、Barvinokのアルゴリズムが固定次元の多項式であることです。変数の数が固定されている場合、制約を追加すると、アルゴリズムは多項式でスケーリングします。格子点を列挙する典型的な場合は、線形ディオファントス方程式の解のようなものであり、そこでは次元が低くなる傾向があります。
— 仮名

2

Land and Doig(1960)は、離散プログラミング問題を解決する方法を提案しました。あなたは彼のアルゴリズムを修正して、最適化問題を解決する代わりに、可能なすべての実行可能な整数解を列挙することができるかもしれません。

参照

AH LandおよびAG Doig(1960)。「離散プログラミング問題を解決する自動方法」。計量経済学。28(3)。497-520ページ。doi:10.2307 / 1910129。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.