線形計画モデルを作成する必要があります。私が使用している不等式は次のとおりです(例)。
6x + 4y <= 24
x + 2y <= 6
-x + y <= 1
y <= 2
これらの不等式で記述された領域を見つけて、グラフで陰影を付け、この領域の境界線の頂点を追跡し、境界線を異なる色で描画する必要があります。私が探しているものの例については、下のグラフを参照してください。
。
Python 3.2、numpy、およびmatplotlibを使用しています。Pythonの線形プログラミングに適したモジュールはありますか?
UPDATE:答えは過去4年でやや時代遅れになりました。ここに更新があります。多くのオプションがあります:
have to do it Pythonしない場合、モデリング言語でこれを行う方がはるかに簡単です。 Linuxで整数プログラムを解くための良いツールはありますか?
私は個人的に Gurobi をPython APIを使用して使用しています。これは商用のクローズドソース製品ですが、学術研究には無料です。
SciPyは線形プログラミングを提供します: scipy.optimize.linprog 。 (私はこれを試したことがない。)
PuLP を使用すると、 [〜#〜] mps [〜#〜] および LPファイル を作成し、GLPK、COIN CLP/CBC、CPLEXで解決できます。 、またはコマンドラインインターフェイスを介したXPRESS。このアプローチには長所と短所があります。
どうやら、 [〜#〜] cvxopt [〜#〜] は Python GLPKへのインターフェイス を提供していますが、私はそれを知りませんでした。 [〜#〜] glpk [〜#〜] を8年間使用しており、GLPKを強く推奨できます.CVXOPTの の例とチュートリアル は本当に素晴らしいようです!
Wikibookの GLPK/Python で他の可能性を見つけることができます。これらの多くは必ずしもGLPKに限定されているわけではないことに注意してください。
グラフを使用して線形プログラムを解くのは、宿題の問題だけです。他のすべての場合、線形計画問題は行列線形代数によって解決されます。
Pythonに関しては、ピュアPythonライブラリがいくつかありますが、ほとんどの人はPythonバインディングでネイティブライブラリを使用します。線形プログラミング用のさまざまな無料および商用ライブラリがあります。詳細なリストについては、ウィキペディアの Linear Programming またはOR/MS Todayの Linear Programming Software Survey を参照してください。
免責事項:私は現在Gurobi Optimizationに勤務しており、以前はCPLEXを提供していたILOGに勤務していました。
他の答えは、ソルバーのリストを提供する良い仕事をしました。ただし、LPモデルを作成するためのライブラリとしてPythonライブラリとして言及されているのはPuLPのみです。
もう1つの優れたオプションは Pyomo です。 PuLPと同様に、問題を任意のソルバーに送信し、ソリューションをPythonに読み戻すことができます。ソルバーパラメーターを操作することもできます。クラスメートと私は2015年にPuLPとPyomoのパフォーマンスを比較しましたが、Pyomoは同じ問題に対して.LPファイルをPuLPよりも数倍速く生成できることがわかりました。
線形計画法の問題を解決するには、SciPyの scipy.optimize.linprog モジュールを使用できます。これは、シンプレックスアルゴリズムを使用します。
PuLP pythonパッケージ。Niceインターフェースがあり、LPを解決するために異なるタイプのアルゴリズムを使用できます。
lpsolveは私にとって最も簡単です。別のソルバーをインストールする必要はありません。パッケージに同梱されています。