GUROBI之数学启发式算法Matheuristics

参考运小筹的帖子:优化求解器 | Gurobi 数学启发式算法:参数类型与案例实现 - 知乎 (zhihu.com)

      简言之,数学启发式是算法就是数学规划和启发式算法的融合,与元启发式算法相比,数学启发式算法具有更强的理论性。

       在GUROBI求解器中,整体算法框架依然是数学规划算法,只是在其中的某些环节采用了启发式算法以更快获得可行解来加速算法收敛。

GUROBI求解MIP问题默认的框架是branch and cut,但是在 branch and cut tree 的探索中,在每个节点处,会调用30多种启发式算法,用于快速获得高质量的整数可行解,进而加速上界(min 问题)的更新Gap的收敛。此外,每个节点上也会调用二十多种 cutting plane 算法来生成割平面,收紧模型,逼近该节点的可行域的凸包,收紧下界。

以一个MIP问题的求解日志来说明GUROBI中的数学启发式算法:使用默认的求解方式,得到的求解日志如下:

presolve:代表在正式求解前对模型进行预处理,对模型进行简化

Incument:当前找到的最好的可行解

H 标注的代表使用启发式算法找到了新的可行整数解:红色框的一栏表示使用启发式算法找到了初始可行解462.2,此时算法找到的下界是357.53333,因此此时的gap为22.5%,求解历时1秒

* 标注的代表使用经典割平面法且找到了新的可行整数解

可见,GUROBI默认的求解过程中多次使用了数学启发式算法。

通过设置求解参数,我们也可以改变GUROBI求解过程中的一些细节:

model = read("VRPTW_r102_20_5.mps")
model.optimize()   #  不设置参数,默认方式求解model = read("VRPTW_r102_20_5.mps")
model.setParam("MIPFocus", 1)   #  设置MIPFocus参数,具体含义见原帖
model.optimize()model = read("VRPTW_r102_20_5.mps")
model.setParam("Heuristics", 0)  # 设置Heuristics参数
model.optimize()model = read("VRPTW_r102_20_5.mps")
model.setParam("ZeroObjNodes",100)
model.optimize()model = read("VRPTW_r102_20_5.mps")
model.setParam("PumpPasses",1000)
model.optimize()model = read("VRPTW_r102_20_5.mps")
model.setParam("RINS",1000)
model.optimize()

总结:个人感觉针对不同的问题可能适合不同的参数设置,但更多的可能依靠的是经验值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536519.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写超级好用的rabbitmq-spring-boot-start启动器

手写超级好用的rabbitmq-spring-boot-start启动器 文章目录 1.前言2.工程目录结构3.主要实现原理3.1spring.factories配置3.2EnableZlfRabbitMq配置3.3RabbitAutoConfiguration配置3.4ZlfRabbitMqRegistrar配置 4.总结 1.前言 由于springBoot官方提供的默认的rabbitMq自动装配不…

计算机网络-第6章 应用层(2)

6.5 电子邮件 电子邮件,把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中。最重要的两个标准:简单邮件传送协议SMTP,互联网文本报文格式。 SMTP只能传7位ASCII码邮件,93年提出互联网邮件扩充MIME。邮件…

【关注】国内外经典大模型(ChatGPT、LLaMA、Gemini、DALL·E、Midjourney、文心一言、千问等

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

【unity资源加载与优化章】Profiler优化工具详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

三星泄露微软 Copilot 新功能:用自然语言操控各种功能

3 月 11 日消息,微软计划本月晚些时候发布新款 Surface 电脑和适用于 Windows 11 的 Copilot 新功能,但三星似乎等不及了,在其即将推出的 Galaxy Book4 系列产品宣传材料中泄露了一些即将到来的 Copilot 功能。 三星官网上发布的图片证实了此…

ubuntu20.04上获取Livox Avia雷达点云数据

若拿到手的Livox Avia激光雷达不知道它的ip信息,可以在官网上LiDAR Sensors - Livox下载上位机软件Livox Viewer,查看IP,下载window版本就可以。雷达通过网线连上电脑后,该软件就可以自动识别出来。按照下图步骤,就可以…

学习vue3第五节(reactive 及其相关)

1、定义 reactive() 创建一个响应式代理对象,不同于ref()可以创建任意类型的数据,而reactive()只能是对象,会响应式的深层次解包任何属性,将其标注为响应式 响应式是基于ES6的proxy实现的代理对象,该proxy对象与原对象…

数据结构——二叉树的层序遍历

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

vim相关命令

vim 三种工作模式:命令模式、文本模式、末行模式 命令模式:通过vi hello.c 命令进入i a o 、I A O、 s S 可以切换到文本模式 ,写完后保存退出 o光标 回到下一行O光标回到上一行s删除当前字母S删除一整行A回到该行末尾处a光标回到下一个输入…

使用html+css制作一个发光立方体特效

使用htmlcss制作一个发光立方体特效 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Documen…

AI日报:一个新的“科技超级周期”正在出现

文章目录 技术周期预测可连接设备 技术周期 未来学家艾米韦伯表示&#xff0c;人工智能和其他两种通用技术将迎来一个新的“技术超级周期”&#xff0c;预计将在经济中创造“实质性和持续性”的变化。 她在SXSW 2024上表示&#xff0c;过去的科技超级周期是由通用技术引发的&…

LNMP架构之web服务器实战

LNMP架构 1.nginx部署 systemctl disable --now keepalived.service 关闭keepalived服务&#xff0c;避免冲突 将下载好的nginx软件压缩包直接拖入mobaxterm目录即可 tar zxf nginx-1.23.3.tar.gz cd nginx-1.23.3/ yum install -y gcc pcre-devel openssl-devel #安装依…