我尝试使用PuLP,但是添加4000个约束(有67个变量)需要花费50秒。解决这个问题只需几秒钟。在
我们希望使用PuLP轻松地测试一系列问题的多个解算器。在
要用这么长时间的纸浆吗?直接使用PyGLPK只需很小一部分秒,包括设置和求解,所以我希望不会。我能做些什么来提高制浆这一步的效率?在
更新
我的约束矩阵是非常稀疏的,我能够通过只包含非零系数来将这个特定问题的设置时间缩短到4或5秒。我仍然能够编写我自己的.lp或.mps格式的文件,用cbc或glpsol子进程解决问题,并比PuLP更高效地解析解决方案,因为当PuLP需要几秒钟的时间时,我可以在几毫秒内写入输入文件。我还是不知道为什么会这样。在
我没有足够的代表来评论。在
但你看过这个吗:
https://groups.google.com/forum/#!topic/pulp-or-discuss/p1N2fkVtYyM
问题是:
这似乎也是你所报告的。解决方案是不使用+=或sum(…)运算符,而是如链接中所述:
^{pr2}$所以,也许你一次只向PuLP添加约束1,而不是先构建约束列表,然后在最后向PuLP添加约束?在
我也遇到了类似的问题,我在目标函数中使用了一个包含超过10000个变量的表达式。根本原因与最初的海报锯是一样的。在一个
pulp.LpVariable
数组上使用sum
与{a1}相比真的很慢。基于Google小组在接受答案中的讨论,我可以让我的代码运行得更快。我知道这是一个老问题,但将包括一些抽象的代码为不耐烦。在最初的目标是:
其中}的另一个列表。在
xs
是pulp.LpVariable
的列表,k
是浮点常量,ys
是{更快的版本是:
^{pr2}$两个版本我都没有精确计时。为了了解时差,在运行慢版本时,我可以在互联网上搜索pulp为什么会这么慢,找到这个StackOverflow问题,阅读链接的讨论,并在表达式完成计算之前更新代码。第二个版本需要几秒钟。在
相关问题 更多 >
编程相关推荐