转自:http://blog.csdn.net/Mr_KkTian/article/details/53750424
本文主要讲述给定一个线性规划,我们为什么能按照对偶规则,机械地并且非常容易地写出其对偶。当然为便于理解,本文先介绍了什么是拉格朗日乘子法、 KKT(KarushKuhnTucker) 条件。二者是求解有约束条件的优化问题的两个重要方法。
通常我们需要求解的最优化问题有如下3类:
(i) 没有约束条件:
(iii) 再加入不等式约束的优化问题,可以写为
对于第(i)类的优化问题,我们先求取f(x)的导数,然后令导函数为零,可以求得候选极大值或极小值,再在这些值中选取最优解;如果是凸函数,可以保证是最优解。
对于上面第(ii)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束 gi(x) 用一个系数与 f(x) 写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。为什么可以这样呢?接下来我们给予证明:
我们考虑下面问题:
我们首先画出函数 f(x,y) 的等高线,然后画出 g(x,y)=0 这条曲线如下图:
我们的目标就是要字 g(x,y)=0 这条曲线上找一个点使 f(x,y) 的值尽可能小。我们现在观看等高线 f(x,y)=2 ,发现它与 g(x,y)=0 有两个交点,我们想象当 f(x,y) 的值不断变小时, g(x,y)=0 与等高线从有两个交点到若即若离的状态(一个交点,相切),最后没有交点。只有到等高线与曲线 g(x,y)=0 相切的时候,可能取得最优值,如上图所示,即等高线和曲线 g(x,y)=0 在该点的法向量必须有相同方向。因此最后最优解肯定是若即若离的点处取得。这个若即若离的数学表示方法就是: g(x,y)=0 和与等高线相切,这个点就是我们的目标点。
我们知道这个目标点的切线与函数 f(x,y) 和曲线 g(x,y)=0 在该点的法线都垂直,因此二者的法线是共线的(由高中的数学知识可以知道)。然后我们知道法线可以用该点的梯度表示,因此 我们可以得到目标点 (x∗,y∗) 处:
KKT条件其实可以看成是拉格朗日乘子法的进一步推广。对于上面第(iii)类的优化问题,如何求取最优值呢?常用的方法是KKT条件。我们看下面带不等式约束的优化问题:
要求 g(x, y) ≤ 0,也就是是说图中的阴影区我们是要在阴影区或者边界上找一个点,使得 f(x, y) 最小,我们把他分成两种情况:
1. 如果最优解恰好在这条边界上,那么这个就可以通过拉格朗日来求解。
2. 如果最优解在阴影区内部,我们是要找最优解,这个最优解不在边界上,在他内部,如果在内部那这个解一定是单纯考虑 f(x, y) 的最优解,也就是直接求 ▽f(x,y)=0 的解。
我们写出拉格朗日函数如下:
对于给定的一个LP模型:
=infx[λTb+(cT−λTA)x]
={λTb,−∞,if cT≥λTA and x≥0otherwise
现在我们定义拉格朗日对偶函数如下:
现在我们给出任意一个 f(x) ,我们现在可以通过拉格朗日搭一下桥,我们想 minf(x) ,现在可以得到 f(x)≥L(x,λ)≥g(λ) ,所以得到我要 min f(x),最小最小不可能比 g(λ) 要小了,所以我们就 maxg(λ) ,任何一个 g(λ) 都要比 f(x) 要小,所以最大的值 g(λ∗) 就是 f(x) 的最小值, 所以将 λ 换成 y 就是我们所要得到的对偶。
现在我们去求解原问题目标函数 f(x) 的最好的下边界,即:
画出原函数、拉格朗日函数、对偶函数图如下:我们可以知道 原先要 min 的目标函数大于等于拉格朗日,拉格朗日大于等于 对偶目标函数,也就是说 mincTx≥L(x,y)≥yTb ,所以通过拉格朗日搭了一下桥,所以我们原先的目标函数一定大于对 偶的目标函数。
对偶性质总结:
(1).对偶的对偶就是原问题
(2).对于一般问题,对偶问题的任意一个可行解总是原问题的一个下界,也叫弱对偶性
(3).对于线性规划,原问题的存在最优解,那对偶问题也存在一个最优解,它们的数值相等,也叫强对偶性
(4).互补松弛性:假如 x 是原问题的可行解, y 为对偶问题的可行解,那么 x 和 y 是最优解时,当且仅当:
• 1≤i≤m,ui=yi(ai1x1+ai2x2+...+ainxn−bi)=0
• 1≤j≤n,vj=(cj−a1jy1−a2jy2−...−amjym)xj=0