寻找一般整数规划问题的可行解是一个比较困难的事情, feasibility pump和local branching方法的提出,为寻找MIP的可行解提供了新的思路,feasibility pump方法可以较低的成本提供局部分支过程的(不一定可行)初始解。在单纯形法中,通过引入人工变量求解增广模型,之后在迭代循环使人工变量的值趋于0,以获取问题的可行解。我们的方法也可以启发式的寻找最小基数约束集,将不可行的MIP转化为可行的MIP。

在实际的应用场景下,找到好的可行方案是商业发展的主要关注,局部搜索通常从一个初始的可行解出发,对其进行迭代改进,从而使算法终止于一个稳定的值。然而,有时找到一个初始解往往是比较困难且不必要的,因为可以通过修复策略使初始解变的可行并最终得到改进。基于上述分析,本文介绍求解MIP的 feasibility pump和local branching方法,这两种方法最初的设计理念就是为了寻找初始和改进初始可行解。

1 引言

1.1 基础模型

为了寻找到要研究问题的可行解决方案,我们首先定义包含0-1变量的MIP模型:

模型变量说明:

参数 描述
输入矩阵
维度为m的向量
维度为n的向量
可分解为三个子集,分别表示0-1变量、整数变量和连续变量索引集

注意:

  • 我们在这里假设存在0-1变量集,因为局部分支启发式算法需要基于这一假设。此外,也可以消除这一约束拓展我们的方法。
  • 对于约束集(3)虽然呈现出不等式形式,但也包含了等式约束;可令表示所有的整数变量集合

1.2 方法回顾:

  • Fischetti提出所谓的局部分支启发时方法,来提升给定可行解的质量;【Fischetti M, LodiA. Local branching. Mathematical Programming 2003;98:23–47】
  • Danna提出RINS启发式方法,需要一个初始可行解,但这对于一些MIP是比较困难的。【 Danna E, Rothberg E, Le Pape C. Exploring relaxation induced neighborhoods to improve MIP solutions. Mathematical Programming. 2005;102:71–90.】
  • Fischetti提出使用feasibility pump方法通过一系列巧妙的操作来发现MIP的可行或近似可行的解决方案。【Fischetti M, Glover F, LodiA. The feasibility pump. Mathematical Programming 2005;104:91–104.】

1.3 我们的工作

计算和分析了原始LB方法的简单变体,允许接受不可行的参考解,如使用FP返回的解;我们从FP以极小的计算成本提供的几乎可行的参考解出发,对每一个违反约束的MIP模型的约束通过以下三种形式进行放松:引入基于约束本身的人工连续变量、引入二进制人工变量;设置在必须使用人工变量才能满足的情况下将二进制变量设置为1的约束。最后目标函数被替换为类似于单纯形法第一阶段的二进制变量求和的形式。对于放松之后的模型,具有满足约束的可行初始解,其约束数目与违背初始约束的数目是一致的。我们使用标准的LB框架,减少目标函数的值,即不可行解的数目;对于初始问题,不可行解的数目为0时,便得到了它的可行解。尽管对于每一个违反的约束,连续性变量就足够了,但是LB使用二进制变量,则显示了更好的效果。

此外,我们的方法还产生了一个小的基数约束集,将其松弛可将不可行的MIP转化为可行的MIP,这对与分析不可行的MIP非常重要;换言之,可将其视为修复不可行MIP模型的工具,而不仅是修复不可行MIP解决方案的一种启发式方法,其思想与通常研究的寻找LP最大或最小子问题的可行解的理念是一致的。

2 局部分支和可行性泵方法

2.1 局部分支(Local Branching, LB)

基本原理如下:

对于问题给定一个可行的参考解,我们的目标是寻找距离并不太远的改进解。

表示的二进制支持集,对于给定的正整数,定义的邻域为问题满足邻域分支约束的可行解:

