【发布时间】:2019-05-21 12:01:47
【问题描述】:
我正在尝试解决具有超过 45.000 个二进制变量和约 350.000 个约束的大规模线性整数优化问题 (MILP)。
我正在使用Pulp 解决问题,但我无法在合理的时间内找到解决方案。
有什么方法可以大幅加快优化过程?例如:
- 能否以某种方式并行化 Pulp?
- 还有其他可用的软件包/求解器吗?
- 还有其他建议吗?
【问题讨论】:
-
哇!您是否碰巧有任何代码或具体的 i/o 示例来说明这种情况?也许有关您的特定用例的一些细节可以帮助您了解一般不会提及的优化机会。
-
可以缓存结果吗?看看 lru.cache 装饰器。
-
首先确保求解器是瓶颈,而不是 Pulp 本身。您没有说您使用的是什么求解器,但有可用的高性能并行 MIP 求解器(例如 Cplex 和 Gurobi)。纸浆本身是连续的。 @KevinS:我不知道这里可以在哪里使用缓存。
-
正如 Erwin 所说,分析您的代码以检查它是将模型传递给求解器还是求解器本身消耗了时间。我怀疑是后者,在这种情况下,最简单的方法是求助于商业求解器。如果这是不可能的,您也许可以通过重新表述、巧妙的分支、切割平面等方式利用问题结构,但如果没有表述,就很难说更多。
-
投票结束,因为 OP 没有根据 cmets 中的问题澄清问题。
标签: python optimization linear-programming pulp