如何选择整数线性编程求解器?

时间:2010-05-07 20:42:53

标签: c++ algorithm graph-algorithm genetic-algorithm linear-programming

我是整数线性编程的新手。 我计划使用整数线性编程求解器来解决我的组合优化问题。 我更熟悉IDE上的C ++ /面向对象编程。 现在我使用NetBeans和Cygwin一起编写我的应用程序。

请问是否有一个易于使用的ILP求解器? 或者这取决于我想解决的问题?我正在尝试做一些资源映射优化。如果需要任何进一步的信息,请告诉我。

非常感谢,Cassie。

5 个答案:

答案 0 :(得分:8)

如果你想要的是线性混合整数编程,那么我会指向Coin-OR(特别是模块CBC)。这是免费软件(作为演讲) 您可以将它与特定语言一起使用,也可以使用C ++。

如果您的数据需要大量预处理,或者您想要将手放入求解器(选择轴心点,列生成,添加切割等等),请使用C ++。

如果您想将求解器用作黑盒子,请使用集成语言(您只对结果感兴趣,问题很简单或经典,无需调整即可解决)。

但是在标签中你提到了遗传算法和图算法。也许你应该从更好地解决你的问题开始...... 对于图表,我喜欢很多Boost :: Graph

答案 1 :(得分:8)

我曾多次使用lp_solve(http://lpsolve.sourceforge.net/5.5/)并取得了成功。它是成熟的,功能丰富,如果您的线性编程技能生疏,则会有很多好的建议。整数线性编程不仅仅是一个附加功能,而是强调这个包。

注意到你说你是个“新手”。那么,我强烈推荐这个包,因为文档中充满了示例和温和的教程。我尝试过的其他软件包往往会占用很多用户。

答案 2 :(得分:4)

对于大问题,您可以查看AMPL,这是一个有许多backend solvers可用的优化解释器。它以a separate process运行; C ++将用于写出输入数据。

然后你可以尝试各种最先进的解算器。

答案 3 :(得分:2)

查看GLPK。附带一些示例,并与AMPL的子集一起使用,尽管当您坚持使用C / C ++进行模型设置时,IMHO的效果最佳。应对相当大的模特。

答案 4 :(得分:1)

来自维基百科的

Linear Programming涵盖了一些不同的算法,您可以进行一些挖掘,以了解哪种算法最适合您。这有帮助还是你想要更具体的东西?

相关问题