如何构造线性规划的对偶问题(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)的最大或最小值问题。其中,该目标函数是线性的,定义域(或称可行集合)是由一系列线性约束确定的。本文不会给出线性规划的一般公式,而是以一个例子来讲解。当用这个例子过一遍流程之后,你将对“什么是一个线性规划”有清晰的理解。
max ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 v 1 x 1 + v 2 x 2 + v 3 x 3 (1) \tag{1} \max_{x_1\geq0,x_2\leq0,x_3}v_1x_1+v_2x_2+v_3x_3 x10,x20,x3maxv1x1+v2x2+v3x3(1) s . t . a 1 x 1 + x 2 + x 3 ≤ b 1 (2) \tag{2} s.t.\quad a_1x_1+x_2+x_3 \leq b_1 s.t.a1x1+x2+x3b1(2) x 1 + a 2 x 2 = b 2 (3) \tag{3} x_1+a_2x_2 = b_2 x1+a2x2=b2(3) a 3 x 3 ≥ b 3 (4) \tag{4} a_3x_3 \geq b_3 a3x3b3(4)

这里的变量有 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3。其余几项是常数(例如 v 1 , a 2 , b 3 v_1,a_2,b_3 v1,a2,b3)。线性规划包括有目标函数 ( 1 ) (1) (1)以及一系列的等式或不等式约束 ( 2 - 4 ) (2\text{-}4) (2-4)。目标函数为:
f ( x ) = v 1 x 1 + v 2 x 2 + v 3 x 3 f(x)=v_1x_1+v_2x_2+v_3x_3 f(x)=v1x1+v2x2+v3x3
它是一个线性方程。也就是说,对于向量 x 1 x^1 x1 x 2 x^2 x2,实常数 c 1 c_1 c1 c 2 c_2 c2,有 f ( c 1 x 1 + c 2 x 2 ) = c 1 f ( x 1 ) + c 2 f ( x 2 ) f(c_1x^1+c_2x^2)=c_1f(x^1)+c_2f(x^2) f(c1x1+c2x2)=c1f(x1)+c2f(x2)。这对于 ( 1 ) (1) (1)来说是显然成立的。目标函数可以是最大化或最小化问题,而这个例子是最大化问题。
每个约束条件的左边也都是线性方程,右边都是常数。(遇到右边含有变量的问题时,你可以通过移项来让右边变成常数。)在线性规划问题中,不能存在严格不等式。也就是说,形如 x 1 + x 2 < 3 x_1+x_2<3 x1+x2<3的约束条件是不合法的。
那些限制每个变量是非负、非正或者无限制(unrestricted)的约束条件,称为特殊(special)约束。这种约束一般会列在 m a x max max m i n min min下面。形如 x 1 ≥ 2 x_1 \geq 2 x12这样的不是特殊约束,而 x 1 ≥ 0 x_1 \geq 0 x10这样的就是。在我们这个例子中, x 1 x_1 x1是非负的, x 2 x_2 x2是非正的, x 3 x_3 x3是无限制的(那个条件用于说明这点)。

2、原问题和对偶问题

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

Step 1. 将目标函数改写为最小化问题。
例子 ( 1 ) (1) (1)是一个最大化问题,因此将它改写为:
min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3 \min_{x_1\geq0,x_2\leq0,x_3}-v_1x_1-v_2x_2-v_3x_3 x10,x20,x3minv1x1v2x2v3x3
如果一个解能最大化该目标函数,也就能最小化该目标函数的取反值,因此这个操作并不会影响到最终的解集。

Step 2. 将不等式约束改写为“小于等于”的形式,且将每个约束条件的常数移项,使得式子右边为0。
经过这个操作之后,例子 ( 1 ) (1) (1)变成:
min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − v 1 x 1 − v 2 x 2 − v 3 x 3 \min_{x_1\geq0,x_2\leq0,x_3}-v_1x_1-v_2x_2-v_3x_3 x10,x20,x3minv1x1v2x2v3x3 s . t . a 1 x 1 + x 2 + x 3 − b 1 ≤ 0 (5) \tag{5} s.t.\quad a_1x_1+x_2+x_3-b_1 \leq 0 s.t.a1x1+x2+x3b10(5) x 1 + a 2 x 2 − b 2 = 0 (6) \tag{6} x_1+a_2x_2-b_2 = 0 x1+a2x2b2=0(6) − a 3 x 3 + b 3 ≤ 0 (7) \tag{7} -a_3x_3+b_3 \leq 0 a3x3+b30(7)

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

