第二章 对偶问题
对偶问题的提出
我们可以先通过一个常识来理解“对偶”的含义和特征:
矩形中,周长一定,正方形的面积最大;面积一定,正方形的周长最小。
在许多课本中,都用如下的例子来引出对偶理论:
企业A拥有m种资源(有m 个约束),可以消耗资源生产n 种产品(有n 个变量),目标是最大化总收入;那么对偶问题就是,企业B想要收购这些资源,需要确定m 种资源的报价(有m 个变量),目标是最小化总成本,但企业A只有在卖资源的收益不低于卖产品的时候才会同意卖资源(n个约束)。
而从数学角度,对偶问题可以被理解为**寻找原问题目标函数上界(或下界)**的问题。
对偶问题用途
-
原问题约束多、变量少时,求解对偶问题能够降低计算时间
使用单纯形法时,如果原问题约束多变量少,转换成对偶问题,就是约束少变量多。回顾单纯形法的原理,约束的减少能够有效降低计算时间。
-
帮助证明原问题无解
类似“证明无罪比证明有罪更难”,要证明原问题有解,只需要找出一个满足约束的点,但是想证明原问题无解,总不能遍历所有的点来证明吧?而对偶问题的出现为证明原问题无解提供了思路。
-
便于进行敏感度分析
除了得到最优解,我们可能还关注"如果某些已知条件发生变化,对最优解的影响程度如何",这就是敏感度分析。对偶问题和敏感性分析息息相关。一是增加敏感度分析的直观程度(例如,对偶问题的最优解就是原问题约束的影子价格),二是在改变某些条件导致原问题无可行解时,可以借助仍然有可行解的对偶问题来分析。
对偶问题的一般形式
若原问题为 LP1
max z=CXs.t.{AX≤bX≥0
则其对偶问题定义为 LP2
min w=YTbs.t.{ATY≥CTY≥0
若原问题并非 LP1 形式,则我们可以首先将其转化为 LP1 形式,然后按照前面定义即可计算出其对偶问题。
i=1∑naijxj=bi ⇒ ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧i=1∑naijxj≤bii=1∑n−aijxj≤−bii=1∑naijxj≥bi ⇒ i=1∑n−aijxj≤−bi
也可以用如下方法进行变换:

举个例子:
原问题
min z=s.t.= 7x1+4x2−3x3⎩⎪⎪⎨⎪⎪⎧−4x1+2x2−6x3≤24−3x1−6x2−4x3≥15 5x2+ x3=30x1≤0,x2无约束,x3≥0
首先把 C 和 b 互换,A 转置
max w=s.t. 24 15 30⎩⎨⎧−42−6−3−6−405174−3
因为是最小化转为最大化问题,所以约束条件和原问题变量的符号相反(也就是表格中从右往左),变量和原问题约束条件符号相同:
KaTeX parse error: Undefined control sequence: \mbox at position 164: …le0,y_2\ge0,y_3\̲m̲b̲o̲x̲{无约束}
\end{matr…
如果原问题改为最大化,那么相应的对偶问题是:
min w=s.t. 24y1+15y2+30y3⎩⎪⎪⎨⎪⎪⎧−4y1−3y2 ≤72y1−6y2+5y3=4−6y1−4y2+y3≥3y1≥0,y2≤0,y3无约束
对偶问题的基本性质
1.弱对偶性:如果X是原问题的可行解,Y是对偶问题的可行解,则 CX≤YTb
证明:(注意这些矩阵乘积都是标量)YTb≥YTAX=(YTAX)T=XTATY≥XTCT=CX
推论:
-
最优性:如果X是原问题的可行解,Y是对偶问题的可行解, 且 CX=YTb,则X和Y分别为原问题和对偶问题的最优解.
-
无界性:如果原问题(对偶问题) 具有无界解, 则其对偶问题(原问题) 无可行解.
2.强对偶性:如果原问题有最优解,则其对偶问题也一定具有最优解,且 max z=min w
证明:设B为原问题标准形式的可行解基,且其基解为最优解,则由最优性条件应有检验数全部小于零:
−CBB−1≤0,θ=C−CBB−1A≤0,
从而可得
ATB−TCBT≥CT,B−TCBT≥0,
所以 BTCBT是对偶问题的一个可行解,且
(B−TCBT)Tb=CBB−1b=max z
由最优性可知,B−TCBT为对偶问题的最优解,且 max z=min w。
3.互补松弛性:在线性规划问题的最优解中,如果某一约束条件的对偶变量值非零,则该约束条件严格取等,反之,如果约束条件取不等式,则对应的对偶变量一定为0,可以表示为 YT(b−AX)=0。
证明:由强对偶性可知 CX=YTb,又因为 CX=XTCT≤XTATY=YTAX≤YTb
可得 YTAX=Yb,于是 YT(b−AX)=0
4.基解互补性 原问题及其对偶问题之间存在一对互补的基解,其中原问题的松弛变量对应对偶问题的变量对偶问题的剩余变量对应原问题的变量.这些互相对应的变量如果在一个问题的解中是基变量则在另一个问题的解中是非基变量;将这对互补的集解分别带入原问题和对偶问题的目标函数中有 z=w
影子价格
我们考查如下对偶问题:
max z=CXP{AX≤bX≥0min w=YTbD{ATY≤CTY≥0
定义:若 P 的某个约束条件的右端项常数 bi (第 i 种资源的拥有量)增加一个单位时,所引起目标函数最优值 z∗ 的改变量称为第 i 种资源的影子价格,其值等于 D 问题中对偶变量 yi
假设 (x1∗,x2∗,…,xn∗) 和 (y1∗,y2∗,…,yn∗) 分别为原问题和对偶问题的最优解,由对偶问题的基本性质有 z∗=∑cjxj∗=∑biyi∗,因为某个Δbi=1,所以最优解的的变化Δz∗=yi∗,也就是对偶变量yi就是第 i 个产品的影子价格 ∂bi∂z∗=yi∗
影子价格是在资源最优利用条件下对单位资源的估价,这种估价不是资源实际的市场价格。影子价格是一种机会成本。
我们假设某种资源的单位市场价是 mi,则
- 当 yi∗>mi 时,企业购进这种资源后增加的利润多于资源收购价,单位纯利为 yi∗−mi,有利可图;
- 如果 yi∗<mi ,则企业会选择有偿转让这种资源,可获单位纯利 yi∗−mi ,否则,企业无利可图,甚至亏损**。**
我们根据互补松弛性:YT(b−AX)=0,可以进一步得出:
- 如果生产过程中如果某种资源未得到充分利用时(资源约束不严格取等),该种资源的影子价格为0(对偶问题的最优解对应变量为0);
- 若当资源的影子价格不为0时,表明该种资源在生产中已耗费完(资源约束严格取等)。
影子价格对单纯形表计算的解释
在单纯性表中的检验数为 θj=cj−CBB−1Pj=cj−∑aijyi,其中 cj 表示第 j 种产品的出售价;∑aijyi 表示生产该种产品所消耗的各项资源的影子价格的总和,即产品的隐含成本。
当产值大于隐含成本时,即θj>0,表明生产该项产品有利,可在计划中安排。
当产值小于隐含成本时,即θj<0,表明用这些资源生产别的产品更有利,不应生产这些产品。
对偶单纯形法
对偶单纯形法是求解线性规划的另一个基本方法。它是根据对偶原理和单纯形法原理而设计出来的,因此称为对偶单纯形法。对偶单纯性法提高了对求解线性规划问题的效率,它通常具有以下优点:
- 初始基解可以是非可行解, 当检验数都为负值时, 就可以进行基的变换, 不需加入人工变量, 从而简化计算;
- 对于变量多于约束条件的线性规划问题,用对偶单纯形法可以减少计算量,在灵敏度分析及求解整数规划的割平面法中,有时适宜用对偶规划单纯形法。
回顾我们在用单纯形法解决线性规划问题时的方法:
我们需要先找到一组基可行解,这就要求 b≥0,然后在保持 b≥0的前提下不断转换可行解直到最优。
而在对偶单纯形方法中,我们要求:所有检验数 θ<0,但是 b 无要求。这时我们希望通过转化可行解使得b=(b1,b2,…,bm)T 更接近 ≥0,同时保持 θ≤0,直到b≥0,找到最优解。
对偶单纯形法的计算步骤
-
确定换出基变量
对于小于零的 bi,令 br=min{bi} 所对应的变量 xr 为换出基变量。
-
确定换入基变量
- 为使迭代后的表中第 r 行基变量为正值,因而只有对应 arj<0 (j=m+1,…,n)(也就是系数均为负数)的非基变量才可以考虑。
- 为使迭代后表中对偶问题的解仍为可行解,令 θ=min{arjθj∣∣∣∣ arj<0}=arsθs,称 ars为主元素,xs 为换入基变量
-
用换入基变量替换换出基变量,得到一个新的基
进行初等行变换后,检查所有bi是否≥0
-
重复上述三步,直到 b≥0
单纯形表如下:
|
c |
c1 … … cm cm+1 … … cn |
|
CB |
XB |
x1 … … xm xm+1 … … xn |
b |
c1 |
x1 |
1 … … 0 a1,m+1 …… a1n |
b1 |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
cm |
xm |
0 … … 1 am,m+1 …… amn |
bm |
|
σ |
0 … … 0 σj=cj−∑ciaij |
|
|
θ=arjθj if arj<0
|
− … … − ar,m+1θm+1 …… arnθn |
|
单纯形法与对偶单纯形法
|
单纯形法 |
对偶单纯形法 |
原理 |
保证原问题是可行解的情况下向对偶问题可行的方向迭代 |
保证对偶问题是可行解的情况下向原问题可行的方向迭代 |
限制条件 |
单纯形表的b≥0(找到基可行解) |
检验数 σ≤0
|
最优解判断 |
看非基变量的检验数是否都≤0
|
看对偶单纯形表的b是否都≥0
|
变量替换 |
先确定换入基变量,最小换最大; 检验数σj最大的非基变量为换入变量; ajkbj最小的基变量为换出变量。 |
先确定换出变量,最小换最小 bj 最小的对应的基变量为换出变量; arjθj 最小非基变量为换入变量。 |
灵敏度分析
在前面的线性规划问题中,我们都是假定问题中的A,b,C是已知的。但是实际上这些参数往往是一些估计和预测的数字,如市场条件发生变化,C 的值就会变化,A 会随着工艺技术条件的改变而改变,而 b 则是根据资源投入后能产生多大经济效果来决定的一种决策选择。
因而一个自然的问题就是当这些参数中的一个或者几个发生变化时,问题的最优解会有什么变化,或者这些参数在一个多大的范围内变化时,问题的最优解或者最优基不变,这就是灵敏度分析所要解决的问题。
在使用单纯形法解决线性规划问题时,我们需要先通过初等行变换基变量对应的子矩阵化为单位矩阵,因此存在一个方阵 D 使得 D(A b)=(A′ b′),易得 D=B−1,一般来讲,我们考虑如下几种问题的变化:
- 当某个 cj 变化时,A′ b′无变化,非基变量的检验数Δσj=−aijΔcj,要让最优解不发生变化,我们要求所有 σj∗=σj+Δσj≤0
- 当某个 bj 变化时,Δb′=B−1Δb,要让最优解不发生变化,我们要求b∗=b+B−1Δb≥0
- 增加某个变量 xj,对应的系数列向量为 Pj,则单纯形表中需要新添加一列Pj′=B−1Pj,然后计算相应的检验数,继续用单纯形法计算最优解
- 增加一个约束条件,新产生一个剩余变量或者松弛变量,或者用前面学过的方法添加人工变量,将新变量加入基变量,重整单纯性表,根据 b 和 σ 的情况选择方法求出最优解。
例题
有空再补