左侧的两项分别为从1-0或0-1的二进制变量的翻转值;顾名思义,局部分支约束7可以用作问题P方案枚举的分支条件。实质上,若给定,与当前分支节点相关联的解空间做如下分解:

这里的邻域大小k应足够的小以保证在较短的时间内获得优化解,还应足够的大以保证能顾囊括比更好的解。

Fischetti(2003)的通过控制一个简单的外部分支框架,使用通用的MIP求解器作为一个黑箱工具来在子空间内搜索更合适的解,这个过程包含着著名的局部搜索元启发式算法理念,但是得到了包含邻域约束的MIP的局部分支约束(7),这可以保证算法在一个更完美的框架下被开展实施。在MIP求解器中,通常采用的是精确求解算法策略,尽管LB算法是为了改进MIP求解器而做出的启发式行为。他利用战略级分支定义解的邻域,并在战术级层面上利用MIP求解器进行更优解探索。这一过程可视为一个两级分支策略,既能在早期对现有解进行更新,也能在计算的早期产生改进的解决方案。Fischetti(2003,2006)的研究结论表明,LB方法具有良好的性能,Hansen(2006)也采用变邻域搜索元启发式方法证明了这一点。

Hansen P, Mladenovíc N, Urosevíc D. Variable neighborhood search and local branching. Computers and Operations Research 2006;33:3034–45.

Fischetti M, Polo C, Scantamburlo M. A local branching heuristic for mixed-integer programs with 2-level variables. Networks 2004;44:61–72.

2.2 可行泵

表示与给定MIP的LP松弛相关的凸多面体,不失一般性,我们假设包含具有界限的变量集,这里对于所有的都有

3 从不可行解开始的局部分支方法

局部分支技术并不严格要求从一个可行解开始,也即一个部分可行的解也可以。通过以合适的方式对模型进行放松,我们有可能将一个不可行解通过局部分支启发式骑术使其逐步变更为可行解。

一种常用的实现方式为,为不可行解中的违反约束添加一个连续的人工变量,使用M对其进行惩罚,这种方法已经被测试是有效的,但是在实际应用中确定M是比较困难的。对于MIPLIB中的许多算例,他们的目标函数值是非常大的,使用M并不能体现出不可行解比可行解差的情形。LB采用了如下组合优化框架:

运筹优化学习08:Repairing MIP infeasibility through local branching相关推荐

  1. Python+cplex运筹优化学习笔记(三)-营养膳食选择

    Python+cplex运筹优化学习笔记(三)-营养膳食选择 前言 首先呢,说明一下,本文只是自己在学习过程中运用到的例子,然后规整总结一下,随便写写自己所做的一些笔记.小白学习,有不对的地方还望大家 ...

  2. 运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解

    目录 1 CSP问题与模型 1.1 问题描述 1.2 模型构建 2 列生成方法理论 2.1 引子 2.2 单纯形法到列生成 2.3 subproblem 2.3.1 对偶理论 2.3.2 影子价格 2 ...

  3. 运筹优化学习24:Gurobi902注册、下载、安装教程【保姆级手把手教学】

    目录 1 Gurobi的注册与下载 1.1 注册 1.2 下载 2 获取权限文件 3 安装后查看自己的grbgetkey 介绍Gurobi的下载及安装全部流程: 注意安装过程中,请保持网络环境通畅,特 ...

  4. 运筹优化学习02:Lingo求解带容量约束的车辆路径问题(CVRP)

    目录 1 基础知识储备 1.1 LINGO 具有9种逻辑运算符 1.2 lingo的窗口状态解析 1.3 @wrap函数解析 1.3.1 官方解释 1.3.2 示例代码及解释 2 CVRP问题描述与模 ...

  5. 运筹优化学习15:求解线性规划的单纯形法【手把手计算,够你应付考试了,看不懂算我输】

    目录 1 理论部分 1.1 单纯形表的要素含义解释 1.2 计算步骤 2 计算示例 2.1 初始单纯形表 2.2 第二次变换 2.3 第三次变换 2.4 第四次变换 3 参考文档 本博主研究了一天没有 ...

  6. 运筹优化学习01:Lingo入门与错误列表分析

    目录 1 Lingo编程基础 1.1基本思路 1.2 建模思路 1.3 注意事项 2 整数规划模型求解示例(不使用集合语言) 2.1 问题模型 2.2 lingo源代码: 2.3 结果展示 2.4 小 ...

  7. 前端性能优化学习 08 资源加载优化

    图片延迟加载 什么是延迟加载 首先来想象一个场景,当浏览一个内容丰富的网站时,比如电商的商品列表页.主流视频网站的节目列表等,由于屏幕尺寸的限制,每次只能查看到视窗中的那部分内容,而要浏览完页面所包含 ...

  8. 运筹优化学习04:禁忌搜索算法的历史

    禁忌搜索算法的提出与学者们孜孜不倦的研究精确算法的努力一道发展起来的,启发式算法和精确算法同时汲取了人工智能和运筹学的成果精华:作为回馈,一些设计巧妙的算法也反过来推动了人工智能和运筹学的领域相关问题 ...

  9. 运筹优化学习17:马尔科夫决策规划--例题及Matlab、Lingo和Cplex的建模实现

    目录 1 胡运权<运筹学>211页题目及理论分析 1.1 题目介绍 1.2 Matlab实现 1.3 使用Lingo求解 1.4 使用Cplex建模及求解 2 刘克<马尔科夫决策过程 ...

  10. 杭州/北京内推 | 蚂蚁集团智能决策团队招聘运筹优化算法工程师/实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 蚂蚁集团 蚂蚁集团-CTO 线-智能决策团队,有来自国内外 top 互联网 ...

