benders分解算法 逻辑思路整理(加星)

这篇具有很好参考价值的文章主要介绍了benders分解算法 逻辑思路整理(加星)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Benders decomposition

目录

1.benders的分类

2. 经典的benders分解

2.1 经典的benders分解注意点

2.2 benders分解的核心——子问题和对偶子问题的分析


benders分解本质是:
(1)将问题分解为松弛主问题和子问题
(2)子问题不断返回可行割和最优割,然后把这些割添加到松弛主问题中去。

直到子问题提供的上界UB和主问题提供的LB相等,此时得到最优解。(其实此时松弛主问题基本等同于原问题了。)

1.benders的分类

benders目前有三种:
(1)经典的benders分解 Classical Benders 
1960年由benders提出;
主问题是只保留整数变量的松弛主问题,子问题是线性规划问题。


(2)基于整数的benders  Integer-based Benders
1993年由研究VRP的加拿大大佬提出;
子问题不再是线性规划了,因此不能再用对偶线性规划的性质了。
但是仍然可以根据套路(固定公式)添加可行割和最优割。


(3)基于逻辑的benders Logic-based Benders
是最新的,2019年提出的(我不是很确定)?
需要根据问题而定制,不再有固定的公式套用了。

总结一下,前两种是只要符合形式,就可以套用,是通用性框架;而第三种的基于逻辑的benders是定制化方案,不再是通用性框架了。

一般我们经常可以看到的是经典的benders,此处我也结合经典的benders梳理下思路。

2. 经典的benders分解

2.1 经典的benders分解注意点

假设是min问题,y是整数变量,x是实数变量。

再来回顾下benders的主要思路:
(1)将问题分解为master problem松弛主问题(只包含y)和sub problem子问题(只包含x)
(2)主问题给子问题一个的整数解y(此时子问题拿到y以后就变成了一个仅仅包含x的函数),然后子问题返回可行割或最优割,然后把这些割添加到松弛主问题中去。不断循环,直到上下界相等,问题求解结束。

注:

可行割是切除不可行的解;最优割是让解变得更好。

从主要思路里可以看到:

(1)benders是不断添加割的,割就是割平面,也就是不断加约束,也被叫做行生成。利用的原理是,最优解可能不需要全部的约束,可能只需要一部分就可以了。因此我们寻找这些起作用的即可,一个个添加,直到问题求解。

(2)主问题不断给子问题传输整数解y,给了若干次(部分的整数解)就可以求解结束,不必再用枚举的方式枚举所有的整数解。因此本质是部分枚举的方式。

(3)松弛主问题对应的是下界(因为只考虑了部分约束,因此可行域变大,解更好。)而子问题对应的是上界(因为接收的是整数解y,满足整数约束,因此得到的是MIP的可行解,是上界。)

在子问题求解后,更新上界;子问题把割传递给松弛主问题后更新下界(松弛主问题添加割后,即添加了约束,可行域变小,约束得更紧了因此解会变大,即会往上提下界,下界会变大)。

直到上下界相等,问题求解结束,输出最终结果。

2.2 benders分解的核心——子问题和对偶子问题的分析

benders分解算法,学习思考总结,运筹优化理论,优化算法,算法

 原MIP中含有整数变量y,和连续变量x。把整数变量y以及只包含y的相关约束放在松弛主问题里,松弛主问题是一个标准的MIP。子问题中包含连续变量x和常数y,因为y是常数,因此是只包含连续变量x的线性规划LP问题。由于常数y部分,每次松弛主问题给的是不同的常数y,子问题的可行域是不断变化的(Ax≥b-By,常数y是约束右端项是不断变化的)。因此分析子问题不太方便,那么转化为对偶子问题,可行域里没有常数y,跑到目标函数中了。

所以对偶子问题是关键,是benders的核心。

再来梳理下:

(1)子问题和松弛主问题和原问题是一条线;

子问题若无解,那么松弛主问题也无解,原问题也无解;无界也是一样的。

(2)子问题和对偶子问题是一条线。

可以利用对偶的性质。

综上,可以得到下面这张图:

原问题min 松弛主问题min

子问题min

(固定主问题的某些变量,反映在约束中)

对偶子问题max

(固定主问题的某些变量,反映在Obj中)

看成一条线
对偶问题的性质
无解 无解 无解 无解(即可行域为空)
无界 无界 无界
有解 有解 有解 最优解 返回最优割(得到更好的解)
无解 无解 无解 无界 返回可行割(不让对偶子问题无界)

上面这张图是精髓了。一定要理解。

注:需要补充的一点是,当对偶问题无解时,原问题(最开始的初始问题)无解或无界

(1)无界好说。固定某些变量后对应的子问题无界,那么原问题一定也无界。比如我们固定的是y,即存在y∈Y,使得子问题无界,子问题是其中的一种情形,即包含所有情形的原问题(最开始的问题)无界。

(2)当对偶问题对应的子问题无解时,即存在y∈Y,使得原问题无解。原因是在对偶问题中,y只存在于目标函数项,与约束无关。对偶问题无解,即不存在可行域,那么换了y,仍然不存在可行域,即原问题仍然是无解的。也就是说,只要存在一个y∈Y,使得子问题的对偶问题无解(不可行),那么不论y取别的什么值,子问题的对偶问题依旧不可行。那么子问题不可行,最终得到原问题(最开始的问题)不可行。

下面开始分析具体过程,来帮助我们理解上图最后一列上数学表达是怎样的:

(1)对偶子问题无界,那么一定存在极方向u_r,朝着u_r的方向,函数值达到无界。

