MILP加速运算技巧(四)——提示模型的初始值(以OR-Tools为例)


前言

有些时候,迭代优化一个模型的效率较高,但生成初始解的时候需要经过相对长的时间,如果我们能得到一个比较好的初始解,或者能知道部分变量的初始值,那么对一些复杂问题而言,能够进行加速。

本文以OR-Tools为例,介绍传入初始解对模型求解速度的影响。特别地,对于在原有模型的基础上添加约束的情况,尽管OR-Tools的CP-SAT无法在Callback当中添加约束来加速求解(对底层SAT算法而言,这种判断后添加约束的方式并不能更好),但CP-SAT在下一次求解时,能够固定前面模型得到的结果,对于CP-SAT求解器而言,能够在很大程度提升效率。

基于OR-Tools的代码案例

这里我们以一个简单地案例做演示,对于更大规模和更加复杂的模型而言,我们测试的结果是:这种传入初始值(解)的方法能极大提升效率,特别是对于可行解较多,但最优性收敛得慢的问题(典型的一个就是FJSP问题)。

1. 无初始解的双目标问题

以下是一个简单的线性(不连续)问题,目标是最小化 cost1=a+c-d。求解输出 cost1 的最优解为 -2000。

from ortools.sat
  • 50
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lins号丹

小小鼓励,满满动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值