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

*参考文献见链接

本文主要是讲述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. Column 'xxx' in field list is ambiguous

    一 其实看一下ambiguous的翻译就好了 一开始我觉得是含糊什么的,后来找了下才知道应该是双关... 二 所以翻译过来就是 : 列'XX'在字段列表中双关 其实就是两张表有相同的字段,但是使用时, ...

  2. Lodop套打

    记录一下Lodop套打模板 实现打印功能需电脑已经连接打印机(打印什么类型的东西就连接相应的打印机 (普通大打印机 打印标签 打印发票各种打印机))和已经安装好lodop控件 控件可到官网进行下载 h ...

  3. 下一代的前端构建工具:parcel打包react

    1. parcel很受欢迎,webpack太慢了,试试Parcel下一代的前端构建工具 2.Parcel很快,但缺少好多插件,没有base64,没有办法拆分打包文件.... 3.总结:适合小项目 4. ...

  4. Xiaocms 去版权

    Xiaocms 去版权 后台去版权: 1.  登录页面 修改文件:\admin\template\login.tpl.php 代码: <td width="190" rows ...

  5. 代码管理_Git中获取两个标签之间的变更代码行数

    操作步骤: 1.先进入git的服务器,定位到 repositories 目录 2.再定位到具体的项目目录(登录bitbucket查看项目属性可以看到项目的存放目录),如下图: 3.浏览项目的标签,命令 ...

  6. javaSe-线程2

    package com.java.chap09.sec02; public class Thread3 implements Runnable{ private int baoZi=1; privat ...

  7. 洛谷 U3348 A2-回文数

    题目背景 方方方很喜欢回文数,于是就有了一道关于回文数的题目. 题目描述 求从小到大第n(1<=n<=10^18)个回文数. 注释:出题人认为回文数不包括0. 输入输出格式 输入格式: 一 ...

  8. sessionStorage 详解,特点,使用技巧,场景

    很早之前久知道sessionStorage ,也学习过,但没有实战使用过 .最近团队遇到一个问题<electronjs中打开新页面sessionStorage丢失>,让我有机会重新来认识一 ...

  9. 晒一下MAC下终端颜色配置

    效果图: ~/.vimrc 配置 filetype on set history=1000 set background=dark syntax on set autoindent set smart ...

  10. Android(java)学习笔记127:生成 4种不同权限的文件

    1. 首先我们编写一个生成 4种 不同权限的文件的程序案例: (1)首先是activity_main.xml文件: <RelativeLayout xmlns:android="htt ...