我需要解决稀疏线性编程问题,我正在寻找一个同样的库。
主要要求:
最重要的要求是它应该非常快。如果速度更快,则可以接受随机近似解。
LP规范:
问题的大小是2个参数的函数:P和Q,P <&lt;&lt; Q大多数时候。
变量数量~P + Q
约束数量~2Q
约束矩阵是稀疏的 - 它只有O(Q)非零条目。
已尝试解决方案
1)MATLAB:MATLAB的 linprog 功能在我们的设置中并不是特别有用,因为解决LP需要很长时间。
2)GLPK: glpk_simplex 也没有预期的那么快 - 对于P = 15,Q = 15,000的问题,我需要在最多10秒内得到答案,但是 glpk_simplex < / em>需要20-25分钟。 glpk_interior 内存不足以解决上述问题。
有人能建议一些高效的图书馆吗?请建议免费和商用的,可用于完全或近似地解决问题。
答案 0 :(得分:2)
关于其他求解器选项,如果您尚未检查出来,请参阅以下两个SO问题:
但我发帖的原因是我还有其他一些建议,而不是寻求求解速度。 (问题可能适用于Q~15K,但如果Q变大,你将不得不寻找更快的求解器。)
您是否在MATLAB或GLPK中使用过解算器options
?你可以尝试很多事情:设置iteration limit
或Timelimit
(到10000毫秒)。
查看分解和放松您的配方。通常情况下,在这些大型LP中有一个很好的底层结构,但是一些密集的约束会破坏运动,而那些会给解算器带来麻烦。如果你能识别出那些,你可以放松它们,甚至可以用乘数把它扔进目标函数。
为了使其更加具体,你可以考虑 Lagranian relaxations 来解决“麻烦的限制”。 (作为我所指的see how problem 12.3 becomes 12.4 here的一个参考 放松之后。您可以针对问题中的密集几个约束执行相同的操作。
希望这有助于你前进。