解决混合整数规划问题的最快软件(开源)是什么

计算科学 优化 软件 线性规划 混合整数规划
2021-12-13 22:07:02

我有一个混合整数规划问题。我目前正在使用 GLPK 作为我的求解器。但是我发现 GLPK 对线性规划问题很好,但是对于混合整数规划,它需要更长的时间,因此不符合我们的要求。我正在寻找其他软件。有没有其他好的开源工具可以快速解决混合整数规划问题?谢谢!

4个回答

如果你想要一些开源的东西,你可能想试试 COIN 的 CBC 代码(他们还有几个其他的 MILP 求解器,比如分支和价格框架,或 SYMPHONY)。

Gurobi 和 CPLEX 将快得多,并且在 2011 年或 2012 年的 INFORMS 会议上,Gurobi 比 CPLEX 更快(尽管性能指标当然取决于问题)。在我论文中解决的 MILP 中,Gurobi 比 CBC 快大约 15-100 倍,CPLEX 几乎与 Gurobi 一样快,但速度稍慢(比如快 12-80 倍)。

尽管最坏情况下的性能确实是指数级的,但执行时间将在很大程度上取决于问题结构。除非你利用特殊的结构(也许它是一个可以分解成许多小得多的问题的随机程序),否则你不太可能解决具有数百万个变量的 MILP,但是完全有可能解决具有数千个变量的非平凡 MILP不到一分钟的变化。(当然,这些问题也有可能需要一个小时或更长时间才能解决。)

正如 Brian Borchers 所指出的,CPLEX 和 Gurobi 都为一些研究人员提供免费许可证,这两个软件包中的一个确实是最适合用作通用 MILP 求解器的。

混合整数线性规划问题比线性规划问题更难解决。就计算复杂度而言,LP 可以在多项式时间内求解,而求解 MILP 是一个 NP-Hard 问题。用于求解 MILP 的已知算法具有指数最坏情况复杂性。

您可以查看其他用于混合整数线性规划的软件包,包括 SCIP(免费供学术使用)、CPLEX(商业,但具有学术许可选项)和 GUROBI(也具有学术许可选项的商业。)一个或多个这些软件包中的一个在您的问题上可能比 GLPK 快得多,但不要指望它们中的任何一个在解决 MILP 方面几乎与解决类似大小的 LP 一样快。

如果你想尝试一堆不同的求解器,试试 Julia 的JuMP 建模框架它使您可以将模型编写为 JuMP 模型,然后用一行代码切换求解器。例如,对于 MILP 问题,您可以从 Bonmin、Cbc、Couenne、CPLEX、GLPK、Gurobi 和 MOSEK 求解器中进行选择。正因为如此,如果你用 JuMP 编写它,你可以尝试 Geoff 提到的所有求解器,看看哪些是有效的,而无需编写一堆代码。您自己的个人测试将是最好的知识来源,以了解最快的算法适用于您的问题。

根据其他人的建议,我在许多项目中都使用了(商业) GAMS这是非常直截了当的;你所要做的就是把你的问题的数学公式化。它获取变量、约束、目标函数和所有输入数据。然后,它为任何情况提供了一系列求解器(优化器)。根据您的情况,您可以添加更复杂的求解器。

当然,EASY 值得一看。开源框架。

“快”这个词很模糊!你需要更加详细; 迭代次数快吗?评价次数?经过时间?这些的组合?

但是,如果您不是在寻找软件,而只是想解决问题,我建议您使用全局优化器 NSGA-II,它是一个具有很高声誉和性能的开源优化器。

如果您提供更多信息,我可以准确指导。