Step 4. 移除每个约束条件,并将 ( 对 偶 变 量 ) ∗ ( 约 束 条 件 的 左 边 ) (对偶变量)*(约束条件的左边) ()() 到目标函数中。使用对偶变量作为新的变量构造一个最大化问题。
具体到例子上,第一个约束 ( 5 ) (5) (5)被移除后,将下面一项到目标函数上。
λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) \lambda_1(a_1x_1+x_2+x_3-b_1) λ1(a1x1+x2+x3b1)
对每个约束条件都做同样的操作之后(除了特殊约束外),并将对偶变量作为新的变量得到一个最大化问题,有:
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 \max_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}\quad\min_{x_1\geq0,x_2\leq0,x_3}-v_1x_1-v_2x_2-v_3x_3 λ10,λ2,λ30maxx10,x20,x3minv1x1v2x2v3x3 + λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) (8) \tag{8} +\quad\lambda_1(a_1x_1+x_2+x_3-b_1) +λ1(a1x1+x2+x3b1)(8) + λ 2 ( x 1 + a 2 x 2 − b 2 ) (9) \tag{9} +\quad\lambda_2(x_1+a_2x_2-b_2) +λ2(x1+a2x2b2)(9) + λ 3 ( − a 3 x 3 + b 3 ) (10) \tag{10} +\quad\lambda_3(-a_3x_3+b_3) +λ3(a3x3+b3)(10)

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

Step 5. 现在目标函数中有许多项形如 ( 对 偶 变 量 ) ∗ ( 带 有 原 变 量 的 表 达 式 ) (对偶变量)*(带有原变量的表达式) ()() ,加上其他只与原变量有关的项。改写该目标函数,使得其包含一些项形如 ( 原 变 量 ) ∗ ( 带 有 对 偶 变 量 的 表 达 式 ) (原变量)*(带有对偶变量的表达式) ()() ,加上其余只与对偶变量有关的项。
做完上述操作之后,得到: max ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 min ⁡ x 1 ≥ 0 , x 2 ≤ 0 , x 3 − b 1 λ 1 − b 2 λ 2 − b 3 λ 3 \max_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}\quad\min_{x_1\geq0,x_2\leq0,x_3}-b_1\lambda_1-b_2\lambda_2-b_3\lambda_3 λ10,λ2,λ30maxx10,x20,x3minb1λ1b2λ2b3λ3

+ x 1 ( a 1 λ 1 + λ 2 − v 1 ) (11) \tag{11} +\quad x_1(a_1\lambda_1+\lambda_2-v_1) +x1(a1λ1+λ2v1)(11) + x 2 ( λ 1 + a 2 λ 2 − v 2 ) (12) \tag{12} +\quad x_2(\lambda_1+a_2\lambda_2-v_2) +x2(λ1+a2λ2v2)(12) + x 3 ( λ 1 − a 3 λ 3 − v 3 ) (13) \tag{13} +\quad x_3(\lambda_1-a_3\lambda_3-v_3) +x3(λ1a3λ3v3)(13)

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

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

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

这一步并不难记,因为它的原理非常直观。例如 ( 11 ) (11) (11)项:
x 1 ( a 1 λ 1 + λ 2 − v 1 ) . x_1(a_1\lambda_1+\lambda_2-v_1). x1(a1λ1+λ2v1).
因为 x 1 ≥ 0 x_1\geq0 x10,可以推出 a 1 λ 1 + λ 2 − v 1 ≥ 0 a_1\lambda_1+\lambda_2-v_1 \geq 0 a1λ1+λ2v10。为啥嘞?如果 a 1 λ 1 + λ 2 − v 1 ≤ 0 a_1\lambda_1+\lambda_2-v_1 \leq 0 a1λ1+λ2v10,那么内场玩家可以选择 x 1 → + ∞ x_1\rightarrow + \infty x1+(也就是任意大),因此该目标函数的值就会变成$ -\infty 。 因 此 外 场 玩 家 若 想 最 大 化 内 场 玩 家 给 的 最 小 值 问 题 , 他 就 会 选 择 。因此外场玩家若想最大化内场玩家给的最小值问题,他就会选择 \lambda_1 , , \lambda_2 , , \lambda_3 的 值 , 使 得 的值,使得 使a_1\lambda_1+\lambda_2-v_1 \geq 0 。 同 理 , 这 个 操 作 应 用 到 例 子 的 剩 余 两 项 中 。 外 场 玩 家 必 须 选 择 一 些 值 , 使 得 。 同理,这个操作应用到例子的剩余两项中。外场玩家必须选择一些值,使得 使\lambda_1+a_2\lambda_2-v_2\leq 0 , 否 则 内 场 玩 家 可 以 通 过 选 择 ,否则内场玩家可以通过选择 x_2 \rightarrow - \infty$,使得
x 2 ( λ 1 + a 2 λ 2 − v 2 ) x_2(\lambda_1+a_2\lambda_2-v_2) x2(λ1+a2λ2v2)
这项趋近于 − ∞ -\infty 。最后,因为 x 3 x_3 x3是无限制的,唯一能使得
x 3 ( λ 1 − a 3 λ 3 − v 3 ) x_3(\lambda_1-a_3\lambda_3-v_3) x3(λ1a3λ3v3)
不趋近于 − ∞ -\infty 的方法,就是选择一些对偶变量值,使得 λ 1 − a 3 λ 3 − v 3 = 0 \lambda_1-a_3\lambda_3-v_3=0 λ1a3λ3v3=0。经过这些操作之后,我们有了一个船新版本的线性规划问题。注意到其中的原变量已经消失无踪了。
max ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 − b 1 λ 1 − b 2 λ 2 − b 3 λ 3 \max_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}-b_1\lambda_1-b_2\lambda_2-b_3\lambda_3 λ10,λ2,λ30maxb1λ1b2λ2b3λ3 s . t . a 1 λ 1 + λ 2 − v 1 ≥ 0 (14) \tag{14} s.t.\quad a_1\lambda_1+\lambda_2-v_1 \geq 0 s.t.a1λ1+λ2v10(14) λ 1 + a 2 λ 2 − v 2 ≤ 0 (15) \tag{15} \lambda_1+a_2\lambda_2-v_2 \leq 0 λ1+a2λ2v20(15) λ 1 − a 3 λ 3 − v 3 = 0 (16) \tag{16} \lambda_1-a_3\lambda_3-v_3=0 λ1a3λ3v3=0(16)

