我需要製作一個線性編程模型。下面是我使用(例如)不等式:在Python中的線性編程?
6x + 4y <= 24
x + 2y <= 6
-x + y <= 1
y <= 2
我需要找到這些不平等描述的區域,和陰影它在圖形,以及跟蹤邊界線的頂點並繪製不同顏色的邊界線。看到下面的圖表爲我正在尋找的例子。
。
我正在使用Python 3.2,numpy和matplotlib。 Python中有更好的線性編程模塊嗎?
我需要製作一個線性編程模型。下面是我使用(例如)不等式:在Python中的線性編程?
6x + 4y <= 24
x + 2y <= 6
-x + y <= 1
y <= 2
我需要找到這些不平等描述的區域,和陰影它在圖形,以及跟蹤邊界線的頂點並繪製不同顏色的邊界線。看到下面的圖表爲我正在尋找的例子。
。
我正在使用Python 3.2,numpy和matplotlib。 Python中有更好的線性編程模塊嗎?
更新:答案在過去4年已經有點過時了, 這是一個更新。你有很多選擇:
如果不有做的Python則是很多 更容易做到這一點的造型langage,看到Any good tools to solve integer programs on linux?
我個人通過其Python API使用Gurobi這些 天。它是一種商業化的封閉式產品,但免費用於學術研究。
SciPy提供線性規劃:scipy.optimize.linprog。 (我 從來沒有嘗試過這一點。)
隨着PuLP您可以創建MPS和LP files然後 與GLPK,COIN CLP/CBC,CPLEX,或XPRESS解決他們度過 命令行界面。這種方法有其優點和缺點。
顯然,CVXOPT提供了一個Python interface to GLPK,我做了 不知道。我已經使用GLPK 8年了,我可以 高度推薦GLPK。 examples and tutorial of CVXOPT看起來真不錯!
您可以在Wikibook中的 GLPK/Python找到其他的可能性。請注意,其中許多這些不一定是GLPK的 。
我推薦使用包cvxopt來解決Python中的凸優化問題。一個線性程序的Python代碼的簡短例子是cvxopt的文檔。
圖形只用於解決一個線性程序是一個作業問題。在其他所有情況下,通過矩陣線性代數解決線性規劃問題。
至於Python,雖然有一些純Python庫,但大多數人使用Python綁定的本地庫。線性編程有各種各樣的免費和商業圖書館。有關詳細清單,請參閱維基百科中的Linear Programming或當今OR/MS中的Linear Programming Software Survey。
免責聲明:我目前爲Gurobi Optimization工作,並曾爲提供CPLEX的ILOG工作。
我會推薦使用PuLP python包。它有一個很好的界面,你可以使用不同類型的算法來解決LP問題。
lpsolve對我來說是最簡單的。無需安裝單獨的求解器。它隨附在包中。
爲了解決線性規劃問題,您可以使用SciPy中的scipy.optimize.linprog模塊,該模塊使用Simplex算法。
其他答案已經做得很好,提供了求解器列表。但是,只有PuLP被提到作爲一個Python庫來制定LP模型。
另一個不錯的選擇是Pyomo。像PuLP一樣,您可以將問題發送給任何求解器,並將解決方案讀回Python。您也可以操作求解器參數。一位同學和我在2015年比較了PuLP和Pyomo的表現,我們發現Pyomo可以比PuLP快幾倍地爲相同問題生成.LP文件。
第一步將不等式系統轉換爲矩陣形式。 –
@izomorphius根據wikipedia,線性規劃是數學優化:http://en.wikipedia.org/wiki/Linear_programming – XORcist
@möter同意 - 刪除我的評論。錯誤是我的,而不是Op的 –