添加许多约束时,PuLP非常慢
我正在尝试使用PuLP,但是添加4000个约束(带有67个变量)需要 50秒 。解决问题只需要几分之一秒。
我们希望使用PuLP轻松测试大量问题上的多个求解器。
应该花这么长时间的PuLP吗?直接使用PyGLPK只需几分之一秒,包括设置和求解,所以我希望不会。如何提高PuLP中此步骤的效率?
更新资料
我的约束矩阵非常稀疏,对于此特定问题,我仅通过包含非零系数就可以将建立时间减少到4到5秒。我仍然能够编写自己的.lp或.mps格式的文件,解决cbc或glpsol子进程的问题,并且比PuLP更有效地解析解决方案,这仅仅是因为我可以在输入PuLP时在几毫秒内写入输入文件需要几秒钟。我仍然不确定为什么会这样。
-
我的代表不足以发表评论。
但是您是否看过这个:
https://groups.google.com/forum/#!topic/pulp-or-
discuss/p1N2fkVtYyM提出问题:
"The problem is solved in less than 0.5 second. However setting it up with PULP takes more than 10 seconds. "
这似乎也是您报告的内容。解决方案是不使用+ =或sum(…)运算符,而是按照链接中的说明进行操作:
yeah using the += operator with pulp is really slow, as is using sum() instead of lpSum()
因此,也许您一次将约束1添加到PuLP,而不是先构建约束列表,然后最后将约束添加到PuLP?