如何选择合适的运筹优化求解器?

前言

求解器对于运筹算法工程师而言,常常像一个黑盒,我们扔进去输入数据和数学模型,求解器给我们吐出一个解出来。这种状态在面临规模小、形式简单的数学模型是还可以应付的,但一旦问题难度上来,原本用着舒服的求解器可能求解你的问题太慢了,又或者根本无法给到符合预期的解,这时就会面临到底选择哪个求解器更合适的问题?
在这里插入图片描述

这里的合适代表既准又快,需要综合考虑:

  1. 自己的问题类型是什么?线性规划?整数规划?二次规划?这里可以参考我的文章运筹学算法分类快速判断;
  2. 不同求解器适用的问题类型;
  3. 开源还是商用?

2和3都会在接下来的梳理中体现。

求解器对比

求解器 国家 类型 支持的数学问题 优点 缺点 Python API
Gurobi美国商用 擅长:LP、MIP、凸和非凸的二次混合整数规划;
支持:(1) 线性约束和目标模型(连续变量、混合整数);(2)二阶锥模型(连续变量、混合整数);(3)二次凸约束和目标模型(连续变量、混合整数);(4)二次非凸(双线性、二次等式约束)约束和目标模型(连续变量、混合整数);(5)非线性模型(除式、高阶多项式、指数、对数、三角函数、范数等)(连续变量、混合整数)
可以叠加许多功能:(1)约束和目标中带有最大、最小、绝对值等数学函数,或者带有AND、OR、INDICATOR逻辑条件的模型;(2)多目标优化;(3)需要获得部分或者全部可行解或者最优解的模型;(4)不可行或者无解分析;(5)优化参数自动调优功能;(6)分布式计算或者多线程计算支持
Cplex美国商用LP、QP、QCQP、二阶锥规划(SOCP)、MIP支持
Xpress美国商用LP、MILP、QP、QCQP、SOCP、NLP、CP支持
COPT中国商用LP、MIP、二阶锥规划、半定规划、凸二次(约束)规划支持
SCIP德国开源MIP、MINLP、非凸优化问题用于MIP的最快的非商业求解器之一、支持Branch&Price、支持 McCormick relaxation 和 convex envelope relaxation 这两种非凸问题处理方法支持
OR-TOOLs美国开源LP、IP、约束规划、MIP跨平台性不支持非线性规划支持
IPOPT美国开源非线性规划问题(凸和非凸均可)对初始值敏感(影响算法收敛和迭代次数)、对于非凸问题可能陷入局部最优支持
GLPK美国开源大规模线性规划、MIP不支持非线性规划支持
CBC美国开源LP、MIP不支持非线性问题支持

梳理的过程中发现了一个wikipedia提供的表格:
在这里插入图片描述

问题延伸:商用求解器和开源求解器的差别是什么?

不同求解器底层的差异是它们是否能够正确的识别并利用模型的结构,而这直接决定了求解器的表现(求解速度、支持准确求解的问题类型、支持的问题规模、解的质量)。有些问题开源求解器无法支持,只有一些商业求解器才能求解,还有的问题,商业求解器的求解速度更佳。
在这里插入图片描述

导致这一差距的原因也很好理解——“Commercial vendors with their teams of full-time developers and their large customer base who provide models from a diverse set of applications are just in a much better position to develop, implement, and tune algorithms to cover all these different aspects and structures that appear in real-world models.”

求解器PK

目前主要是参考 H. Mittelmann 教授的评测网站,会从很多维度对各个求解器进行测试,最终从解决的问题数和耗时两个方面评分。
比如对于MIP问题,最新的测评结果是:

在这里插入图片描述

在这里插入图片描述

总结

回到我们文章标题的问题,拿到实际问题后怎么选择合适的求解器呢,我总结了3个步骤:
(1)判断数学问题类型,看看手头已有的求解器是否就能支持(判断方法可以查阅上面的表格);
啰嗦一句:排除不支持你这类问题的求解器,为什么单独强调这么一句呢?举个例子,你建模的问题是个整数规划问题,而IPOPT主要是用于求解非线性规划的,就不太适用于你这个问题。那问题来了,我就是把这个整数规划问题丢给IPOPT求解会怎么样呢?我亲自踩过这样的坑Pyomo调用IPOPT:0-1变量给出小数解,血泪教训!

(2)快速实验,找一个支持的求解器在小规模case上测试下;
如果你的问题规模本身就很小,而且在这一步的求解质量和速度都已经满足要求了,那么恭喜你,不用再继续往下看了!多测试一些case保证模型的鲁棒性即可。

(3)遇到性能瓶颈时怎么办?
如果你不幸的发现,小规模测试OK,但测试案例规模放大,模型求解很久仍然没有给到解,无法支持上线实时计算的规模和时间要求(和现在的我一样),那么就进入下一步的打怪中。

