运筹优化学习08:Repairing MIP infeasibility through local branching

简介: 运筹优化学习08:Repairing MIP infeasibility through local branching

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


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


1 引言

1.1 基础模型

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

20190922103713175.png

模型变量说明:

image.png


注意:

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


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)

基本原理如下:


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

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


20190922111652346.png


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


image.png


这里的邻域大小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 可行泵


image.png

20190928141951667.png

20190928142007366.png

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


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


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


20190928141829409.png20190928141903181.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
Windows
mathtype7产品激活密钥最新
MathType是强大的数学公式编辑器,MathType公式编辑器可以说是专门为理科生准备的软件,它可以帮助用户快速的在各种文档中插入符号和公式,不论是简单的公式和符号,还是复杂的都可以非常轻松的输入,并且在与office文档结合使用时,表现的非常完美,是非常好的一款软件,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面,是编辑数学资料的得力工具。
55183 0
|
数据采集 存储 数据可视化
四个常见的爬虫框架
【5月更文挑战第10天】本文介绍了四个常见的爬虫框架或库:Scrapy、PySpider、Crawley和Portia。Scrapy是一个强大、组件化的爬虫框架,支持异步请求和XPath数据提取。PySpider提供WebUI,便于脚本编写和结果查看,适合初学者。Crawley擅长高速爬取,支持多种数据库和数据导出格式。Portia是可视化工具,适合无编程经验的用户。此外,还有BeautifulSoup和Grab等工具可供选择。选择爬虫工具应考虑项目需求、开发者技能和工具特性。
723 0
|
存储 XML 弹性计算
Zotero+阿里云盘文献同步
通过将阿里云盘映射为WebDav,作为Zotero的文献同步网盘,实现了多设备上的Zotero文献同步
Zotero+阿里云盘文献同步
|
消息中间件 JavaScript 小程序
面试官:你了解 QPS、TPS、RT、吞吐量 这些高并发性能指标吗?
面试官:你了解 QPS、TPS、RT、吞吐量 这些高并发性能指标吗?
|
机器学习/深度学习 存储 算法
I2A、MBMF、MVE、DMVE…你都掌握了吗?一文总结强化学习必备经典模型(三)
I2A、MBMF、MVE、DMVE…你都掌握了吗?一文总结强化学习必备经典模型
1076 0
|
7月前
|
JSON 前端开发 关系型数据库
如何物业管理(园区式)系统的房屋及设备设施板块?(附架构图+流程图+代码参考)
本文介绍了园区物业管理系统中房屋与设备设施管理的核心内容,涵盖设备信息、巡检、报修、保养四大功能模块,提供系统架构图、数据模型设计、关键实现建议及可落地的代码样例。通过打通资产与运维流程,实现降本增效、减少停机与投诉,助力运维数据化、智能化。
|
6月前
|
监控 测试技术 API
n8n自动化测试教程 (1):环境搭建与初识n8n
n8n是一款开源、可视化的工作流自动化工具,测试工程师可通过拖拽节点快速构建API测试流程,实现测试编排、数据管理、自动化监控与告警等功能,提升测试效率与覆盖率。
|
开发框架 人工智能 安全
鸿蒙HarmonyOS应用开发 | 「鸿蒙技术分享」HarmonyOS NEXT元服务卡片实战体验
HarmonyOS NEXT的发布对华为及整个行业都产生了深远的影响。它不仅展示了华为的技术实力,还敏锐地把握了市场需求。同时,吸引了更多的开发者和合作伙伴加入鸿蒙生态体系,共同推动鸿蒙生态的繁荣发展。
943 20
鸿蒙HarmonyOS应用开发 | 「鸿蒙技术分享」HarmonyOS NEXT元服务卡片实战体验
|
消息中间件 监控 Java
Java一分钟之-Spring Integration:企业级集成
【6月更文挑战第11天】Spring Integration是Spring框架的一部分,用于简化企业应用的集成,基于EIP设计,采用消息传递连接不同服务。核心概念包括通道(Channel)、端点(Endpoint)和适配器(Adapter)。常见问题涉及过度设计、消息丢失与重复处理、性能瓶颈。解决策略包括遵循YAGNI原则、使用幂等性和事务管理、优化线程配置。通过添加依赖并创建简单消息处理链,可以开始使用Spring Integration。注意实践中要关注消息可靠性、系统性能,逐步探索高级特性以提升集成解决方案的质量和可维护性。
525 3
Java一分钟之-Spring Integration:企业级集成
|
Dubbo Java 应用服务中间件
开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比
开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比
1792 107

热门文章

最新文章