逻辑benders分解

目录

1.可行割

(1)组合benders割(本质是cover cut 覆盖割)

(2)最小可行割(minimal infeasible set,MIS) 

2.最优割

(1)常规最优割

(2)analytical benders cut——需要严格的数学证明

注:


前文综述:

benders分解算法 逻辑思路整理(加星)-CSDN博客

以下默认为min问题。

benders分解是指把问题分解为主问题和子问题。主问题松弛后得到的信息输入到子问题中,求解子问题后生成一些割加入到主问题中去。加入的割可以提升主问题的下界(主问题提供的解),继续反馈给子问题后,降低了上界(子问题提供的解),直到上下界相等,求解完成。

经典的benders分解,指的是子问题是线性规划问题;

基于整数的benders分解,指的是子问题是整数规划;

而基于逻辑的benders分解,指的是子问题返给主问题的割是根据逻辑得到的割。

对于调度问题,通常有以下几种。

1.可行割

类似背包约束。假设问题的上界是13。子问题得到的解为15,此时返回可行割。

(1)组合benders割(本质是cover cut 覆盖割)

即当前的解不合理,需要从当前被分配的工件集中去除至少1个工件。下图中M2机器至少得去除一个工件,\sum_{j\in R_{k}}^{}v_{jk}\leqslant \left | R_{k} \right |-1=4-1=3

将该cut加入到主问题中,告诉主问题下次必须得从R_{k}=\left \{ 1,3,5,6\right \}中去除至少1个工件,使得新工件集合数量\sum_{j\in R_{k}}^{}v_{jk}最多为3个。即下次主问题中必须有一个v_{jk}取值会有变化,从1变为0,即从原本的分配中被移除。

但是该cut效果有限,原因是,只能保证删除1个。删除1个后就失效了。需要我们继续添加割,此时迭代步骤会变多。

因此我们想要得到更好的可行割,更强的割,希望割去更多的工件,减少了迭代反复的次数,加速算法的收敛,求解效率会提高。

(2)最小可行割(minimal infeasible set,MIS) 

最小可行割就是为了解决上述问题而产生的。它计算了每个批次最多保存的工件的个数。

首先介绍最小子集:

即当前的≥上界,但再继续删除就<上界了,寻找这样的一个边界集合S_{k}

需要从R_{k}中依次移除工件,只要解≥上界,就依次移除,即v_{jk}=1变为v_{jk}=0。继续移除,直到移除后子问题的解(上界)<上界了,就得到最终的最小可行割S_{k},如V2所示。

2.最优割

主问题因为松弛掉部分约束,得到的是下界,是基于部分信息得到的决策。我们希望子问题得到一些割进而能提升主问题的下界。

(1)常规最优割

普适性比较强:

若下一次主问题求解时:

a)分配给机器k的工件仍为相同的一组工件v_{jk}=1,即\sum_{j\in R_{k}}^{}v_{jk}=\left | R_{k} \right |,此时有C_{max}=C_{max}^{\ast }\left ( R_{k} \right )

告诉主问题,假如下次你仍然分配这些工件给机器k,则最大完工时间如(V5)所示。

b)分配的解有变化,假如某工件从机器k上被移除,则右边为0或负数,此时V5是无效的。

总之该式给与了一个下界。

由于上述割在被移除的时候,不等式右边直接缩减为0,因此需要考虑增强技术。常用的是分析bender割。

(2)analytical benders cut——需要严格的数学证明

以带有设置时间的UPM问题为例,通常\Delta _{j}=p_{kj}+max_{i\in R_{k}, i\neq j}\left \{ s_{kij} \right \}

分析如下:假如将工件j移除,则v_{jk}=0。则最多减少了加工时间p_{kj}以及可能的最大设置时间s_{kij}\left ( i\neq j \right )。这是最多可能减少的部分,因此为主问题提供了一个更紧的下界。

注:

(1)因为子问题需要多次求解,因此当主问题复杂,子问题简单时,适合用本方法。特别是branch and check法,主问题只需要求解一次。更加的适用。

(2)其它的一些加强技术包括,提升主问题的下界。因为初始主问题包含的信息很少,所以最好加入一些有效不等式,得到一些较好的下界。换句话说,有效不等式加入主问题中很有用。

(3)其它的一些加强的benders cut。

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

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

相关文章

《四》QLineEdit单行输入框

QLineEdit单行输入框 QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示: 单行文本输入框 实际开发中,我们经常用到 QLineEdit 输入框,比如接收用户输入的个…

倒计时4天!百度Create AI开发者大会“大模型与深度学习技术”论坛亮点抢鲜看!

