如何构造线性规划的对偶问题(How to take the Dual of a Linear Program)

如何构造线性规划的对偶问题

原文:《How to take the Dual of a Linear Program》by Sebastien Lahaie


0、前言

这篇笔记的目的有:(1)解释如何判断一个问题是不是线性规划(2)讲解如何构造一个线性规划的对偶问题,以及(3)列举出关于一个线性规划和它的对偶问题的基础结论。这篇笔记不提供任何证明过程,也不解释任何线性规划对偶性中隐含的深层几何意义。这篇笔记的主要目标是解释机械化地构造对偶问题的流程细节。
除了本文提到的构造方法之外,还有许多其他的方法,但这是我最喜欢的方法。我发现当在几个问题上尝试过这个方法后,它还是很容易被记住的。这个方法可能比其他方法要慢要乏味,但它容易记住,且中间步骤可以得到一些有用的副产品。

1、公式

线性规划是一种最优化问题:在定义域中求解目标函数(objective function)的最大或最小值问题。其中,该目标函数是线性的,定义域(或称可行集合)是由一系列线性约束确定的。本文不会给出线性规划的一般公式,而是以一个例子来讲解。当用这个例子过一遍流程之后,你将对“什么是一个线性规划”有清晰的理解。

maxx10,x20,x3v1x1+v2x2+v3x3(3932) (3932) max x 1 ≥ 0 , x 2 ≤ 0 , x 3 v 1 x 1 + v 2 x 2 + v 3 x 3

s.t.a1x1+x2+x3x1+a2x2a3x3b1=b2b3(3951)(3952)(3953) (3951) s . t . a 1 x 1 + x 2 + x 3 ≤ b 1 (3952) x 1 + a 2 x 2 = b 2 (3953) a 3 x 3 ≤ b 3

这里的变量有 x1,x2,x3 x 1 , x 2 , x 3 。其余几项是常数(例如 v1,a2,b3 v 1 , a 2 , b 3 )。线性规划包括有目标函数 (1) ( 1 ) 以及一系列的等式或不等式约束 (2-4) ( 2 - 4 ) 。目标函数为:

f(x)=v1x1+v2x2+v3x3 f ( x ) = v 1 x 1 + v 2 x 2 + v 3 x 3

它是一个线性方程。也就是说,对于向量 x1 x 1 x2 x 2 ,实常数 c1 c 1 c2 c 2 ,有 f(c1x1+c2x2)=c1f(x1)+c2f(x2) f ( c 1 x 1 + c 2 x 2 ) = c 1 f ( x 1 ) + c 2 f ( x 2 ) 。这对于 (1) ( 1 ) 来说是显然成立的。目标函数可以是最大化或最小化问题,而这个例子是最大化问题。
每个约束条件的左边也都是线性方程,右边都是常数。(遇到右边含有变量的问题时,你可以通过移项来让右边变成常数。)在线性规划问题中,不能存在严格不等式。也就是说,形如 x1+x2<3 x 1 + x 2 < 3 的约束条件是不合法的。
那些限制每个变量是非负、非正或者无限制(unrestricted)的约束条件,称为特殊(special)约束。这种约束一般会列在 max m a x min m i n 下面。形如 x12 x 1 ≥ 2 这样的不是特殊约束,而 x10 x 1 ≥ 0 这样的就是。在我们这个例子中, x1 x 1 是非负的, x2 x 2 是非正的, x3 x 3 是无限制的(那个条件用于说明这点)。

2、原问题和对偶问题

上述例子 (1) ( 1 ) 通常称为原问题(primal)。对于任意一个线性规划来说,都有一个与之相关联的对偶问题(dual)。从原问题推导出对偶问题,完全是机械化的操作流程。下面就以例子 (1) ( 1 ) 为例进行推导。整个推导过程包括七个步骤,前两步是将原问题转化为一个“标准格式”。

Step 1. 将目标函数改写为最小化问题。
例子 (1) ( 1 ) 是一个最大化问题,因此将它改写为:

minx10,x20,x3v1x1v2x2v3x3 min x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3

如果一个解能最大化该目标函数,也就能最小化该目标函数的取反值,因此这个操作并不会影响到最终的解集。

