整数benders分解算法

benders分解是将问题分为限制主问题和子问题,然后主问题向子问题传入变量,接着根据子问题求解的信息向主问题返回割(最优割和可行割),这些割以约束的形式被添加到主问题中。其中,子问题因为求解得到的解是可行的,是上界Ub,主问题因为添加的约束不够,可行域缩小,是下界。不断重复上述过程,直到Ub=Lb,即限制主问题中已经添加了所有应该添加的完备的约束信息,当前限制主问题与原始问题等价,求解结束,输出最优解。

割其实描述的子问题告诉限制主问题的信息,告诉限制主问题先前提供的解好不好,以及指导下一步该怎么做。

上述是benders分解算法的思路。根据主问题MP和子问题SP特点的不同,可以分为经典的benders算法和广义的benders算法(区别是前者是线性对偶,后者是推理对偶),后者又可以分为整数benders算法和逻辑benders算法。因此benders算法可以分为三类,经典的benders算法、整数benders算法、和逻辑benders算法。

经典benders算法可以参见:
(1) benders分解算法 逻辑思路整理
(2) benders decompositon学习笔记记录

逻辑benders算法可以参见:逻辑benders分解。

本节详细介绍整数benders分解。

1.整数benders分解问题结构:

三种benders分解算法问题的结构
当限制主问题LMP是0-1规划问题,而子问题SP是整数规划问题时,可以采用整数benders分解算法求解。

正因为有上述特性,因此可以利用上述特性来构造割的信息进而进行求解。

2.整数benders算法介绍:

类比经典的benders分解算法,即子问题包含在原始问题(原问题)中,因此子问题的求解信息与原问题是同步的。

(1)子问题假如不可行,那么原问题也不可行;
(2)子问题可行,那么原问题也可行;
(3)子问题无界,那么原问题也无界。

因为子问题不可行,原问题不可行,没有优化的意义,因此我们不需要考虑这种情况。需要考虑的是后两种。(这是经典benders分解中的内容)

我们需要考虑的是子问题可行以及子问题无界的情形,即返回最优割和可行割的情形。

那么现在的问题变为了对偶问题如何与子问题建立联系?经典benders中的对偶理论中的内容不再适用。通过推理的方式来构造对应的割。

(1)可行割

首先考虑可行割,即求解子问题得到的解是无界的,那么我们需要排除掉这个情形,即下一次不能再给子问题输入这样的解了。
在这里插入图片描述
可以构造可行割如下:
∑ j : y ^ = 0 y j + ∑ j : y ^ = 1 ( 1 − y j ) ≥ 1 \sum_{j:\hat{y}=0 }y_{j}+\sum_{j:\hat{y}=1 }(1-y_{j}) \ge 1 j:y^=0yj+j:y^=1(1yj)1

分析如下:
我们需要排除目前的这个解,即这个解不满足该约束。将该解代入约束,发现约束左边为0+0=0,右边为1,0≥1是不满足的。因此可以把该解排除。

可行割利用的就是主问题是0-1规划的性质,解只能取0/1,因此可以构造上式。

(2)最优割

以下是最优割,即子问题输出的解是原问题的上界,我们需要构造出不等式来指导下一步前进的方向。

在这里插入图片描述
可以构造最优割如下:
q ≥ ϕ ( y ˉ ) − [ ϕ ( y ˉ ) − L ] [ ∑ j : y ˉ = 0 y j + ∑ j : y ˉ = 1 ( 1 − y j ) ] q \ge \phi (\bar{y} )-\left [ \phi (\bar{y} ) - L \right ] [\sum_{j:\bar{y}=0 }y_{j}+\sum_{j:\bar{y}=1 }(1-y_{j})] qϕ(yˉ)[ϕ(yˉ)L][j:yˉ=0yj+j:yˉ=1(1yj)]

分析如下:

