我应该在Python中使用哪些库进行线性规划?

23
快速搜索“python线性规划”会出现很多结果(例如 这个 )。 通过浏览,我看到有相当数量的抱怨关于过时的依赖,糟糕的文档等。
有人可以推荐一个无烦恼 (例如快速、文档齐全、易于安装、API清晰) 的Python线性规划库吗?

这里还有一些... http://www.scipy.org/Topical_Software - dfb
6个回答

10

3
这些方案适用于大规模实例,比如至少数百个变量和数千个约束条件。 - Andreas Mueller
1
好问题。我不确定PULP和Pyomo在处理大型问题时的可扩展性如何。但是,我可以说,我的大多数朋友(主要是为了集成电路布局而进行大规模优化问题)使用IBM CPLEX作为他们的优化求解器。根据快速的谷歌搜索,Python有CPLEX API。然而,CPLEX对于非学术用途并不免费。 - solvingPuzzles
我刚刚查看了你的StackExchange个人资料,Andreas,看起来你是一名研究生。你可以获得免费的CPLEX许可证。 :) - solvingPuzzles
@solvingPuzzles,你知道这两个库中是否有类似于 lpmin(x, A, c, lo, hi) 的 NumPy 数组 API 吗? - denis
好问题。我不太确定...我已经几个月没有研究优化方面的东西了,所以现在有点跟不上。 - solvingPuzzles

5

cvxopt是由Lieven Vandenberghe及其合作者编写的。 (这与Boyd和Vandenberghe广泛使用的凸优化教材中的Vandenberghe相同。)它是一个通用的凸锥规划求解器,并使用内点方法。好处是文档完善,有许多示例,易于使用。我认为它的可扩展性相当不错,尽管不如Xpress、Gurobi或cplex等商业产品。

看起来scipy中有一个拉取请求包含(纯python)线性规划实现。所以在未来,scipy可能会有一个线性规划求解器。


记录一下,这是那个 PR https://github.com/scipy/scipy/pull/218 - astrojuanlu

2

1

1

我不知道你具体想做什么,但在Python中,NumPy/SciPy通常是寻找与数学相关的任何内容的首选。


Numpy是一个数组库,还附带了一些额外的功能以保持向后兼容性。Scipy具有一些优化例程,但目前我认为它只有一般的非线性求解器。Scipy目前没有专门用于线性规划的求解器。 - cjordan1

1
你也可以查看or-tools,其中包含一个对广泛使用的线性求解器(如GLPK)的包装器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接