Step 2. 将不等式约束改写为“小于等于”的形式,且将每个约束条件的常数移项,使得式子右边为0。
经过这个操作之后,例子 (1) ( 1 ) 变成:

minx10,x20,x3v1x1v2x2v3x3 min x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3

s.t.a1x1+x2+x3b1x1+a2x2b2a3x3+b30=00(3975)(3976)(3977) (3975) s . t . a 1 x 1 + x 2 + x 3 − b 1 ≤ 0 (3976) x 1 + a 2 x 2 − b 2 = 0 (3977) − a 3 x 3 + b 3 ≤ 0

Step 3. 给每个不等式约束定义对应的非负对偶变量,给每个等式约束定义无约束的对偶变量。
对于约束 (5) ( 5 ) (7) ( 7 ) 分别定义变量 λ10 λ 1 ≥ 0 λ30 λ 3 ≥ 0 。对于约束 (6) ( 6 ) 定义无约束变量 λ2 λ 2

Step 4. 移除每个约束条件,并将 ()() ( 对 偶 变 量 ) ∗ ( 约 束 条 件 的 左 边 ) 到目标函数中。使用对偶变量作为新的变量构造一个最大化问题。
具体到例子上,第一个约束 (5) ( 5 ) 被移除后,将下面一项到目标函数上。

λ1(a1x1+x2+x3b1) λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 )

对每个约束条件都做同样的操作之后(除了特殊约束外),并将对偶变量作为新的变量得到一个最大化问题,有:
maxλ10,λ2,λ30minx10,x20,x3v1x1v2x2v3x3 max λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 min x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3

+λ1(a1x1+x2+x3b1)+λ2(x1+a2x2b2)+λ3(a3x3+b3)(4005)(4006)(4007) (4005) + λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) (4006) + λ 2 ( x 1 + a 2 x 2 − b 2 ) (4007) + λ 3 ( − a 3 x 3 + b 3 )

可将该问题想象成一个“双人游戏”,包括一个“外场玩家”和一个“内场玩家”。外场玩家先行一步,给 λ1 λ 1 λ2 λ 2 λ3 λ 3 分别选择一些值(当然要满足那些特殊约束啦)。内场玩家在固定这些值后,给 x1 x 1 x2 x 2 x3 x 3 选择一些值,使得目标函数最小化。内场玩家操作之后,外场玩家又会更新 λ1 λ 1 λ2 λ 2 λ3 λ 3 的值,使得内场玩家给的最小值尽可能大。

Step 5. 现在目标函数中有许多项形如 ()() ( 对 偶 变 量 ) ∗ ( 带 有 原 变 量 的 表 达 式 ) ,加上其他只与原变量有关的项。改写该目标函数,使得其包含一些项形如 ()() ( 原 变 量 ) ∗ ( 带 有 对 偶 变 量 的 表 达 式 ) ,加上其余只与对偶变量有关的项。
做完上述操作之后,得到:

maxλ10,λ2,λ30minx10,x20,x3b1λ1b2λ2b3λ3 max λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 min x 1 ≥ 0 , x 2 ≤ 0 , x 3 − b 1 λ 1 − b 2 λ 2 − b 3 λ 3

+x1(a1λ1+λ2v1)+x2(λ1+a2λ2v2)+x3(λ1a3λ3v3)(4008)(4009)(4010) (4008) + x 1 ( a 1 λ 1 + λ 2 − v 1 ) (4009) + x 2 ( λ 1 + a 2 λ 2 − v 2 ) (4010) + x 3 ( λ 1 − a 3 λ 3 − v 3 )

做这步操作的时候要十分谨慎,如果你弄错了一个符号,或者漏掉了任何一项,不仅最终的对偶结果会出错,并且会变得非常具有误导性、迷惑性。

Step 6. 移除形如 ()() ( 原 变 量 ) ∗ ( 带 有 对 偶 变 量 的 表 达 式 ) 的项,并按照下述规则添加新的约束条件:

  • 0 表 达 式 ≥ 0 ,如果该原变量是非负的
  • 0 表 达 式 ≤ 0 ,如果该原变量是非正的
  • =0 表 达 式 = 0 ,如果该原变量是无限制的