其中,第一部分 ϕ ( y ˉ ) \phi (\bar{y} ) ϕ(yˉ)表示松弛子问题的解,与经典benders分解子问题的解是一样的。后面两部分是整数benders和经典benders的区别。

我们注意到子问题是整数规划,为了求得它的值,我们可以构造松弛子问题LSP,求解LSP对偶问题可以为SP问题提供一些信息。

L L L是松弛子问题LSP(输入所有的 ϕ ( y ˉ ) \phi (\bar{y} ) ϕ(yˉ)中)的最小值(有效下界), [ ϕ ( y ˉ ) − L ] \left [ \phi (\bar{y} ) - L \right ] [ϕ(yˉ)L]表示松弛子问题LSP与有效下界之间的差距,表明的是前进的方向。而第三项 [ ∑ j : y ˉ = 0 y j + ∑ j : y ˉ = 1 ( 1 − y j ) ] [\sum_{j:\bar{y}=0 }y_{j}+\sum_{j:\bar{y}=1 }(1-y_{j})] [j:yˉ=0yj+j:yˉ=1(1yj)]表示 y y y的变化量,二者一综合提供了方向和步长。若使用推理的形式写出,描述如下:
在这里插入图片描述
上述是经典benders分解,下述是整数benders分解的推理过程。可以看到 λ T \lambda^{T} λT其实就是我们构造的 [ ϕ ( y ˉ ) − L ] \left [ \phi (\bar{y} ) - L \right ] [ϕ(yˉ)L] ( y − y ˉ k ) (y-\bar{y}_{k}) (yyˉk)其实就是我们构造的第三项 [ ∑ j : y ˉ = 0 y j + ∑ j : y ˉ = 1 ( 1 − y j ) ] [\sum_{j:\bar{y}=0 }y_{j}+\sum_{j:\bar{y}=1 }(1-y_{j})] [j:yˉ=0yj+j:yˉ=1(1yj)]

至此,构造出对应的最优割和整数割,求解完毕。

但该法有个问题,即每次添加的可行割只去除了一个解,效率是非常低的。我们需要根据问题的结构设计出有效的可行割,这也是逻辑benders分解的内容。也是论文发表的方向。

参考资料:
069-线性规划(十四):整数Benders分解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929369.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity之(多语言)Localization本地化工具

一、安装和配置 Localization Localization是Unity基于对多种语言和区域变体所设计的一个本地化工具,常用与切换多国语言时文本、图片的动态替换。 1.安装Localization插件 Window—> Package Manager,打开Package Manager面板 Packages选择Unity Re…

使用Mac下载MySQL修改密码第一篇_数据库

Mac下载MySQL MySQL官网链接MySQL​​​​​​ 当进入到官网后下滑到community社区,进行下载 然后选择community sever下载 这里就是要下载的界面,如果需要下载之前版本的话可以点击archives, 可能会因为这是外网原因,有时候下…

服务器数据恢复—EVA存储硬盘磁头和盘片损坏离线的数据恢复案例

服务器存储数据恢复环境&故障: 一台HP EVA存储中有23块硬盘,挂接到一台windows server操作系统的服务器。 EVA存储上有三个硬盘指示灯亮黄灯,此刻存储还能正常使用。管理员在更换硬盘的过程中,又出现一块硬盘对应的指示灯亮黄…

Linux 网络基础

文章目录 1. 计算机网络背景2. 协议2.1 OSI七层模型2.2 为什么要有TCP/IP协议? 3. 协议与操作系统的关系4. 网络传输基本流程4.1 局域网通信原理4.2 局域网通信流程4.3 跨网络通信流程 5. Socket编程预备知识5.1 端口号5.2 网络字节序5.3 socket编程接口 6. 网络命令…

一站式指导:在Neo4j与PostgreSQL间实现高效数据同步

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 数据同步的艺术&#…

AI一键生成原创圣诞印花图案

