MIP启发式算法:local branching
*本文主要是记录并分享最近学习到的知识,算不上原创
*参考文献见链接
本文主要是讲述local branching算法,主要以M. Fischetti的论文 “Local braching”和Pierre Hansen的论文“Variable neighborhood search and local branching”为参考文献。
https://link.springer.com/article/10.1007/s10107-003-0395-5
https://www.sciencedirect.com/science/article/pii/S0305054805000894
目录
引言
local branching 的过程
local braching 的伪代码
引言
local branching可以说的上集合了启发式算法和精确算法的特质,读者既可以从local search的角度去理解它,也可以从branch and bound的角度去认识它。
接下来,我会从local search的角度去认识local branching,也建议读者先用local search的思想去认识它。
local branching 以local search为核心框架,它的特色在于定义邻域结构的方式:借用variable fixing heuristic的思想,利用hamming distance概念构造不等式,从而确定了邻域。这些不等式可以被称为local branching cuts。local branching 的优点在于可以在求解早期就获得不错的解。
Hamming distance
首先,我们说一下hamming distance。
hamming distance是一种关于距离的定义。我们自然可以想到这种距离的定义不是唯一的,我们可以用其他的合适的距离公式来定义邻域结构。hamming distance用来判断两个字符串的差异(“距离”),指的是两个字符串中对应字符不相同的数目。
例如:
s1:1 0 1 0
s2:1 1 0 0
hamming distance为2。
所以说,如果当前解如s1, 我们将邻域结构定义为“hamming distance ≤1”,那么邻域就是{{0 0 1 0}, {1 1 1 0},{1 0 0 0}, {1 0 1 1}}。
对于0-1规划问题而言,由于变量只能取值0或1,所以用hamming distance来刻画两个解的“距离”,是很合适的,但是,对于一般的整数规划问题或者混合整数规划问题,用hamming distance来刻画两个解的“距离”,会有些不太贴切,做些调整是有必要的。所以,个人认为,利用hamming distance来构造不等式的local branching更适合于0-1规划问题,或者说大部分变量都是0-1变量的问题。
local branching 的过程
local braching 的特殊之处就在于定义邻域结构的方式,所以我们首先弄清楚local braching是如何定义邻域的。
定义邻域结构
basic local braching的过程
(1)生成初始解:生成初始解,比如通过Cplex求解获得初始解;
(2)定义邻域和候选解:将local braching cuts加到原问题中,调用Cplex求解新问题的最优解,求解后恢复成原问题(删掉刚加的local branching cuts);
(3)确定新解:如果Cplex求得的新问题的最优解优于当前解,就用最优解替代当前解,作为新解,并且将加入到原问题中,避免重复搜索;
(4)迭代:重复上述搜索过程,直到Cplex求得的新问题的最优解劣于当前解。此时,加入,调用Cplex求取最优解。
general local braching的过程
general local braching 相较于basic local braching,考虑到了:
(1)Time limit on left-branch nodes
(2)Diversification
general local braching的伪代码(local branching + Cplex)
参考文献
Fischetti, M. and Lodi, A., 2003. Local branching. Mathematical programming, 98(1-3), pp.23-47.
MIP启发式算法:local branching的更多相关文章
- MIP启发式算法:爬山算法 (Hill climbing)
本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 ...
- MIP启发式算法:遗传算法 (Genetic algorithm)
*本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 本文主要讲述启发式算法中的遗传算法.遗传算法也是以local search为核心框架,但在表现形式上和hill climbing, ta ...
- MIP启发式算法:Variable neighborhood search
*本文主要记录和分享学习到的知识,算不上原创. *参考文章见链接. 本文主要讲述启发式算法中的变邻域搜索(Variable neighborhood search).变邻域搜索的特色在于邻域结构的可变 ...
- MIP启发式算法:Variable fixing heuristic
*本文主要记录及分享学习到的知识,算不上原创 *参考文章见链接. 本文简单介绍一下Variable fixing heuristic,这个算法同样以local search为核心框架,它的特点在于定义 ...
- MIP启发式算法:Variable Neighborhood Decomposition Search
*本文记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文主要简述和VND VNS RINS很相关的vairable neighborhood decomposition search. 目 ...
- 如何从github下载项目的源代码,包含git客户端,直接下载,vs下载
有好多小伙伴可能刚刚接触github,还不知道如果和github下载项目,此处写个博客统一的声明.从多种方式下载源代码,加深对git的理解. 首先先解释下git的含义,git是一个源代码的管理工具,通 ...
- Developing
To work with the Android code, you will need to use both Git and Repo. In most situations, you can u ...
- Git 跟 GitHub 是什么关系?
Git 跟 GitHub 是什么关系? 大概就是「魔兽争霸」与「对战平台」的关系吧. git是一个版本控制工具github是一个用git做版本控制的项目托管平台. git是一个版本管理工具,githu ...
- Git学习笔记--配置(二)
由之前文章,总结得出Git的特点: 最优的存储能力: 非凡性能: 开源的: 管理成本低: 很容易做备份: 支持离线操作: 很容易定制工作流程: Git is a free and open sourc ...
随机推荐
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- ...
- @Autowired的使用--Spring规范解释,推荐对构造函数进行注释
一 在编写代码的时候,使用@Autowired注解是,发现IDE报的一个警告,如下: Spring Team recommends "Always use constructor based ...
- (转载)23种设计模式的uml图表示及通俗介绍
转载自: https://www.cnblogs.com/ningskyer/articles/3615312.html 0.分类 创建型模式 1.FACTORY2.BUILDER3.FACTORY ...
- js字符串与十六进制之间的转换
在寻找加密解密的时候看到一个方法,代码图片转换.原理为:字符可以转为16进制,与图片RGB的一个R/G/B相对应,即一个像素点可容纳3个字符(注:Canvas的RGBA,透明度A似乎不能使用,使用后, ...
- C# 初始学习心情
当听说需要转做.net的时候.内心是忐忑不安的.因为突然从前端转向后端,几乎完全颠倒了...一个注重界面实现功能.一个注重逻辑的开发,然并卵,服从需求吧. 虽说公司需要你转.但是时间是不允许的,所以只 ...
- 解决首次在eclipse中使用maven构建hadoop等项目时报Missing artifact sun.jdk:tools:jar:1.5.0的问题
问题原因: eclipse中的maven插件默认没有引用环境变量,所以找不到jdk的路径,也就找不到tool.jar. 解决办法: 步骤如下: 1.关闭eclips 2.在eclipse的解压目录中与 ...
- 假如m是奇数,且m>=3,证明m(m² -1)能被8整除
m是奇数,且m>=3 =>m可以用表达式2n-1,n>=2 =>m²-1 = (2n-1)²-1 =>m²-1 = 4n²-4n+1-1 =>m²-1 = 4n²- ...
- [会员登入] 透过 E-Mail进行身份认证、启用会员权利
[會員登入] 透過 E-Mail進行身份認證.啟用會員權利 这个问题是在论坛上看见的 其实,遇见问题的时候,我会建议初学者先想一下「流程」 您想怎么作?需要哪些步骤? 一旦「流程」清楚了 您是哪一步骤 ...
- Python XML 解析
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并 ...
- Bootstrap历练实例:带表格的面板
带表格的面板 为了在面板中创建一个无边框的表格,我们可以在面板中使用 class .table.假设有个 <div> 包含 .panel-body,我们可以向表格的顶部添加额外的边框用来分 ...