线性规划--对偶问题

0、前言

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

1、公式

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

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

目标函数为:
f(x)=v1x1+v2x2+v3x3
它是一个线性方程。也就是说,对于向量x1和x2,实常数c1和c2,有f(c1x1+c2x2)=c1f(x1)+c2f(x2)。这对于(1)来说是显然成立的。目标函数可以是最大化或最小化问题,而这个例子是最大化问题。

每个约束条件的左边也都是线性方程,右边都是常数。(遇到右边含有变量的问题时,你可以通过移项来让右边变成常数。)在线性规划问题中,不能存在严格不等式。也就是说,形如x1+x2<3的约束条件是不合法的。

那些限制每个变量是非负、非正或者无限制(unrestricted)的约束条件,称为特殊(special)约束。这种约束一般会列在max或min下面。形如x1≥2这样的不是特殊约束,而x1≥0这样的就是。在我们这个例子中,x1是非负的,x2是非正的,x3是无限制的(那个条件用于说明这点)。

2、原问题和对偶问题

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

Step 1. 将目标函数改写为最小化问题。
例子(1)是一个最大化问题,因此将它改写为:
minx1≥0,x2≤0,x3−v1x1−v2x2−v3x3
如果一个解能最大化该目标函数,也就能最小化该目标函数的取反值,因此这个操作并不会影响到最终的解集。

Step 2. 将不等式约束改写为“小于等于”的形式,且将每个约束条件的常数移项,使得式子右边为0。
经过这个操作之后,例子(1)变成:
minx1≥0,x2≤0,x3−v1x1−v2x2−v3x3s.t.a1x1+x2+x3−b1x1+a2x2−b2−a3x3+b3≤0=0≤0

Step 3. 给每个不等式约束定义对应的非负对偶变量,给每个等式约束定义无约束的对偶变量。

对于约束(2)和(4)分别定义变量λ1≥0和λ3≥0。对于约束(3)定义无约束变量λ2。

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

对每个约束条件都做同样的操作之后(除了特殊约束外),并将对偶变量作为新的变量得到一个最大化问题,有:
maxλ1≥0,λ2,λ3≥0minx1≥0,x2≤0,x3−v1x1−v2x2−v3x3+λ1(a1x1+x2+x3−b1)+λ2(x1+a2x2−b2)+λ3(−a3x3+b3)
可将该问题想象成一个“双人游戏”,包括一个“外场玩家”和一个“内场玩家”。外场玩家先行一步,给λ1,λ2,λ3分别选择一些值(当然要满足那些特殊约束啦)。内场玩家在固定这些值后,给x1,x2,x3选择一些值,使得目标函数最小化。内场玩家操作之后,外场玩家又会更新λ1,λ2,λ3的值,使得内场玩家给的最小值尽可能大。

Step 5. 现在目标函数中有许多项形如 (对偶变量)∗(带有原变量的表达式) ,加上其他只与原变量有关的项。改写该目标函数,使得其包含一些项形如 (原变量)∗(带有对偶变量的表达式) ,加上其余只与对偶变量有关的项。
做完上述操作之后,得到:
在这里插入图片描述
做这步操作的时候要十分谨慎,如果你弄错了一个符号,或者漏掉了任何一项,不仅最终的对偶结果会出错,并且会变得非常具有误导性、迷惑性。

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

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

这一步并不难记,因为它的原理非常直观。 例如(11)项: x1(a1λ1+λ2−v1).
因为x1≥0,可以推出a1λ1+λ2−v1≥0。为啥嘞?
如果a1λ1+λ2−v1≤0,那么内场玩家可以选择x1→+∞(也就是任意大),因此该目标函数的值就会变成−∞。
因此外场玩家若想最大化内场玩家给的最小值问题,他就会选择λ1,λ2,λ3的值,使得a1λ1+λ2−v1≥0
同理,这个操作应用到例子的剩余两项中。 外场玩家必须选择一些值,使得λ1+a2λ2−v2≤0,否则内场玩家可以通过选择x2→−∞,使得
x2(λ1+a2λ2−v2)这项趋近于−∞。 最后,因为x3是无限制的,唯一能使得
x3(λ1−a3λ3−v3)不趋近于−∞的方法,就是选择一些对偶变量值,使得λ1−a3λ3−v3=0。

经过这些操作之后,我们有了一个船新版本的线性规划问题。注意到其中的原变量已经消失无踪了。
maxλ1≥0,λ2,λ3≥0−b1λ1−b2λ2−b3λ3
s.t.a1λ1+λ2−v1λ1+a2λ2−v2λ1−a3λ3−v3≥0≤0=0
Step 7. 如果在第一步时将问题改写成了最小化问题,那么现在将上一步得到的结果改写为最小化问题。否则跳过此步。
这个操作的结果如下。当然,约束条件可以移得更自然一些。
minλ1≥0,λ2,λ3≥0b1λ1+b2λ2+b3λ3s.t.a1λ1+λ2λ1+a2λ2λ1−a3λ3≥v1≤v2=v3

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

3、重要结论

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

.	有穷最优解	无界的	无解的有穷最优解	可能	不可能	不可能无界的	不可能	不可能	可能无解的	不可能	可能	可能表1:原问题和对偶问题可能存在的组合情况

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

原问题的目标函数的最优值记为VP,对偶问题的最优值记为VD。线性规划的主要结论如下。
Theorem 1 (Strong duality) 如果一个线性规划问题有最优解,那么它的对偶问题也有,且 VP=VD。

这个结论与原问题和对偶问题的值有关,而与它们的解无关。下一个结论参照了例(1),当然它也能直接应用到其他线性规划问题上。

Theorem 2 (Complementary slackness) 令 (x1,x2,x3) 和 (λ1,λ2,λ3) 分别为原问题和对偶问题的解,如果它们是最优解的话,当且仅当:
λ1(a1x1+x2+x3−b1)=0
λ2(x1+a2x2−b2)=0
λ3(−a3x3+b3)=0


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

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

写作
λ1>0⇒a1x1+x2+x3−b1=0.

或者等价于(取逆否)
a1x1+x2+x3−b1<0⇒λ1=0.

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

转自:https://blog.csdn.net/mr_zing/article/details/79569501

  • 17
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值