*本文主要是记录并分享最近学习到的知识,算不上原创

*参考文献见链接

本文主要是讲述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.

Hansen, P., Mladenović, N. and Urošević, D., 2006. Variable neighborhood search and local branching. Computers & Operations Research, 33(10), pp.3034-3045.

MIP启发式算法:local branching的更多相关文章

  1. MIP启发式算法:爬山算法 (Hill climbing)

    本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 ...

  2. MIP启发式算法:遗传算法 (Genetic algorithm)

    *本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 本文主要讲述启发式算法中的遗传算法.遗传算法也是以local search为核心框架,但在表现形式上和hill climbing, ta ...

  3. MIP启发式算法:Variable neighborhood search

    *本文主要记录和分享学习到的知识,算不上原创. *参考文章见链接. 本文主要讲述启发式算法中的变邻域搜索(Variable neighborhood search).变邻域搜索的特色在于邻域结构的可变 ...

  4. MIP启发式算法:Variable fixing heuristic

    *本文主要记录及分享学习到的知识,算不上原创 *参考文章见链接. 本文简单介绍一下Variable fixing heuristic,这个算法同样以local search为核心框架,它的特点在于定义 ...

  5. MIP启发式算法:Variable Neighborhood Decomposition Search

    *本文记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文主要简述和VND VNS RINS很相关的vairable neighborhood decomposition search. 目 ...

  6. 如何从github下载项目的源代码,包含git客户端,直接下载,vs下载

    有好多小伙伴可能刚刚接触github,还不知道如果和github下载项目,此处写个博客统一的声明.从多种方式下载源代码,加深对git的理解. 首先先解释下git的含义,git是一个源代码的管理工具,通 ...

  7. Developing

    To work with the Android code, you will need to use both Git and Repo. In most situations, you can u ...

  8. Git 跟 GitHub 是什么关系?

    Git 跟 GitHub 是什么关系? 大概就是「魔兽争霸」与「对战平台」的关系吧. git是一个版本控制工具github是一个用git做版本控制的项目托管平台. git是一个版本管理工具,githu ...

  9. Git学习笔记--配置(二)

    由之前文章,总结得出Git的特点: 最优的存储能力: 非凡性能: 开源的: 管理成本低: 很容易做备份: 支持离线操作: 很容易定制工作流程: Git is a free and open sourc ...

随机推荐

  1. .net 中 Json 与List 相互转

    var duanxin1 = new DuanXin(); duanxin1.RECEIVE_LOGIN_NAME = "dd"; duanxin1.RECEIVE_Number ...

  2. c#基础3-方法的重载静态和非静态,字段属性,方法

    方法的重载概念:方法的重载指的就是方法的名称相同给,但是参数不同.参数不同,分为两种情况1).如果参数的个数相同,那么参数的类型就不能相同.2).如果参数的类型相同,那么参数的个数就不能相同.***方 ...

  3. 发现了一个entity framework的BUG

    小弟学浅才疏可能是小题大做,但遇上了并且让我麻烦了一阵,就值得记下来 BUG的过程就是我在建立实体模型的时候 命名了一个叫system的实体模型 导致了所有生成类中 引用using system失败

  4. jeecg308自定义使用getDataGridReturn方法分页失效问题

    DataGrid dataGrid = new DataGrid(); dataGrid.setPage(p); dataGrid.setRows(r); dataGrid.setOrder(&quo ...

  5. Myeclipse发布第一个jsp页面及web project部署到tomcat上的几种方法

    菜鸟日记: 1:new web project: 2:fix the visiting  path of the tomcat,打开在安装目录下conf目录中的server.xml,在</Hos ...

  6. CAS 配置NLB 负载均衡网络无法连接

    在虚拟机与虚拟机.虚拟机与实机之间利用Windows操作系统自带的网络负载均衡功能如选择单播集群模式,网络就无法通讯,NLB不成功. Scenario #1 在虚拟机与虚拟机之间选择多播模式NLB可正 ...

  7. Autoit3 如何捕足控件

    以任务管理器为例,在命令行提示符下输入taskmgr.exe 接下来识别这个窗口上的控件 在AU3  中提供了一个捕捉控件的工具是Au3Info.exe 这里记录了控件的标题,控件的类型,控件的坐标和 ...

  8. 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用

    jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...

  9. [Git]使用Git上传本地项目,并同步到Github上

    第一步:先要在github.com中创建一个仓库(New Repository). 第二步,打开Git Bash ① git init [+仓库名]:初始化仓库,执行之后可以在指定的仓库存放地上面看到 ...

  10. Cocos2d-x数据相关的类用法简介(附示例)

    (搬运自我在SegmentFault的博客) 在Cocos2d-x的学习和使用中,我遇到了很多关于数据的操作.在这个过程中,我学习了Cocos2d-x自带的很多功能.下面我把接触到的类罗列在下面,给出 ...