MIP启发式算法:Variable fixing heuristic
*本文主要记录及分享学习到的知识,算不上原创
*参考文章见链接。
本文简单介绍一下Variable fixing heuristic,这个算法同样以local search为核心框架,它的特点在于定义邻域结构的方式。
目录
Hard variable fixing heuristic
Soft Variable fixing heuristic
Hard Variable fixing heuristic
Variable fixing heuristic 常常与Cplex一起使用。就像刚才提到的那样,variable fixing heuristic 同样以local searh为核心框架,所以Cplex主要用于求解邻域中的局部最优解。另外,variable fixing heuristic通常应用于0-1 MIP问题。以下以0-1 MIP 问题为例。
variable fixing heuristic 的过程
1)生成初始解x;
2)选择部分变量,固定这些变量的值;
3)用Cplex求解固定部分变量后的子问题;
4)如果Cplex求得的局部最优解x'优于初始解x,则将其作为新解x:=x';
5)回(2),不断迭代,直至满足终止条件。
备注:
1)生成的初始解x如果是integer feasible,那么“固定变量的值”的方式通常是选择其中部分的0-1变量,让其等于初始解对应变量的值。当然也可以考虑生成的初始解是integer infeasible,也就是说是一个Lp relaxation的解(考虑着这种情况是因为对于NP hard问题,求解其LP relaxation的速度远远比求解原问题迅速),那么“固定变量的值”的方式通常是选择部分变量,根据round固定为最近的整数解。
2)之所以会考虑固定部分变量的值,求解子问题,是因为固定部分变量的子问题的求解比原问题的求解更加迅速。
3)所以说variable fixing heuristic也是以local search为核心框架,特点在于邻域结构的定义。
4)variable fixing heuristic将local search与exact algorithm (Cplex)结合起来,启发了一些其他的算法,比如VNS和Cplex的结合。
Soft Variable fixing heuristic
hard variable fixing heuristic在定义邻域结构(求解子问题)时,已经确定好了哪些变量的值被固定。(即使可以在步骤(2)中可以实现随机选择固定的变量,但是在步骤(3)中求解子问题时哪些变量的值被固定已经是确定了的。那么在hard variable fixing 中如何选择固定的变量就变得尤其重要,一旦没选好,就可能错失优秀的解。所以有时候,我们可能并不是希望提前固定好一些变量的值,而是想着固定其部分变量,但具体是哪些变量,我们并不作要求,这样的操作可以尽可能避免由于固定错误的变量而导致的不良结果。基于这种考虑,soft variable fxing应运而生。

MIP启发式算法:Variable fixing heuristic的更多相关文章
- MIP启发式算法:Variable Neighborhood Decomposition Search
*本文记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文主要简述和VND VNS RINS很相关的vairable neighborhood decomposition search. 目 ...
- MIP启发式算法:local branching
*本文主要是记录并分享最近学习到的知识,算不上原创 *参考文献见链接 本文主要是讲述local branching算法,主要以M. Fischetti的论文 “Local braching”和Pier ...
- MIP启发式算法:Variable neighborhood search
*本文主要记录和分享学习到的知识,算不上原创. *参考文章见链接. 本文主要讲述启发式算法中的变邻域搜索(Variable neighborhood search).变邻域搜索的特色在于邻域结构的可变 ...
- MIP启发式算法:遗传算法 (Genetic algorithm)
*本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 本文主要讲述启发式算法中的遗传算法.遗传算法也是以local search为核心框架,但在表现形式上和hill climbing, ta ...
- MIP启发式算法:爬山算法 (Hill climbing)
本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 ...
- VRP相关知识整理
一.扩展问题分类: ★ the capacitated vehicle routing problem (CVRP) , 即classical VRP ★ the vehicle routing pr ...
- 启发式算法(Heuristic Algorithm)
背景: 李航的<统计学习方法>一书中提到:决策树算法通常采用启发式算法,故了解之 问题解答: 时间有限,这里也只是将算法和启发式算法的区别和简单发展摘录如下: 一.算法和启发式方法之间的差 ...
- Cplex: MIP Control Callback
*本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 之前,我们有简单提到Cplex中的MIP Callback Interface,包括了Informational callback, q ...
- Cplex: MIP Callback Interface
*本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 这篇文章主要记录一些Cplex的Callback的使用方法,采用Java语言. https://www.ibm.com/support/ ...
随机推荐
- 【转载】Ubuntu16.04安装最新版nodejs
安装最新版nodejs 更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties softw ...
- 基于Java实现的快速排序
简述 快速排序是一种排序执行效率很高的排序算法,它利用分治法来对待排序序列进行分治排序,它的思想主要是通过一趟排序将待排记录分隔成独立的两部分,其中的一部分比关键字小,后面一部分比关键字大,然后再对这 ...
- java内存分配(堆、栈、常量池)
Java内存分配: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,以及成员方法中的局部变量 ◆堆:存放对象本身(成员变量+成员方法的引用) ◆静态域:存放在对象中用static ...
- keil下JLINK在线调试仿真设置,SWD连接
keil下JLINK在线调试仿真设置,以下三个步骤搞定: 有时我们编译时会遇到空间不足的情况,首先我们应该把 flash和RAM的size 设置为当前所用芯片的大小,如下我使用了一个片上flash 2 ...
- .Net平台互操作技术:03. 技术验证
上面两篇文章分别介绍了.Net平台互操作技术面临的问题,并重点介绍了通过P/Invoke调用Native C++类库的技术实现.光说不做是假把式,本文笔者将设计实验来证明P/Invoke调用技术的可行 ...
- Word通配符
通配符模式下: ^13表示回车,^32表示空格 第一步,使用通配符替换掉无关文本 M?G-C??[A-Z]{1,20}_[A-Z]{1,20}_201?????_?? VirtualTrial[0-9 ...
- AES加密示例
最近用到对文本内容进行加密,于是查了一下常用的加密算法: DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合:3DES(Triple ...
- postgres创建库时指定编码格式
postgres新建数据库时如果没有指定编码格式,会用默认的编码格式: 对于已经存在的数据库,虽然可以用:set client_encoding to 'UTF8'; set server_encod ...
- less的使用总结
简单执行less 一.使用npm全局安装less: npm install -g less 二.创建less文件 三.执行命令将less文件转换成css文件 lessc less/style.less ...
- SAP标准培训课程C4C10学习笔记(三)第三单元
第三单元:Account and Contact management Account和Contact概念和SAP CRM里是一样的: 并且支持同ERP和CRM的客户主数据做同步. 关于具体的同步场景 ...