一、引言 随着科技的飞速发展,AI 已经深入到我们生活和工作的各个角落,为创意设计领域带来了前所未有的变革。在圣诞即将来临之际,想要设计独特的圣诞印花图案却又担心缺乏灵感或专业技能?别担心,千鹿 AI 为我们提供了…

视频 的 音频通道提取 以及 视频转URL 的在线工具!

视频 的 音频通道提取 以及 视频转URL 的在线工具! 工具地址: https://www.lingyuzhao.top/toolsPage/VideoTo.html 它提供了便捷的方法来处理视频文件,具体来说是帮助用户从视频中提取音频轨道,并将视频转换为可以通过网络访问的URL链接。无…

图片的懒加载

目录 懒加载的来源 事件监听 IntersectionObserver 懒加载的来源 图片的来加载其实就是延迟加载,我们知道浏览器的可视范围是有限的,现在网页的内容越来越丰富,一般网页的内容都是需要滚动才能完成浏览 如果网页有很多图片,然…

【每日刷题】Day162

【每日刷题】Day162 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 3302. 字典序最小的合法序列 - 力扣(LeetCode) 2. 44. 通配符匹配 - 力扣&…

Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署

文章目录 前言一、Zookeeper单机部署(手动部署)1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…

捷联惯导原理和算法预备知识

原理和算法预备知识 牛顿第一运动定律-惯性定律:如一物体不受外力作用,它将保持静止状态或匀速直线运动状态不变。 牛顿第二运动定律:表达式为Fma,。其中F为物体所受的合力,m为物体的质量,a为物体的加速度。这个公式…

工业—使用Flink处理Kafka中的数据_ChangeRecord1

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30

简单注册器

简单注册器 还是想查壳 发现这是apx文件 放入JEB里进行反编译 在JEB里使用快捷键Tab 可以反编译 转化成java语言 我们在搜索一下字符串flag 得到了下面这一串字符串 这里他对这串字符串进行了一系列的加密算法 img src"C:\Users\22069\Pictures\Screenshots\屏幕截图 20…

MySQL两阶段提交目的

阶段提交的过程 事务执行阶段:事务开始执行,InnoDB执行SQL语句的具体操作,如数据修改、删除等,并将这些操作记录在内存中。写入Redo Log(准备阶段):事务即将提交时,首先将事务相关的…

33 基于单片机的智能窗帘控制系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DHT11温湿度传感器检测温湿度,滑动变阻器连接ADC0832数模转换器转换模拟,光敏传感器,采用GP2D12红外传感器,通过LCD1602显示屏显示…

Qt关于padding设置不起作用的的解决办法

观察以下的代码: MyWidget::MyWidget(QWidget *parent): QWidget{parent},m_btn(new QToolButton(this)) {this->setFixedSize(500,500);m_btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);m_btn->setIcon(QIcon("F:tabIcon/person-white.s…

zookeeper在确认config无误后仍处于standalone模式的解决方法

jps查看是否有QuorumPeerMain进程 停止服务后该进程仍然存在,输入: ps -ef | grep QuorumPeerMain | grep -v grep | awk {print $2} | xargs kill 之后再启动一次进程 bin/zkServer.sh start 查看状态 bin/zkServer.sh status 发现报错解决&#…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的,electron 29版本追加了很多新功能,但是这些新功能对开发者不友好,对electron构建出来的软件,使用者更安全,所以,我暂时不想研究electron 29版…

Gartner报告解读(四)| 如何运用上升期的基础设施自动化(IA)为企业数字化转型赋能?

近期,Gartner发布的《2024年中国基础设施战略技术成熟度曲线》显示,未来5-10年,大量具有颠覆性或较高影响力的创新技术可能会实现主流采用,其中就包括基础设施自动化(IA)。 基础设施自动化Gartner评估情况 …

博泽Brose EDI项目案例

Brose 是一家德国的全球性汽车零部件供应商,主要为全球汽车制造商提供机电一体化系统和组件,涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名,在全球拥有多个研发和生产基地,是全球第五大家…