最近在项目中使用到scip求解器(公司没有商业版求解器),因为规模比较大,模型求解时间比较长,分析求解日志,发现求解器在初始可行解的寻找部分耗时较多,思考:如果我这边给求解器提供初始值,是否能加速求解器对模型的求解?基于此,就开始求解器求解优化。
解决问题过程:
(1)使用启发式对模型求解,得到可行解;
(2)将启发式得到的可行解,赋值给求解器中变量的初始值;

那么问题来了,gurobi中可以参考张一白等在运小筹的文章,已经写的很好了,可是现实很骨感,我这边是SCIP,没有值得参考的文章,甚至问过很多人,都说是行不通的,郁闷中就在论坛中找到Joao-Dionisio 这个老哥,他刚好做过这块,就给一个比较好的方式,今天就整理一下。
原问题:
先看看求解器自己寻找初始值的过程:
在小规模上测试中,求解器进行初始值寻找的过程就花费32s;
优化后的求解过程
将启发式得到的可行解作为求解器求解过程中的初始值,可以看到在开始求解时就已经得到一个比较好的可行解,自己认为这么做,可以大大提升求解器的求解速度。
如果上面两个对比没有疑问的话,就可以看怎么实现了:
SCIP版本需在4.0之上

md = Model("schedule")
mcp = md.createPartialSol()
md.setSolVal(mcp,x,values)
md.addSol(mcp)
md.optimize()

代码是什么意思就不过多解释,如果有疑问,可以分享一下我最近正在学习的SCIP的doc.
希望对使用scip求解器的各位有帮助!

如需使用,希望标明出处!

SCIP求解器给模型变量赋初值相关推荐

  1. Python 调用 SCIP 求解器的选址模型代码示例

    本文介绍 Python 语言调用 SCIP 求解器,求解选址模型的代码示例. 安装 SCIP 和 PySCIPOpt 安装 SCIP 求解器的教程: SCIP | 数学规划求解器SCIP超详细的使用教 ...

  2. 在C++中使用SCIP求解器

    SCIP求解器本身就是用C/C++开发的,对于C/C++提供了灵活的调用接口.即使是在python中调用,也是通过cython等语言实现了这些接口的封装,使其更符合python语言特点.比如pysci ...

  3. vb 如何给静态变量赋初值

    vb中不能在变量声明时赋默认值以外的初值,想要给静态变量赋初值,必须增加一个标志变量,如: Sub ss()Static i As Integer, f As BooleanIf Not f Then ...

  4. vhdl变量赋初值_变量类型、构造器、封装以及 LeetCode 每日一题

    1.成员变量和局部变量 1.1成员变量和局部变量定义 成员变量指的是类里面定义的变量(field),局部变量指的是在方法里定义的变量. 成员变量无须显示初始化,系统会自动在准备阶段或创建该类的实例时进 ...

  5. Verilog给reg型变量赋初值

    在使用Verilog进行开发时,有的reg型变量需要赋初值.经过尝试,有三种方法可以实现给reg变量赋初值.(测试使用的是EP4CE6E22C8开发板,测试时使用串口将变量值发给上位机.) 1.在定义 ...

  6. python整形变量赋初值_为了给整型变量x、y、z赋初值10,下面 Python赋值语句正确的是_学小易找答案...

    [单选题]Python语言属于( ). [填空题]在Python中,设有s='a,b,c'.s2=('x','y','z')以及s3=':',则s. rpartition(',')的结果分别 [填空题 ...

  7. vhdl变量赋初值_1.6 C++变量

    点击上方"C语言入门到精通",选择置顶 第一时间关注程序猿身边的故事 作者 闫小林 白天搬砖,晚上做梦.我有故事,你有酒么? C++变量 在程序运行期间可以改变的量称为变量,变量在 ...

  8. vhdl变量赋初值_5.5 C++自动变量

    点击上方"C语言入门到精通",选择置顶 第一时间关注程序猿身边的故事 作者 闫小林 白天搬砖,晚上做梦.我有故事,你有酒么? C++自动变量 C++中自动变量用关键字auto作存储 ...

  9. Fluent求解器——空化模型

    一.空化 当液体经过部分阀件时,液体的压力可能会降低到饱和蒸气压以下,随着压力减小,液体发生汽化的过程即为空化.空化过程中,液体中的微小汽泡以及未溶解的气体或气核会进一步发展并形成空穴,与此同时,在低 ...

最新文章

  1. 现阶段的微信小程序能实现直播功能么?
  2. Python 学习笔记 - Memcached
  3. TCP/IP 笔记 - TCP连接管理
  4. 实现EventHandler的监测
  5. 团队作业8----第二次项目冲刺(beta阶段)5.25
  6. linux-shell命令之date【显示/设置系统日期/时间】
  7. OutOfMemoryException异常解析
  8. 用java编写生产者消费者问题_用java代码实现生产者和消费者的问题
  9. 订单管理系统(含源码)
  10. tomcat、netty以及nodejs的helloworld性能对比
  11. Windows Server 2012 配置 Remote Desktop Service VDI
  12. 基于Bootstrap的响应式网页
  13. 灵性图书馆:好书推荐-《在荷欧波诺波诺中遇见真正的自己》
  14. channel的用法
  15. Multisim3.8应用实例
  16. C语言--逗号运算符及逗号表达式
  17. python中assert是什么意思_python assert函数是什么以及如何使用?
  18. 【干货】生成对抗网络GANs算法在医学图像领域应用总结
  19. 51单片机-4-数码管的显示
  20. 华为的测试机是什么手机软件,iPhone手机的测距仪你用过吗?华为手机可有类似软件?...

热门文章

  1. 【R】【课程笔记】08 金融投资组合决策分析
  2. 用Cisco工具完成简单的企业网组建(部分)
  3. 祥云杯misc writeup
  4. Linux卸载VMware虚拟机命令
  5. 计算机有符号数加法,有符号数的表示法、加减法、补码
  6. 百度空间如何才能另存为 mht
  7. 学python软件开发要多久_python软件开发好学吗
  8. QSettings用法理解
  9. CVPR2020超分辨率重建论文阅读笔记
  10. UML建模之正式用例描述规范