我正在尝试使用 PuLP,但它需要50秒添加 4000 个约束(包含 67 个变量)。解决问题只需要几分之一秒的时间。
我们希望使用 PuLP 轻松测试大量问题的多个求解器。
PuLP 应该花这么长时间吗?直接使用 PyGLPK 只需要几分之一秒的时间,包括设置和求解,所以我希望不会。我该如何提高 PuLP 中此步骤的效率?
Update
我的约束矩阵非常稀疏,通过仅包含非零系数,我能够将这个特定问题的设置时间减少到 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?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)