限制MILP求解器计算速度的因素?

时间:2014-09-08 00:52:53

标签: matlab mathematical-optimization linear-programming

我是混合整数线性规划的新手,我希望有人能为我澄清一个性能问题。基本上我用大约34个决策变量进行计算,我的计算时间大约是5秒。我想理想地将计算时间缩短到低于1秒的范围。

目前我正在使用CBC解算器& MATLAB,但据我所知,这是一个单线程求解器。我见过的大多数MILP求解器似乎都为1k +变量的大型项目性能感到自豪,并将计算时间从几天缩短到几小时,但只有少数昂贵的甚至是多线程的。处理器速度似乎只会出现这样的问题,因此必须在软件方面做一些事情。

在某种情况下,我有哪些因素在计算时间中发挥作用?从理论上讲,像Gurobi这样的解决方案是否能够在这样一个小问题上加速并在CBC上产生明显的差异?

2 个答案:

答案 0 :(得分:0)

在解决MIP问题时,与其他应用程序相比,多线程通常无法提供太多帮助。更复杂的解决方案比CBC更好的做法是预先解决。很可能会发生,所有决策变量都可以在根节点中消除/修复。通常,不可能基于其大小来预测MIP的解决时间。解决过程太复杂了。 回答你的问题:我认为你在尝试另一个求解器时会看到显着的加速(Gurobi,Xpress,CPLEX,SCIP等)。但是不能保证,你也可能会看到减速。

答案 1 :(得分:0)

大多数商业MILP求解器可能只考虑1000个变量的大多数问题。解决数十万或数百万个变量的问题是很常见的。但请注意,还有一些非常小的问题被认为非常困难或仍然存在,因为没有人将其解决为经过验证的最佳解决方案。基本上,解决这些问题所需的时间非常依赖于问题。

如果您想了解其他求解程序解决问题的速度有多快,请尝试将其作为例如在http://www.neos-server.org/neos/

的NEOS求解器服务的MPS文件