快速(可能是近似的)线性编程库

时间:2013-11-07 18:40:01

标签: shared-libraries linear-programming glpk

我需要解决稀疏线性编程问题,我正在寻找一个同样的库。

主要要求:
最重要的要求是它应该非常快。如果速度更快,则可以接受随机近似解。

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 内存不足以解决上述问题。

有人能建议一些高效的图书馆吗?请建议免费和商用的,可用于完全或近似地解决问题。

1 个答案:

答案 0 :(得分:2)

关于其他求解器选项,如果您尚未检查出来,请参阅以下两个SO问题:

  1. SO Question on which solvers to use

  2. Java Solver Options

  3. 但我发帖的原因是我还有其他一些建议,而不是寻求求解速度。 (问题可能适用于Q~15K,但如果Q变大,你将不得不寻找更快的求解器。)

    其他尝试

    的建议
    1. 您是否在MATLAB或GLPK中使用过解算器options?你可以尝试很多事情:设置iteration limitTimelimit(到10000毫秒)。

    2. 查看分解和放松您的配方。通常情况下,在这些大型LP中有一个很好的底层结构,但是一些密集的约束会破坏运动,而那些会给解算器带来麻烦。如果你能识别出那些,你可以放松它们,甚至可以用乘数把它扔进目标函数。

      为了使其更加具体,你可以考虑 Lagranian relaxations 来解决“麻烦的限制”。 (作为我所指的see how problem 12.3 becomes 12.4 here的一个参考 放松之后。您可以针对问题中的密集几个约束执行相同的操作。

    3. 希望这有助于你前进。