Step 7. 如果在第一步时将问题改写成了最小化问题,那么现在将上一步得到的结果改写为最小化问题。否则跳过此步。
这个操作的结果如下。当然,约束条件可以移得更自然一些。
min ⁡ λ 1 ≥ 0 , λ 2 , λ 3 ≥ 0 b 1 λ 1 + b 2 λ 2 + b 3 λ 3 \min_{\lambda_1 \geq 0, \lambda_2, \lambda_3 \geq 0}b_1\lambda_1+b_2\lambda_2+b_3\lambda_3 λ10,λ2,λ30minb1λ1+b2λ2+b3λ3 s . t . a 1 λ 1 + λ 2 ≥ v 1 (17) \tag{17} s.t.\quad a_1\lambda_1+\lambda_2 \geq v_1 s.t.a1λ1+λ2v1(17) λ 1 + a 2 λ 2 ≤ v 2 (18) \tag{18} \lambda_1+a_2\lambda_2 \leq v_2 λ1+a2λ2v2(18) λ 1 − a 3 λ 3 = v 3 (19) \tag{19} \lambda_1-a_3\lambda_3 = v_3 λ1a3λ3=v3(19)
这就搞定了构造对偶问题的流程啦。作为练习,你可以把上述的对偶问题作为原问题,看能否还原回最初的那个问题。

3、重要结论

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

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

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

原问题的目标函数的最优值记为 V P V_P VP,对偶问题的最优值记为 V D V_D VD。线性规划的主要结论如下。
Theorem 1 (Strong duality) 如果一个线性规划问题有最优解,那么它的对偶问题也有,且 V P = V D V_P=V_D VP=VD
这个结论与原问题和对偶问题的值有关,而与它们的解无关。下一个结论参照了例 ( 1 ) (1) (1),当然它也能直接应用到其他线性规划问题上。
Theorem 2 (Complementary slackness) ( x 1 , x 2 , x 3 ) (x_1, x_2, x_3) (x1,x2,x3) ( λ 1 , λ 2 , λ 3 ) (\lambda_1, \lambda_2, \lambda_3) (λ1,λ2,λ3) 分别为原问题和对偶问题的解,如果它们是最优解的话,当且仅当:
λ 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 \lambda_1(a_1x_1+x_2+x_3-b_1)=0 \\ \lambda_2(x_1+a_2x_2-b_2)=0 \\ \lambda_3(-a_3x_3+b_3)=0 \\ λ1(a1x1+x2+x3b1)=0λ2(x1+a2x2b2)=0λ3(a3x3+b3)=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 x_1(a_1\lambda_1+\lambda_2-v_1)= 0 \\ x_2(\lambda_1+a_2\lambda_2-v_2)= 0 \\ x_3(\lambda_1-a_3\lambda_3-v_3)=0 \\ x1(a1λ1+λ2v1)=0x2(λ1+a2λ2v2)=0x3(λ1a3λ3v3)=0
这些约束被称作complementary slackness conditions(互补松弛条件)。其中,前三个约束可以从 ( 8 - 10 ) (8\text{-}10) (8-10)中得出,后三个可以从 ( 11 - 13 ) (11\text{-}13) (11-13)中得出。也就是说,在构造对偶问题的过程中,得到了这么一个副产品——互补松弛条件。
这个互补松弛条件有时会写作另一种形式。比如,我们可以将
λ 1 ( a 1 x 1 + x 2 + x 3 − b 1 ) = 0 \lambda_1(a_1x_1+x_2+x_3-b_1)=0 λ1(a1x1+x2+x3b1)=0
写作
λ 1 > 0 ⇒ a 1 x 1 + x 2 + x 3 − b 1 = 0. \lambda_1>0\Rightarrow a_1x_1+x_2+x_3-b_1=0. λ1>0a1x1+x2+x3b1=0.
或者等价于(取逆否)
a 1 x 1 + x 2 + x 3 − b 1 < 0 ⇒ λ 1 = 0. a_1x_1+x_2+x_3-b_1<0\Rightarrow \lambda_1=0. a1x1+x2+x3b1<0λ1=0.
当有原问题的最优解时,互补松弛条件定义了一个系统或多项式去解出、或识别其对偶问题的最优解(后者解同样需要满足对偶可行约束),反之亦然。

4、译者记

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

  • 19
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值