7. 大规模线性规划:行生成和Benders分解

1. 行生成算法

行生成就是指的不断添加约束的算法。
因为在求解矩阵中,一个约束条件对应一行,因此添加约束条件的方法自然叫做行生成算法。相对应的,添加变量的方法就叫做列生成算法。
这一节先看行生成算法,用在求解变量不多,但是约束条件特别多的情况下。

2. Benders分解

Benders分解(Benders Decomposition,BD)的基本思路是:使用子问题(primal problem)来寻找合适的约束不断添加到松弛主问题(relaxed master problem)中。子问题可以给上界(UB),松弛主问题可以给下界(LB),不断迭代就可以逐步找到最优解。具体可以参考论文:http://www.ie.boun.edu.tr/~taskin/pdf/taskin_benders.pdf,这里做一下简单的概述:
问题模型是:

min  cx+fy
s.t.  Ax+By = b
      y∈Y

Benders分解将上述模型拆分为只包含x变量的子问题和只包含y变量的主问题。

2.1. 子问题

子问题(SP)为:
min cx
s.t. Ax = b - By

使用对偶法求解子问题(DSP):
max α(b-By’)
s.t. Aα ≤ c
α无限制

这是个线性规划问题,枚举可行域{α : Aα≤c}的极点(I)和极方向(J)便可以求解了,上面DSP等价于:
min q
s.t. αi (b-By) ≤ q
αj(b-By) ≤ 0
q无限制

2.2. 主问题

定义q(y)为SP问题的最优解,则原问题可以重新写为如下主问题的形式:
min q(y)+fy
s.t. y∈Y

等价于下面的主问题(MP):
min q+fy
s.t. αi (b-By) ≤ q
αj(b-By) ≤ 0
y∈Y,q无限制

2.3. benders分解求解步骤

由于约束条件较多,因此α也是非常多的,直接上所有约束条件求解MP比较困难。因此从少量约束条件的松弛主问题开始,逐步把约束条件加上。

  1. 求解松弛主问题RMP,得到y*∈Y,得到的q*用来更新下界LB。
  2. 将y*代入对偶子问题(DSP)求解。
    2.1. 若DSP存在最优解,假设是在极点α'处取得,则用α'(b-By’)+fy'更新上界UB,并且给主问题MP添加约束条件α' (b-By) ≤ q
    2.2. 若DSP存在无界最优解,假设是在极线α'处取得,则给主问题MP添加约束条件α'(b-By) ≤ 0
  3. 求解新的松弛主问题RMP',回到1进行迭代直至LB ≥ UB。

3. Benders分解例子

在下面的问题中,y∈{0,1}属于复杂约束,因此将原问题按如图的颜色拆分开。


原问题
第一轮迭代

一轮迭代后,UB = 23,LB = 8,还需要继续迭代。后面的求解过程省略。

4. 广义Benders分解

Benders分解法要求子问题必须为线性,而广义Benders分解法(Generalized Benders Decomposition,GBD)针对这个问题作了改进。广义Benders分解的问题模型是:

min  f(x,y)
s.t.  g(x,y) ≤ 0
      y∈Y

由于涉及到了非线性规划,因此要用到拉格朗日法。求解的步骤是:

  1. 选取y'∈Y,求解子问题:
    min f(x,y')
    s.t. g(x,y') ≤ 0
    使用拉格朗日法,令L(x,u,y) = f(x,y) + Σu*g(x,y),使用KKT条件求解。

  2. 如果子问题可行,则用最优解更新UB;并且给主问题添加约束条件(可行割):
    q ≥ L(x',u',y') + L'|y(x',u',y')*(y-y')
    其中x',y'是子问题的变量取值。

  3. 如果子问题不可行,则引入剩余变量s后求解新的子问题:
    min s
    s.t. g(x,y') ≤ s
    同样使用拉格朗日法,求得x'和u',然后给主问题添加约束条件(不可行割):
    s.t. 0 ≥ u'*(g(x',y')+g'|y(x',y')*(y-y'))
    其中x',y'是新的子问题的变量取值。

  4. 求解主问题:
    min q
    s.t. 所有的可行割和不可行割满足条件。
    求得的结果更新LB。

  5. 不断迭代,直到 LB ≥ UB。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 本章涉及到的知识点清单:1、决策面方程2、函数间隔和几何间隔3、不等式约束条件4、SVM最优化模型的数学描述(凸二...
    PrivateEye_zzy阅读 13,178评论 3 10
  • 机器学习是做NLP和计算机视觉这类应用算法的基础,虽然现在深度学习模型大行其道,但是懂一些传统算法的原理和它们之间...
    在河之简阅读 20,475评论 4 65
  • 【概述】 SVM训练分类器的方法是寻找到超平面,使正负样本在超平面的两侧(分类正确性即“分得开”),且样本到超平面...
    sealaes阅读 10,984评论 0 7
  • 不求心,读再多书也没什么卵用知识焦虑症,根本上是行动力不足 不识字者也有大智慧,或者“更有智慧”实胜名 名实不符很...
    咸叔说阅读 424评论 4 9
  • 1 芒果台有一档很火的节目——变形记,农村和城市的小孩的生活互换7天,我曾经也看过几期。无独有偶,英国也有一档类似...
    山谷清风阅读 165评论 0 1