给定线性规划的原始问题, 本文介绍写如何方便地写出其对偶问题.
基本公式
我们先给出互为对偶问题的两种基本形式, 作为后续写对偶问题的基础.
1. 原问题的约束是不等式
2. 原问题的约束是等式
总结
- 原问题的一个约束对应一个对偶变量.
- 对偶变量乘以原问题约束的右端(
b)得到对偶问题的目标.
- 原问题目标的系数
c对应对偶问题约束的右端.
- 最小化对应最大化(反之亦然).
- 如果原问题有等式约束, 对偶变量没有非负要求.
方法
1. 定义对偶变量
对原问题的每一个约束, 定义一个对偶变量
yi. 如果一个约束是等式, 其对偶变量无非负限制.
2. 对偶变量乘约束
把对偶变量乘以原问题的约束. 约束右端
bTy即为对偶问题的目标.
3. 计算
x的系数
上一步把对偶变量乘以原问题的约束之后, 接着计算原问题约束中决策变量
x的系数
f(y)=ATy, 从而得到对偶问题的约束
f(y)≤c (假设原问题是最小化问题).
例子
#####1. 矩阵形式
原问题
min s.t. cTxAx≥bBx=dx≥0→α→β
定义对偶变量
α,
β, 分别对应原问题的约束
Ax≥b和
Bx=d.
- 用
bT,dT乘以
α,
β然后求和得到对偶目标:
bTα+dTβ
- 用
AT,BT 乘以
α,β然后求和得到约束:
ATα+BTβ≤c
-
β对应等式约束, 因此不要求非负
对偶问题
min s.t. bTα+dTβATα+BTβ≤cα≥0
2. 非矩阵形式
原问题
min s.t. i=1∑nj=1∑nli,jxi,jj=1∑nxi,j−j=1∑nxj,i=0,∀i=1,nj=1∑nx1,j−j=1∑nxj,1=1j=1∑nxn,j−j=1∑nxj,n=−1xi,j≥0,∀i,j→yi→y1→yn
如上面所示, 我们定义对偶变量
yi,
i=1,2,...,n. 原问题的约束是等式约束, 因此不要求
yi非负. 用
yi乘以每个等式, 得到对偶问题的目标:
(1,0,...,0,−1)⋅y=y1−yn. 下面计算对偶问题的约束:
- 给定
i,j, 计算原问题约束中
xi,j的 系数之和, 记作
fij(y).
- 得到对偶问题的约束:
fij(y)≤lij
为了方便描述, 我们使用新的下标
s,t, 并计算
xs,t的系数. 详细的计算过程如下:
- 第一组约束:
(a):∑j=1nyi⋅xi,j−∑j=1nyi⋅xj,i=0. 注意
i=2,3,...,n−1.
- 当
i=s时,
xs,j的系数是
ys,
∀j
- 当
i=t时,
xj,t的系数是
−yt,
∀j
-
xs,t的系数之和是
ys−yt. 注意:
s,t=1,n.
- 得到对偶问题的约束:
xs,t≤ls,t,
∀s,t=1,n
- 第二组和第三组约束:
(b):∑j=1ny1⋅x1,j−∑j=1ny1⋅xj,1=y1
(c):∑j=1nyn⋅xn,j−∑j=1nyn⋅xj,n=−yn
- 当
s=1,t=n时,
x1,n的系数之和为
y1−yn (参考
(b),(c))
- 当
s=1,t=1时,
x1,1的系数之和为
y1−y1=0 (参考
(b))
- 当
s=1,
t=2,...,n−1时,
x1,t的系数之和为
y1−yt (参考
(b),(a))
- 当
s=n,t=1时,
xn,1的系数之和为
yn−y1 (参考
(b),(c))
- 当
s=n,t=n时,
xn,n的系数之和为
yn−yn (参考
(c))
- 当
s=n,t=2,...,n−1时,
xn,t的系数之和为
yn−yt (参考
(c),(a))
综合上面所有对偶问题的约束, 我们得到:
ys−yt≤ls,t,∀s,t=1,2,...,n.
对偶问题
max s.t. y1−ynyi−yj≤li,j,∀i,j=1,2,...,n.
练习
Ex1
原问题
min s.t. i=1∑mj=1∑nci,jxi,j+i=1∑mfiyii=1∑mxi,j=1,∀jxi,j≤yi,∀i,jxi,j≥0,yi≥0,∀i,j→αj→βi,j
对偶问题
max s.t. j=1∑nαjαj−βi,j≤ci,j,∀i,jβi,j≤fi,∀i,jβi,j≥0,∀i,j
Ex2
原问题
max s.t. e∈E∑wexee∋v∑xe=1,∀v∈V→yvxe≥0
对偶问题
min s.t. v∈V∑yvyu+yv≥we,∀e∈E, e=(u,v)