2012-05-22 44 views
24

我需要製作一個線性編程模型。下面是我使用(例如)不等式:在Python中的線性編程?

6x + 4y <= 24 
x + 2y <= 6 
-x + y <= 1 
y <= 2 

我需要找到這些不平等描述的區域,和陰影它在圖形,以及跟蹤邊界線的頂點並繪製不同顏色的邊界線。看到下面的圖表爲我正在尋找的例子。

image of the points of intersection

我正在使用Python 3.2,numpy和matplotlib。 Python中有更好的線性編程模塊嗎?

+1

第一步將不等式系統轉換爲矩陣形式。 –

+1

@izomorphius根據wikipedia,線性規劃是數學優化:http://en.wikipedia.org/wiki/Linear_programming – XORcist

+0

@möter同​​意 - 刪除我的評論。錯誤是我的,而不是Op的 –

回答

40

更新:答案在過去4年已經有點過時了, 這是一個更新。你有很多選擇:

+4

+1爲「使用正確的工具。」 – djechlin

+0

使用PuLP,它是一個非常棒的python界面,用於GLPK,CPLEX或Gurobi –

+2

匿名downvotes不會幫助任何人。答案有什麼問題? – Ali

17

我推薦使用包cvxopt來解決Python中的凸優化問題。一個線性程序的Python代碼的簡短例子是cvxopt的文檔。

3

圖形只用於解決一個線性程序是一個作業問題。在其他所有情況下,通過矩陣線性代數解決線性規劃問題。

至於Python,雖然有一些純Python庫,但大多數人使用Python綁定的本地庫。線性編程有各種各樣的免費和商業圖書館。有關詳細清單,請參閱維基百科中的Linear Programming或當今OR/MS中的Linear Programming Software Survey

免責聲明:我目前爲Gurobi Optimization工作,並曾爲提供CPLEX的ILOG工作。

+6

在作業和工作之間也有對學習的熱情 - 我認爲你寫的第一句話是不合適的... – siemanko

+0

線性規劃問題最快嗎? – Royi

0

我會推薦使用PuLP python包。它有一個很好的界面,你可以使用不同類型的算法來解決LP問題。

0

lpsolve對我來說是最簡單的。無需安裝單獨的求解器。它隨附在包中。

2

爲了解決線性規劃問題,您可以使用SciPy中的scipy.optimize.linprog模塊,該模塊使用Simplex算法。

0

其他答案已經做得很好,提供了求解器列表。但是,只有PuLP被提到作爲一個Python庫來制定LP模型。

另一個不錯的選擇是Pyomo。像PuLP一樣,您可以將問題發送給任何求解器,並將解決方案讀回Python。您也可以操作求解器參數。一位同學和我在2015年比較了PuLP和Pyomo的表現,我們發現Pyomo可以比PuLP快幾倍地爲相同問題生成.LP文件。