Answers:
如果您想要开放源代码,则可能要尝试使用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求解器的最佳选择。
如果您想尝试一堆不同的求解器,请尝试使用Julia的JuMP建模框架。它使您可以将模型编写为JuMP模型,然后用一行代码切换出求解器。例如,对于MILP问题,可以从Bonmin,Cbc,Couenne,CPLEX,GLPK,Gurobi和MOSEK解算器中选择。因此,如果您使用JuMP编写代码,则可以尝试Geoff提到的所有求解器,而无需编写大量代码即可查看有效的解决方案。最快的算法可以解决您的问题,您自己的个人测试将是最佳的知识来源。
@code_llvm
来检查生成的汇编代码,以查看粘合代码本质上是什么(这也是因为Julia天真地使用了函数指针和与C / Fortran相同的位数组)。
遵循其他人的建议,我 在许多项目中使用了(商业) GAMS。这是很直接的。您所要做的就是对问题进行数学表述。它拾取变量,约束,目标函数和所有输入数据。然后,它为各种情况提供了一系列求解器(优化器)。根据您的情况,您可以添加更复杂的求解器。
当然,EASY 值得一看。开源框架。
“快速”一词非常含糊!你需要更加详细; 迭代次数快吗?多少次评价?经过的时间?这些结合吗?
但是,如果您不是要寻找软件,而只是想解决问题,我建议您使用全局优化器NSGA-II,它是具有很高声誉和性能的开源优化器。
如果您提供了更多信息,我将为您提供准确的指导。