添加许多约束时,PuLP非常慢

发布于 2021-01-29 16:05:16

我正在尝试使用PuLP,但是添加4000个约束(带有67个变量)需要 50秒 。解决问题只需要几分之一秒。

我们希望使用PuLP轻松测试大量问题上的多个求解器。

应该花这么长时间的PuLP吗?直接使用PyGLPK只需几分之一秒,包括设置和求解,所以我希望不会。如何提高PuLP中此步骤的效率?


更新资料

我的约束矩阵非常稀疏,对于此特定问题,我仅通过包含非零系数就可以将建立时间减少到4到5秒。我仍然能够编写自己的.lp或.mps格式的文件,解决cbc或glpsol子进程的问题,并且比PuLP更有效地解析解决方案,这仅仅是因为我可以在输入PuLP时在几毫秒内写入输入文件需要几秒钟。我仍然不确定为什么会这样。

关注者
0
被浏览
155
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我的代表不足以发表评论。

    但是您是否看过这个:

    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?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看