最新文章

  1. 关于 TStringList.Assign - 回复 u9cm 的问题
  2. AJAX实用教程——获取博客园博文列表
  3. JAVA排序算法之希尔排序
  4. bootstrap-table全选当前页所有数据checkAll
  5. 江民科技召开临时董事会 王江民之子接手管理
  6. java树广度优先_如何在功能上生成树广度优先 . (使用Haskell)
  7. 计算机审计取证方法,审计技术方法有几种
  8. Anki显示音标问题
  9. vnc远程控制linux密码,如何使用VNC远程控制Linux(Centos)?
  10. 十年股市投资回顾与反思
  11. 2019重新起航:搭建个人博客
  12. 仓库温度湿度控制措施_仓库温度湿度控制管理制度
  13. Error parsing HTTP request header...java.lang.IllegalArgumentException: Invalid character found in m
  14. 机器自动翻译古文拼音 - 十大宋词 - 扬州慢 淮左名都 姜夔
  15. Linux入门---基本指令(下)
  16. Linux(ubuntu)安装JLink 驱动
  17. A10:怎么利用容器技术,助力开放银行建设
  18. HBuilder 百度地图的使用
  19. 百练_4019:黑色星期五
  20. 乐视体感astra pro深度摄像头在ros系统获取 深度图像 彩色图像 无色彩点云数据 彩色点云数据

热门文章

  1. 最火开源框架MVVMHabit的简单集成使用
  2. Ansible(十四)-- ansible 中的变量(三) set_fact 模块 注册变量实现跨play调用变量
  3. 计算机对学习的好处,学习计算机的好处
  4. 工业机器人导轨 百度文库_《工业机器人》复习资料
  5. 【IOS】获取iOS设备唯一标识的演进UDID, MAC Address,UUID,IDFA,IDFV,OpenUDID
  6. 互联网日报 | 4月5日 星期一 | 华为首款台式显示器登陆海外;腾讯视频VIP会员4月10日起涨价;我国民宿房源超300万套...
  7. ps后期调色教程,ps怎么后期调色步骤图
  8. 智能三路CAN总线路由器集线器助力灵活组网
  9. 实验六 —— 火焰传感器
  10. 文件分割与合并(Java)