Benders分解的理解

Benders分解

基本描述

原问题的矩阵表示形式:
M i n i m i z e   z = c T x + f T y s u b j e c t   t o :   A x + B y = b x ≥ 0 , y ∈ Y   ⊆ R q \begin{array}{r}\mathrm{Minimize~z=c^T x+f^T y}\\\mathrm{subject~to:~Ax+By=b}\\\mathrm{x\geq0,y\in Y~\subseteq\mathbb{R^q}}\end{array} Minimize z=cTx+fTysubject to: Ax+By=bx0,yY Rq
主问题(master problem):
Minimize z= f T y + q ( y ) subject to: y ∈ Y \begin{array}{l}\text{Minimize\quad z= f}^\mathrm{T}\mathrm{y}+\mathrm{q}(\mathrm{y})\\\text{subject to: y}\in\mathrm{Y}\end{array} Minimizez= fTy+q(y)subject to: yY
式中 q ( y ) q(y) q(y)是在y给定时子问题的最优值

子问题(subproblem)
Minimize c T x subject to: A x = b − B y x ≥ 0 \begin{array}{c}\text{Minimize c}^\mathrm{T}\text{x}\\\text{subject to: A}\mathrm{x}=\mathrm{b}-\mathrm{B}\mathrm{y}\\\mathrm{x}\geq0\end{array} Minimize cTxsubject to: Ax=bByx0
子问题的对偶问题为:
max ⁡ u { ( b − B y ) T u : A T u ≤ c , u ∈ R + p } \max_u\left\{(b-By)^Tu:A^Tu\leq c,u\in R_+^p\right\} umax{(bBy)Tu:ATuc,uR+p}

子问题有解策略

若子问题无界,则原问题无界。在子问题有界时,我们可以通过求解子问题的对偶问题来求解 q ( y ) q(y) q(y)

注意,在子问题的对偶问题中,不看目标函数,只看约束条件: A T u ≤ c , u ∈ R + p A^Tu\leq c,u\in R_+^p ATuc,uR+p,可行空间中存在多个极点 ( u ) (u) (u),这些极点中的一个: u ∗ u^* u是全局最优的 y ∗ y^* y对应的极点。这些极点中的另一个** u ˉ \bar{u} uˉ是当前的y对应的极点。由于对偶问题是一个max问题,对 y ∗ y^* y来说, u ˉ \bar{u} uˉ**计算出的目标值一定小于等于 u ∗ u^* u计算出的目标值:
( b − B y ∗ ) T u ∗ + f T y ∗ ≥ ( b − B y ∗ ) T u ˉ + f T y ∗ (\mathbf{b}-B\mathbf{y^*})^{\mathrm{T}}\mathbf{{u}^*}+\mathbf{f}^{\mathrm{T}}\mathbf{y^*}\geq (\mathbf{b}-B\mathbf{y^*})^{\mathrm{T}}\mathbf{\bar{u}}+\mathbf{f}^{\mathrm{T}}\mathbf{y^*} (bBy)Tu+fTy(bBy)Tuˉ+fTy
这就相当于给出了 z z z的一个下界。(所有依赖于线性规划的最优解一定取在顶点上)
z ≥ ( b − B y ) T u ˉ + f T y z\geq (\mathbf{b}-B\mathbf{y})^{\mathrm{T}}\mathbf{\bar{u}}+\mathbf{f}^{\mathrm{T}}\mathbf{y} z(bBy)Tuˉ+fTy
将此约束加入到主问题中,在最小化问题中,下界直接限制了y的变化范围,让其离真实的y越来越近。

子问题无解策略

如果子问题无解,说明取得y不合理,需要对y加以限制。

根据弱对偶原理,原问题 与 对偶问题 ,

一个无界 , 另一个肯定不可行 ;

一个不可行 , 另一个不一定可行 , 有两种情况 ① 无界解 ② 无可行解 ;

如果子问题的对偶问题不可行,无论y怎么调整子问题的对偶问题都不可行;如果子问题的对偶问题无界,调整y可以使其可行。

基于此,采用加入极方向约束进行限制:
v t ( b − B y ) ≤ 0 v^t\left(b-By\right)\leq0 vt(bBy)0
其中 v t v^t vt是对偶问题的极方向。其中极方向集合为

U = { v ∈ R + p :   A T v ≥ c } U=\left\{v\in R_{+}^{p}:\:A^{T}v\geq c\right\} U={vR+p:ATvc}
通过此方法可以限制y让其在此极方向上有解。

收敛条件

上界:

子问题的解加主问题的解,y是这一轮迭代求解出的值。
U B = ( b − B y ) T u ˉ + f T y UB=(\mathbf{b}-B\mathbf{y})^{\mathrm{T}}\mathbf{\bar{u}}+\mathbf{f}^{\mathrm{T}}\mathbf{y} UB=(bBy)Tuˉ+fTy

下界:

每次迭代主问题的解,主问题如下所示:
min ⁡   z v t ( b − B y ) ≤ 0 z ≥ ( b − B y ) T u ˉ + f T y \min~z\\ v^t\left(b-By\right)\leq0\\ z\geq (\mathbf{b}-B\mathbf{y})^{\mathrm{T}}\mathbf{\bar{u}}+\mathbf{f}^{\mathrm{T}}\mathbf{y} min zvt(bBy)0z(bBy)Tuˉ+fTy

算法流程:

  • step1:初始化,初始化上下界 U B : = + ∞ , L B : = − ∞ UB := +\infty, LB := -\infty UB:=+,LB:=

  • step2:若 U B − L B > ϵ UB-LB>\epsilon UBLB>ϵ 则进入Step 3,否则直接输出最优解

  • step3:求解对偶问题,得到最优解 u ˉ \bar{u} uˉ

  • step4:若对偶问题无界,则添加约束 v t ( b − B y ) ≤ 0 v^t\left(b-By\right)\leq0 vt(bBy)0到主问题中

  • step5:若对偶问题有解,则添加约束 z ≥ ( b − B y ) T u ˉ + f T y z\geq (\mathbf{b}-B\mathbf{y})^{\mathrm{T}}\mathbf{\bar{u}}+\mathbf{f}^{\mathrm{T}}\mathbf{y} z(bBy)Tuˉ+fTy到主问题中,更新 U B = min ⁡ { U B , ( b − B y ) T u ˉ + f T y } UB= \min\{UB,(\mathbf{b}-B\mathbf{y})^{\mathrm{T}}\mathbf{\bar{u}}+\mathbf{f}^{\mathrm{T}}\mathbf{y}\} UB=min{UB,(bBy)Tuˉ+fTy}

  • step6:求解主问题得到最优解 y n e w , η n e w y_{new},\eta_{new} ynew,ηnew,然后更新 L B : = f T y n e w + η n e w LB:=f^{T}y_{new}+\eta_{new} LB:=fTynew+ηnew,返回step 2

参考:

Benders 分解

Benders decomposition - Wikipedia

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值