- 约束加紧,缩小可行域;
需要一定业务输入(例如top10可行缩减为top5)+建模技巧(同样能表达某一个业务逻辑的约束,不同写法的松紧可能不一样),较难;

- 对比不同求解器的速度,挑一个表现最佳的;
experience + experiment,某清华大佬教我的。。。。

- 模型内部参数调整:time limit 、gap limit等。
如果业务对于解的质量要求没有高到一定要是最优解,那么稍微放松一下gap limit是个节约搜索时间的好方法。此外,对于一些实时求解的运筹模型,要求在一定时间内要能输出方案,实时下发下去,那么有必要设置一个time limit兜底,但离线应该测试清楚,解的质量会折损多少(不要只盯着gap,也要注意业务同学能够听得懂的业务指标,比如目标函数里的cost等等)。

参考资料

  1. Evaluating Operational Research Solvers
  2. 整数规划求解器介绍
  3. The advantages of commercial solvers
  4. What does CPLEX solve ?
  5. Python运筹学求解器
  6. 市面上的数学规划求解器有哪些?
  7. COIN-OR
  8. H. Mittelmann 教授的评测网站
  9. Visualizations of Mittelmann benchmarks
  10. List of all SCIP parameters
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Excel的非线性规划求解插件是一种可以在Excel软件中使用的工具,用于解决非线性优化问题。非线性优化问题是一类存在非线性约束条件的最优化问题,它在很多实际应用中都具有重要的意义。 这个插件可以通过设置目标函数和约束条件,帮助用户在Excel中求解非线性优化问题。用户只需要将问题的数学模型输入到Excel表格中,然后使用插件提供的函数和工具进行求解。 插件提供了一系列的求解算法,可以根据实际情况选择合适算法。例如,可以选择梯度下降、共轭梯度、拟牛顿法等算法求解问题。插件还提供了一些常用的优化技巧和调整参数的选项,帮助用户在求解过程中得到更好的结果。 使用Excel的非线性规划求解插件,可以方便快捷地求解各种复杂的非线性优化问题。无论是在科研领域、工程设计中,还是在生产调度、资源分配等实际问题中,都可以通过这个插件来实现问题的求解和优化。 总之,Excel的非线性规划求解插件是一种非常实用的工具,它可以帮助用户解决各种非线性优化问题,提高问题求解的效率和准确性。 ### 回答2: Excel中的非线性规划求解插件是Excel软件中的一个功能扩展,用于解决非线性规划问题。非线性规划是一类含有非线性约束条件和非线性目标函数的数学优化问题。 这个插件使用了先进的数学求解算法,可以帮助用户在Excel中快速地进行非线性规划问题的求解。用户只需在Excel中定义问题的目标函数和约束条件,插件就会通过迭代计算寻找最优解。 使用Excel的非线性规划求解插件,用户可以方便地进行参数调整和模型分析,以探索不同的决策方案。插件提供了多种求解算法和选项,可以根据问题的特点选择合适算法进行求解。 插件还提供了丰富的求解结果分析工具,包括目标函数值、约束条件满足程度、变量取值等信息的展示。用户可以通过这些结果进行决策和优化。 Excel的非线性规划求解插件极大地简化了非线性规划问题的求解过程,使得非专业的用户也能够轻松地进行数学优化。它可以广泛应用于商业决策、运筹学、工程优化等领域,帮助用户更好地进行决策和问题解决。 ### 回答3: Excel的非线性规划求解插件是一种功能强大的工具,可以帮助用户在Excel软件中解决非线性规划问题。 非线性规划是一类优化问题,其目标函数或约束条件中存在非线性项。传统的线性规划求解方法无法处理这些问题,而非线性规划求解插件则提供了一种有效的解决方案。 这种插件通常包含了各种求解算法,如梯度下降法、牛顿法、拟牛顿法等,可以根据用户的具体需求和问题特点选择合适算法进行求解。用户只需在Excel中输入目标函数和约束条件,设置变量范围等参数,插件就可以自动计算出最优解和相应的变量取值。 通过Excel的非线性规划求解插件,用户可以方便地进行优化问题的建模和求解,无需编写复杂的数学模型和算法代码。同时,插件还提供了丰富的可视化和分析工具,用户可以查看求解过程和结果,进行灵活的后续分析和决策。 总之,Excel的非线性规划求解插件为用户提供了一种简便、高效的解决非线性规划问题的方法,使用户能够在Excel软件中轻松完成复杂的优化任务。它不仅提高了工作效率,而且降低了使用者的技术门槛,使更多的用户能够受益于非线性规划的优化技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值