因为对偶问题是max问题,也就是说函数值可以达到+无穷,换句话说极方向和梯度的夹角<90°,这样才能达到+无穷。

用数学式子表示是,极方向(u_r)与梯度(b-By)点乘>0,此时对偶子问题无界。

我们想让对偶子问题有界,那么需要反其道而行(逆否命题),也就是要求极方向(u_r)与梯度(b-By)点乘≤0,即u_r*(b-By)≤0。该式即为可行割,几何上上讲就是割去不可行的部分。

(2)对偶子问题有界,有解,那么就能达到唯一最优解u*。

注意,这是在松弛主问题给了一个定值y的情况下达到的最优解u*,是原问题的一个子集。那么对于不同的y,对于对偶子问题max问题而言,可以找到更好的q,也就是q≥(b-By)u*+f*y,也就是找到更好的解。

每次主问题给对偶子问题一个y,对偶子问题进行求解,若无界,则返回可行割;若有界返回最优割,更新上界。将割返回给主问题,求解主问题,得到一个新的y,以及更新下界。不断循环,直到上界=下界时停止。

从约束的角度看,因为不断添加可行割,因此被称为行生成。

从变量的角度看,因为是枚举了一部分y,并非把所有的y传递给x,因此核心是部分枚举的思路。

从主问题和子问题的角度来看,原问题是n1+n2维(y为n1维,x是n2维)的问题;而松弛主问题是n1+1(y为n1维,q为1维)维,子问题及其对偶子问题是n2维的问题。也就是说问题的维度得到降低,求解变得容易了。降维思维的应用。


相关资料:
LBBD
• The Benders decomposition algorithm: A literature review, 2017, Ragheb Rahmaniani,
etc., EJOR
• Logic-Based Benders Decomposition for Large-Scale Optimization, 2019, John N.
Hooker, book chapter.
IBBD
• The integer L-shaped method for stochastic integer programs with complete recourse,
1993, Gibert Laporate and Francois V. Louveaux, Operations Research Letters
• Improving the Integer L-Shaped Method, 2016, Gustavo Angulo, etc., INFORMS Journal
on Computing

运筹优化课程 012-Benders Decomposition

Benders decompositon学习笔记记录_可行割与最优割_云湖在成长的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-744324.html

到了这里,关于benders分解算法 逻辑思路整理(加星)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习第J7周:ResNeXt-50算法思考

    目录 一、问题 二、思考分析 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊]  查看j6周代码,思考解决问题。 📌你需要解决的疑问:这个代码是否有错?对错与否都请给出你的思考 📌打卡要求:请查找相关资料、逐步推理模

    2023年04月24日
    浏览(36)
  • 金字塔原理(思考的逻辑)

    前言:前面学习了表达的逻辑,那在表达之前,如何组织内容?如何进行思考?接下来看第二篇—— 思考的逻辑 。 目录 应用逻辑顺序 时间顺序 结构顺序 程度顺序 概括各组思想  什么是概括? 思想表达方式 如何概括? 所有的思想必须具有某种逻辑顺序。 组织在一起的思

    2024年02月11日
    浏览(44)
  • 机器学习实战教程(四):从特征分解到协方差矩阵:详细剖析和实现PCA算法

    方差和标准差的原理和实例演示,请参考 方差 方差(Variance)是度量一组数据的分散程度。方差是各个样本与样本均值的差的平方和的均值: 标准差 标准差是数值分散的测量。 标准差的符号是 σ (希腊语字母 西格马,英语 sigma) 公式很简单:方差的平方根。 协方差 通俗

    2024年02月02日
    浏览(50)
  • 【机器学习】十大算法之一 “逻辑回归”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月10日
    浏览(40)
  • 机器学习算法之-逻辑回归(2)

            特征与标签之间的线性关系极强的数据,比如金融领域中的 信用卡欺诈,评分卡制作,电商中的营销预测等等相关的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更好,也被许多数据咨询公司启用,但逻辑回归在金融领域,尤其是银行

    2024年02月12日
    浏览(49)
  • 机器学习算法之-逻辑回归(1)

            回归树,随机森林的回归,无一例外他们都是区别于分类算法们,用来处理和预测连续型标签的算法。然而逻辑回归,是一种名为“ 回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。要理解逻辑回归从何而来,

    2024年02月12日
    浏览(44)
  • 代数与计算 整理与思考

    课程介绍: (1) 图同构的群论算法。 (2) 匹配的代数算法。 有三个着重关注的问题: (1) 三度图的图同构问题 lec2~4。原论文下载。 (2) 可并行的 (i.e. (text{quasi-NC}) ) 二分图完美匹配构造一组解的问题 lec5~7。原论文地址。 (3) 同构问题相关的交互式证明协议。 前置知识:线性代

    2024年02月11日
    浏览(31)
  • AI小程序的创业方向:深度思考与逻辑引领

    随着人工智能技术的快速发展,AI小程序逐渐成为创业的新热点。在这个充满机遇与挑战的时代,我们有必要深入探讨AI小程序的创业方向,以把握未来的发展趋势。  一、目标市场定位 首先,我们要明确目标市场。针对不同的用户需求,AI小程序可应用于各个领域,如电商、

    2024年04月13日
    浏览(34)
  • 机器学习算法(一): 基于逻辑回归的分类预测

    逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有\\\"回归\\\"两个字,但逻辑回归其实是一个 分类 模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。 而对于

    2024年01月15日
    浏览(49)
  • 机器学习:逻辑回归模型算法原理(附案例实战)

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 订阅专栏案

    2024年01月20日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包