运筹系列26:对偶问题和对偶单纯形法

本文深入解析了对偶问题的概念,包括对偶问题的一般定义、线性规划的对偶问题推导,以及对偶问题的性质。通过实例演示如何快速写出对偶问题,并讨论了对偶单纯形法在求解线性规划问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 对偶问题简介

1.1 一般定义

考虑一般性优化问题:min⁡x∣c(x)≥0f(x)\min_{x|c(x)\ge 0} f(x)minxc(x)0f(x)
拉格朗日法可以将原问题变换为:min⁡x∣c(x)≥0max⁡λ≥0(f(x)−λc(x))\min_{x|c(x)\ge 0}\max_{\lambda\ge 0}(f(x)-\lambda c(x))minxc(x)0maxλ0(f(x)λc(x))
将min和max做一个翻转,称做原问题的对偶问题
max⁡λ≥0min⁡x∣c(x)≥0(f(x)−λc(x))\max_{\lambda\ge 0}\min_{x|c(x)\ge 0}(f(x)-\lambda c(x))maxλ0minxc(x)0(f(x)λc(x))
其中λ\lambdaλ称作对偶变量。

1.2 线性规划的对偶问题

原问题min⁡z=cx\min z=cxminz=cx
s.t. Ax≥bAx\ge bAxb

我们按照上面的步骤,原问题等价于min⁡x∣Ax≥bmax⁡y≥0(cx−y(Ax−b))\min_{x|Ax\ge b}\max_{y\ge 0}(cx-y (Ax-b))minxAxbmaxy0(cxy(Axb)),翻转得到:max⁡y≥0min⁡x∣Ax≥b(cx−y(Ax−b))\max_{y\ge 0}\min_{x|Ax\ge b}(cx-y (Ax-b))maxy0minxAxb(cxy(Axb))
由KKT条件,我们有c−yA=0c-yA=0cyA=0,得到对偶问题:
max⁡bTy\max b^TymaxbTy
s.t. ATy=cTA^Ty= c^TATy=cT
y≥0y\ge 0y0

下面是一个例子:
在这里插入图片描述
牢记对偶问题推导过程,快速写出对偶问题:左边的问题等价于
max⁡xmin⁡y(4x1...)+y1(15−5x1...)+...+y6x1+...\max_x\min_y(4x_1...)+y_1(15-5x_1...)+...+y_6x_1+...maxxminy(4x1...)+y1(155x1...)+...+y6x1+...
等价于
min⁡y≥0max⁡x(15y1+...)+x1(4−5y1...+y6)+...\min_{y\ge0}\max_x(15y_1+...)+x_1(4-5y_1...+y_6)+...miny0maxx(15y1+...)+x1(45y1...+y6)+...
等价于
min⁡y15y1+...\min_y 15y_1+...miny15y1+...
s.t.
4−5y1...+y6=04-5y_1...+y_6=045y1...+y6=0,等价于4−5y1...≤04-5y_1...\le045y1...0(这里是重点,注意y6y_6y6的符号)

yi≥0y_i\ge0yi0

对偶问题的形式多样,关键几点如下:

  1. 目标函数->约束rhs:max和min互换,c和b互换。注意max问题以rhs为准,min问题以lhs为准。
  2. 变量约束->约束符号:变量和约束的乘积要求>=0,比方上面的例子中,原问题变量约束>=0,对应对偶约束符号>=0;假若原问题变量无约束,对应对偶约束符号=0;
  3. 约束符号->变量约束:其实还是要求变量和约束的残差的乘积要求>=0,只不过因为目标函数是max问题,因此需要从约束rhs的角度来看的,所以约束符号也需要从rhs角度来看,所以在上面的例子中,原问题约束条件虽然时<=,但是从rhs的角度来看是>=,因此对应对偶变量>=0;假若原问题约束条件为=,从rhs角度看还是=,因此对应对偶变量无约束。

总结一下:
max⁡A1x≤b1,A2x=b2,x≥0cx\max_{A_1x\le b_1,A_2x= b_2,x\ge 0}cxmaxA1xb1,A2x=b2,x0cx的对偶问题为
min⁡A′y≥c,y1≥0b1y1+b2y2\min_{A'y\ge c,y_1\ge 0}b_1y_1+b_2y_2minAyc,y10b1y1+b2y2

2. 对偶问题的性质

  1. 对称性:对偶问题的对偶问题是原问题
  2. 弱对偶定理:原问题(primal)和对偶问题(dual)的可行域记作zpz_pzpzdz_dzd,若x∈zp,y∈zdx\in z_p,y\in z_dxzp,yzd,则对于最小化问题,有cTx≤bTyc^Tx\le b^T ycTxbTy。等号当且仅当x,yx,yx,y都是各自问题的最优解时取得。
  3. 强对偶定理:若原问题有有限最优解,那么对偶问题也有有限最优解,且最优解相等。
  4. 互补松弛定理:若x∈zp,y∈zdx\in z_p,y\in z_dxzp,yzd,则下面两者等价:(a) x,yx,yx,y都是各自问题的最优解;(b) yT(Ax−b)=0y^T(Ax-b)=0yT(Axb)=0并且(yTA−cT)x=0(y^TA-c^T)x=0(yTAcT)x=0

3. 对偶单纯形法

对偶单纯形法和单纯形法完全可以转置过来看待。直观来看,原问题是保持b≥0b\ge 0b0,pivoting使得c≥0c\ge 0c0;而对偶问题是保持c≥0c\ge 0c0,pivoting使得b≥0b\ge 0b0。由于原问题一般约束比变量少,所以对偶问题很容易给出初始可行解,不需要使用两阶段法。
对于MILP问题,商用求解器也默认使用对偶单纯形法求解其松弛线性规划问题。变量分支后,左右两个节点和父节点的差别在于多了一个约束条件,两个节点可以从父节点的最优解出发去求解,能很大程度提高求解速度。我们来推导一下:
假设原问题是:
min⁡cTx\min c^TxmincTx
Ax=bAx=bAx=b
x≥0x\ge 0x0
xi∈Z,∀i∈Ix_i\in Z,\forall i\in IxiZ,iI
假设父节点的基为BBB,进行分支的变量为xj=βjx_j=\beta_jxj=βj,先看左节点,添加的约束条件为:
xj+s=⌊βj⌋x_j+s = \lfloor \beta_j\rfloorxj+s=βj(xB,s)(x_B,s)(xB,s)构成了一组基变量,并且s=⌊βj⌋−βj<0s = \lfloor \beta_j\rfloor-\beta_j<0s=βjβj<0,这组基对于原问题是不可行的,但是对偶问题是可行的~因此可以用对偶单纯形法去求解分支问题。

我们来看一个例子做对比:
在这里插入图片描述
化为标准型:
在这里插入图片描述
没有直观的初始可行解,因此使用两阶段法,添加人工变量后进行求解;
对偶单纯形法则不需要使用两阶段法,由于对偶后yyy变为无约束变量,因此很容易求得初始解为y1=y2=0y_1=y_2=0y1=y2=0。两者的对比如下:
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值