这一步并不难记,因为它的原理非常直观。例如 (11) ( 11 ) 项:

x1(a1λ1+λ2v1). x 1 ( a 1 λ 1 + λ 2 − v 1 ) .

因为 x10 x 1 ≥ 0 ,可以推出 a1λ1+λ2v10 a 1 λ 1 + λ 2 − v 1 ≥ 0 。为啥嘞?如果 a1λ1+λ2v10 a 1 λ 1 + λ 2 − v 1 ≤ 0 ,那么内场玩家可以选择 x1+ x 1 → + ∞ (也就是任意大),因此该目标函数的值就会变成 − ∞ 。因此外场玩家若想最大化内场玩家给的最小值问题,他就会选择 λ1 λ 1 λ2 λ 2 λ3 λ 3 的值,使得 a1λ1+λ2v10 a 1 λ 1 + λ 2 − v 1 ≥ 0
同理,这个操作应用到例子的剩余两项中。外场玩家必须选择一些值,使得 λ1+a2λ2v20 λ 1 + a 2 λ 2 − v 2 ≤ 0 ,否则内场玩家可以通过选择 x2 x 2 → − ∞ ,使得
x2(λ1+a2λ2v2) x 2 ( λ 1 + a 2 λ 2 − v 2 )

这项趋近于 − ∞ 。最后,因为 x3 x 3 是无限制的,唯一能使得
x3(λ1a3λ3v3) x 3 ( λ 1 − a 3 λ 3 − v 3 )

不趋近于 − ∞ 的方法,就是选择一些对偶变量值,使得 λ1a3λ3v3=0 λ 1 − a 3 λ 3 − v 3 = 0 。经过这些操作之后,我们有了一个船新版本的线性规划问题。注意到其中的原变量已经消失无踪了。
maxλ10,λ2,λ30b1λ1b2λ2b3λ3 max λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 − b 1 λ 1 − b 2 λ 2 − b 3 λ 3

s.t.a1λ1+λ2v1λ1+a2λ2v2λ1a3λ3v300=0(4020)(4021)(4022) (4020) s . t . a 1 λ 1 + λ 2 − v 1 ≥ 0 (4021) λ 1 + a 2 λ 2 − v 2 ≤ 0 (4022) λ 1 − a 3 λ 3 − v 3 = 0

Step 7. 如果在第一步时将问题改写成了最小化问题,那么现在将上一步得到的结果改写为最小化问题。否则跳过此步。
这个操作的结果如下。当然,约束条件可以移得更自然一些。

minλ10,λ2,λ30b1λ1+b2λ2+b3λ3 min λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 b 1 λ 1 + b 2 λ 2 + b 3 λ 3

s.t.a1λ1+λ2λ1+a2λ2λ1a3λ3v1v2=v3(3926)(3927)(3928) (3926) s . t . a 1 λ 1 + λ 2 ≥ v 1 (3927) λ 1 + a 2 λ 2 ≤ v 2 (3928) λ 1 − a 3 λ 3 = v 3

这就搞定了构造对偶问题的流程啦。作为练习,你可以把上述的对偶问题作为原问题,看能否还原回最初的那个问题。

3、重要结论

线性规划问题可以是无解的(infeasible),无界的(unbounded)或者存在有限最优解(finite optimum)。如果没有一个解可以满足所有的约束条件,称为无解。比如说,假设在原问题例 (1) ( 1 ) 中有 a1=a2=a3=1 a 1 = a 2 = a 3 = 1 ,且 b1=1 b 1 = − 1 b2+b31 b 2 + b 3 ≥ 1 。很明显对于约束条件 (2-4) ( 2 - 4 ) 来说是无解的。(可解性只与约束条件有关,与目标函数无关。)
线性规划问题也可以是无界的。也就是说,对于最小化线性规划,任何一个可行解,都存在另一个可行解,且另一个解的目标函数值严格大于该解的。比如说,假设在例 (1) ( 1 ) 中有 a1=a2=1 a 1 = a 2 = 1 a3=1 a 3 = − 1 ,且 b1=b2=b3=0 b 1 = b 2 = b 3 = 0 ,且最终目标函数中的因子都是正数: v1,v2,v3>0 v 1 , v 2 , v 3 > 0 。可以知道,对于任意 cR c ∈ R c(0,0,1) c ( 0 , 0 , 1 ) 都是可行解。该目标函数值为 cv3 c v 3 ,我们可以通过使 c+ c → + ∞ 来让目标函数值任意大。理论上说,即使这个问题有很多的可行解,它也不存在最优解。

