python中的线性编程?

时间:2012-05-22 07:56:30

标签: python linear linear-programming

我需要制作线性编程模型。以下是我正在使用的不等式(例如):

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

我需要找到这些不等式描述的区域,并在图形中对其进行着色,以及跟踪该区域的边界线的顶点,并以不同的颜色绘制边界线。请参阅下图,了解我正在寻找的内容。

image of the points of intersection

我正在使用Python 3.2,numpy和matplotlib。 Python中有更好的线性编程模块吗?

7 个答案:

答案 0 :(得分:58)

更新:过去4年来,答案已经过时了, 这是一个更新。你有很多选择:

答案 1 :(得分:19)

我建议使用包cvxopt来解决Python中的凸优化问题。使用线性程序的Python代码的简短示例在cvxopt的文档here中。

答案 2 :(得分:5)

图表用于解决线性程序的唯一时间是作业问题。在所有其他情况下,线性规划问题通过矩阵线性代数得到解决。

对于Python,虽然有一些纯Python库,但大多数人使用带有Python绑定的本机库。有许多用于线性编程的免费和商业库。有关详细列表,请参阅维基百科中的Linear Programming或今日OR / MS中的Linear Programming Software Survey

免责声明:我目前在Gurobi Optimization工作,之前曾在提供CPLEX的ILOG工作。

答案 3 :(得分:4)

为了解决线性规划问题,您可以使用SciPy中的scipy.optimize.linprog模块,该模块使用Simplex算法。

答案 4 :(得分:4)

其他答案在提供解算器列表方面做得很好。但是,只有PuLP被称为用于制定LP模型的Python库。

另一个很好的选择是Pyomo。与PuLP一样,您可以将问题发送给任何解算器并将解决方案读回Python。您还可以操作求解器参数。一位同学和我在2015年比较了PuLP和Pyomo的表现,我们发现Pyomo可以比PuLP快几倍地生成相同问题的.LP文件。

答案 5 :(得分:1)

我建议使用PuLP python包。它有一个很好的界面,你可以使用不同类型的算法来解决LP。

答案 6 :(得分:0)

对我来说,lpsolve是最容易的。无需安装单独的求解器。它附带在包中。