作为人工智能的核心基础技术,深度学习具有很强的通用性,大模型技术在深度学习的基础上,通过构建更加庞大神经网络模型和应用transformer等更加领先的算法,使模型的处理能力产生质的飞跃。飞桨(PaddlePaddle&#xff09…

【JMeter】JMeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我们的TPS,我们就不…

活动预告|如何构建云原生现代化数据栈?北京首场 Meetup 来啦!

数字化时代带来了海量的数据涌现,传统的数据架构已然无法满足现代企业的需求,现代化数据栈应运而生。基于云原生的现代化数据栈具备了多云兼容的特性,在不同的云环境下能够保持高性能运作,使企业得以无缝地处理和分析海量的数据集…

SonarQube 9.9.4 LTS社区版安装

目标 安装个SonarQube社区版. 安装SonarQube9.9.4 LTS社区版 https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip # 切换到安装目录 cd /opt # 下载安装包 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube…

Linux下使用update-alternatives管理软链接

前提 假如我们现在有这样的一个需求,在Linux下编译A工程时需要cmake的版本为3.26,编译B工程时需要cmake的版本为3.24,编译C工程时需要cmake的版本为3.22。每个工程必须需要对应的cmake版本,否则无法编译。这样就意味着我们的电脑…

探新路建“枢纽” 湖南深耕中非经贸合作“试验田”

湖南作为中国与非洲经贸合作的重要窗口,积极推动中非经贸关系的发展和深化。通过构建覆盖全产业链的高效运作模式,湖南企业能够在一周内将肯尼亚干制鳀鱼加工成为麻辣鲜香的劲仔深海小鱼并投入中国市场。此外,湖南还致力于推动非洲优质农产品…

【R语言从0到精通】-3-R统计分析(列联表、独立性检验、相关性检验、t检验)

上两次教程集中学习了R语言的基本知识,那么我们很多时候使用R语言是进行统计分析,因此对于生物信息学和统计科学来说,R语言提供了简单优雅的方式进行统计分析。教程参考《Rlearning》 3.1 描述性统计分析 3.1.1 载入数据集及summary函数 我…

【2024最新】微信公众号怎么开启留言功能

关注微信公众号:怒码少年,回复关键词【电子书】可以免费获取计算机相关电子书 本文首发于:原文阅读-wx公众号:怒码少年 大家好,我是小码。 微信公众号从18年开始,正式关闭了留言功能。自此以后新注册的公…

Spring Boot aop proceed方法小结

刚刚开通了一个公众号,会分享一些技术博客和自己觉得比较好的项目,同时会更新一些自己使用的工具和图书资料,后面会整理一些面试资料进行分享,觉得有兴趣的可以关注一下。 文章目录 前言实操代码揭晓答案 补充一点打完收工&#…

0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)

做题 借助例题[极客大挑战 2019]EasySQL1来理解SQL注入中的万能账号密码。 我们现解题,解题过程中的知识点在后面都会说到。 打开网址,我们看到的是这个界面。根据题目提示应该是属于SQL注入类型的 1.寻找注入点,很明显,输入用…

数据结构:线性表————单链表专题

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

纯小白蓝桥杯备赛笔记--DAY4(数学数据结构图论)

文章目录 数学质因数分解辗转相除法求最大公约数最小公倍数:快速幂乘法逆元费马小定理 逆元乘法逆元素数判定与埃式筛法朴素素数判定法埃式筛法 图论并查集T3:真题--合根植物DijkstraFloyd 基础算法递归,循环,前缀和,差分STL 数学…

数据分析案例(一):地区收入的PCA主成分分析

练习1 地区收入的PCA主成分分析 0.变量说明 1.导包操作 核心思路:导入基础数据操作库包,PCA、k-means 库包,数据可视化库包 import pandas as pd import numpy as np from sklearn.decomposition import PCA from sklearn.preprocessing i…

宝塔面板安装软件 提示需要[xxxMB]内存 强制不能安装

解决方法: 第一步: 编辑修改/www/server/panel/class/下的文件panelPlugin.py vi /www/server/panel/class/panelPlugin.py注释以下判断的内容: ## 第二步: 重启宝塔面板,然后安装即可 bash bt 1

HarmonyOS实战开发-如何实现对游戏实现基本控制。

介绍 本示例基于H5游戏,通过arkui的button实现对游戏实现基本控制,展示webview的JS注入与执行能力,及native应用与H5的通信能力。 本例的H5游戏页面,由https://yangyunhe369.github.io/h5-game-blockBreaker/ 提供 效果预览 使…

三子棋+迷宫

又水了一篇,嘿嘿不废话了,正文开始 文章目录 1.三子棋(Tic-Tac-Toe)游戏流程解析游戏设计游戏代码实现1. 包含头文件和定义全局变量2. 初始化游戏板3. 打印游戏板4. 玩家行动5. 检查胜利条件6. 主函数下面是完整的C语言代码 2.控…

Codeforces Round 521 (Div. 3)

目录 A. Frog Jumping B. Disturbed People C. Good Array D. Cutting Out E. Thematic Contests F1. Pictures with Kittens (easy version) F2. Pictures with Kittens (hard version) A. Frog Jumping 直接模拟即可注意数据范围需要开long long void solve(){LL a,…

LeetCode-5. 最长回文子串【字符串 动态规划】

LeetCode-5. 最长回文子串【字符串 动态规划】 题目描述:解题思路一:动态规划五部曲解题思路二:动态规划[版本二]解题思路三:0 题目描述: 给你一个字符串 s,找到 s 中最长的回文 子串 。 如果字符串的反序…

kubernetes应用的包管理工具---Helm的安装、部署、构建Helm Chart、分发

kubernetes应用的包管理工具—Helm的安装、部署、构建Helm Chart、分发 文章目录 kubernetes应用的包管理工具---Helm的安装、部署、构建Helm Chart、分发1. 引入Helm的原因1.1 没有使用Helm的部署1.2 使用Helm部署 2. Helm核心概念3. Helm架构3.1 V2版本3.2 V3版本 4. Helm安装…