. 有穷最优解 无界的 无解的
有穷最优解 可能 不可能 不可能
无界的 不可能 不可能 可能
无解的 不可能 可能 可能

1 表 1 : 原 问 题 和 对 偶 问 题 可 能 存 在 的 组 合 情 况

如果一个问题是可解的且有界的,那么它就存在一个非无穷的最优解(finite optimum)(该解可能不唯一)。表1列举了原问题和对偶问题在可解性上的关系。特别注意到,如果原问题是无界的,那么它的对偶问题就是无解的。如果对偶问题是无界的,那么原问题就是无解的。但也有可能两个问题都是无解的。

原问题的目标函数的最优值记为 VP V P ,对偶问题的最优值记为 VD V D 。线性规划的主要结论如下。
Theorem 1 (Strong duality) 如果一个线性规划问题有最优解,那么它的对偶问题也有,且 VP=VD V P = V D
这个结论与原问题和对偶问题的值有关,而与它们的解无关。下一个结论参照了例 (1) ( 1 ) ,当然它也能直接应用到其他线性规划问题上。
Theorem 2 (Complementary slackness) (x1,x2,x3) ( x 1 , x 2 , x 3 ) (λ1,λ2,λ3) ( λ 1 , λ 2 , λ 3 ) 分别为原问题和对偶问题的解,如果它们是最优解的话,当且仅当:

λ1(a1x1+x2+x3b1)=0λ2(x1+a2x2b2)=0λ3(a3x3+b3)=0 λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) = 0 λ 2 ( x 1 + a 2 x 2 − b 2 ) = 0 λ 3 ( − a 3 x 3 + b 3 ) = 0


x1(a1λ1+λ2v1)x2(λ1+a2λ2v2)x3(λ1a3λ3v3)=0=0=0 x 1 ( a 1 λ 1 + λ 2 − v 1 ) = 0 x 2 ( λ 1 + a 2 λ 2 − v 2 ) = 0 x 3 ( λ 1 − a 3 λ 3 − v 3 ) = 0

这些约束被称作 complementary slackness conditions(互补松弛条件)。其中,前三个约束可以从 (8-10) ( 8 - 10 ) 中得出,后三个可以从 (11-13) ( 11 - 13 ) 中得出。也就是说,在构造对偶问题的过程中,得到了这么一个副产品——互补松弛条件。
这个互补松弛条件有时会写作另一种形式。比如,我们可以将
λ1(a1x1+x2+x3b1)=0 λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) = 0

写作
λ1>0a1x1+x2+x3b1=0. λ 1 > 0 ⇒ a 1 x 1 + x 2 + x 3 − b 1 = 0.

或者等价于(取逆否)
a1x1+x2+x3b1<0λ1=0. a 1 x 1 + x 2 + x 3 − b 1 < 0 ⇒ λ 1 = 0.

当有原问题的最优解时,互补松弛条件定义了一个系统或多项式去解出、或识别其对偶问题的最优解(后者解同样需要满足对偶可行约束),反之亦然。

4、译者记

本文写作的最初目的是练习 LATEX L A T E X 的公式输入,但在写作的过程中我深刻感受到,翻译文献实在不是简单的事情,那些大牛的论文被翻译成中文真的要且看且珍惜(相信文学作品的翻译更是如此)。这篇笔记的原文是哥伦比亚大学一门课的笔记课件,它没有从数学理论的方面去阐述线性规划的对偶是什么、怎么求,而是用一个简洁易懂的例子来讲解整个构造过程和性质(有另一篇笔记讲解了更一般性的线性规划构造对偶问题)。下一步是理解拉格朗日对偶性的构造和理论证明,似乎离ADMM又近一步了!:)

你可能感兴趣的:(machine,learning)