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 ...
随机推荐
- .net 中 Json 与List 相互转
var duanxin1 = new DuanXin(); duanxin1.RECEIVE_LOGIN_NAME = "dd"; duanxin1.RECEIVE_Number ...
- c#基础3-方法的重载静态和非静态,字段属性,方法
方法的重载概念:方法的重载指的就是方法的名称相同给,但是参数不同.参数不同,分为两种情况1).如果参数的个数相同,那么参数的类型就不能相同.2).如果参数的类型相同,那么参数的个数就不能相同.***方 ...
- 发现了一个entity framework的BUG
小弟学浅才疏可能是小题大做,但遇上了并且让我麻烦了一阵,就值得记下来 BUG的过程就是我在建立实体模型的时候 命名了一个叫system的实体模型 导致了所有生成类中 引用using system失败
- jeecg308自定义使用getDataGridReturn方法分页失效问题
DataGrid dataGrid = new DataGrid(); dataGrid.setPage(p); dataGrid.setRows(r); dataGrid.setOrder(&quo ...
- Myeclipse发布第一个jsp页面及web project部署到tomcat上的几种方法
菜鸟日记: 1:new web project: 2:fix the visiting path of the tomcat,打开在安装目录下conf目录中的server.xml,在</Hos ...
- CAS 配置NLB 负载均衡网络无法连接
在虚拟机与虚拟机.虚拟机与实机之间利用Windows操作系统自带的网络负载均衡功能如选择单播集群模式,网络就无法通讯,NLB不成功. Scenario #1 在虚拟机与虚拟机之间选择多播模式NLB可正 ...
- Autoit3 如何捕足控件
以任务管理器为例,在命令行提示符下输入taskmgr.exe 接下来识别这个窗口上的控件 在AU3 中提供了一个捕捉控件的工具是Au3Info.exe 这里记录了控件的标题,控件的类型,控件的坐标和 ...
- 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用
jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...
- [Git]使用Git上传本地项目,并同步到Github上
第一步:先要在github.com中创建一个仓库(New Repository). 第二步,打开Git Bash ① git init [+仓库名]:初始化仓库,执行之后可以在指定的仓库存放地上面看到 ...
- Cocos2d-x数据相关的类用法简介(附示例)
(搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...