zoukankan      html  css  js  c++  java
  • 拉格朗日对偶性

      在约束最优化问题中,常用拉格朗日对偶性将原始问题转换为对偶问题求解。

    广义拉格朗日函数

      称最优化问题

    $egin{equation} egin{array}{lcl} minlimits_{xin R^n} f(x)\ egin{aligned} ext{s.t.};;&c_i(x) le 0,;;i=1,2,...,k \ &h_j(x)=0,;;j=1,2,...,l end{aligned} end{array} end {equation}$

      为原始最优化问题。使用以上优化问题构造广义拉格朗日函数:

    $L(x,alpha,eta) = f(x)+sumlimits_{i=1}^kalpha_ic_i(x)+sumlimits_{j=1}^leta_jh_j(x)$

      其中$alpha_ige 0,eta_jin R$是拉格朗日乘子。可以发现,对于违反原始问题约束的$x$,即存在某个$c_i(x)>0$,或某个$h_j(x) e 0$,有:

    $maxlimits_{alphage 0,eta}L(x,alpha,eta) = +infty$

      因此有:

    $egin{equation} maxlimits_{alphage 0, eta}L(x,alpha,eta) = left{ egin{aligned} &f(x),;;x满足原始条件约束\ &+infty,;;else end{aligned} ight. end {equation}$

      因此原始问题的最优值可以表示为:

    $p^* = minlimits_{x}maxlimits_{alphage 0 , eta}L(x,alpha,eta)$

      从而将约束条件与待优化问题结合到了一起,称为广义拉格朗日函数的极小极大问题。

    对偶问题以及KKT条件

    对偶问题

      将极小极大交换一下,得到

    $d^* = maxlimits_{alphage 0 , eta}minlimits_{x}L(x,alpha,eta)$

      即为原始问题的对偶问题的最优值。对偶问题转换为带条件的形式就是:

    $egin{aligned} &maxlimits_{alpha,eta}minlimits_{x} L(x,alpha,eta)\ &; ext{s.t.};;alpha_ige 0, ;; i=1,2,...,k \ end{aligned}$

      如果原始问题与对偶问题都有最优值,$p^*$和$d^*$,则:

    $d^*= maxlimits_{alphage 0 , eta}minlimits_{x}L(x,alpha,eta)le  minlimits_{x}maxlimits_{alphage 0 , eta}L(x,alpha,eta)= p^*$

      这是因为,对于任意$x,alpha,eta$,有:

    $minlimits_{x}L(x,alpha,eta)le L(x,alpha,eta)lemaxlimits_{alphage 0 , eta}L(x,alpha,eta)$

      也就是左边关于$alpha,eta$的函数,总是小于等于右边关于$x$的函数。所以有$d^*le p^*$。

    KKT条件

      某些情况下,对偶问题与原始问题有相等的最优值,即对于同样的$x^*,alpha^*,eta^*$,有$d^* = p^*$,这时解对偶问题可以替代原始问题,条件如下:

      1、$f(x)$和$c_i(x)$是凸函数;

      2、$h_j(x)$是仿射函数,即一次函数;

      3、不等式约束$c_i(x)$是严格可行的,即存在$x$,对所有$i$有$c_i(x)<0$。如果不存在这样的$x$的话,实际上就是等式约束了。这是因为,每个$x$都会使某个不等式约束取等号,也就可以仅使用等式约束来表示这些$x$了。

      此时有:

    $p^*=d^*=L(x^*,alpha^*,eta^*)$

      且算出$x^*,alpha^*,eta^*$的充要条件是(KKT条件):

    $left{ egin{aligned} & abla_xL(x^*,alpha^*,eta^*) = 0 \ &alpha_i^*c_i(x^*) = 0, ;; i=1,2,...,k \ &c_i(x^*) le 0, ;; i=1,2,...,k \ &alpha_i^*ge 0, ;; i=1,2,...,k \ &h_j(x^*) = 0, ;; i=1,2,...,l \ end{aligned} ight.$

    直观理解

       上图显示了优化的一个情况。等高线表示的是待优化函数$f(x)$($x$二维),越向中心,值越小,是个标准的凸函数。红圈表示不等式约束(内部),是个凸函数。蓝线表示等式约束(线上),是仿射函数。则$x$可取的值在红圈与其内部的蓝线上。可观察有如下几个符合KKT条件的事实:

      1、三个白色箭头分别表示三个函数的梯度方向,此时有三个梯度的加权矢量和为0,与KKT条件中的1式吻合。

      2、因为最优点在红圈上,因此不等式约束取等为0,有2式。

      3、3式和5式是原本的约束条件。

      4、观察三个梯度的方向,因为$f(x)$的方向不能改变(1式梯度前没系数),所以为了矢量和为0,$alpha$必须大于0(满足4式,并且在2式中与$c(x^*)$成为互补条件)。而由于等式约束的仿射函数取反后约束不变,而梯度方向却变反了,因此$eta$没有正负的限制。

  • 相关阅读:
    Python Django 零基础破门而入篇(五)
    Python Django 零基础破门而入篇(四)
    Python Django 零基础破门而入篇(三)
    Python Django 零基础破门而入篇(二)
    Python Django 零基础破门而入篇(一)
    ACM/ICPC 之 计算几何入门-叉积-to left test(POJ2318-POJ2398)
    ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)
    ACM/ICPC 之 卡卡的矩阵旅行-最小费用最大流(可做模板)(POJ3422)
    ACM/ICPC 之 伞兵-最小割转最大流(POJ3308)
    ACM/ICPC 之 最小割转网络流(POJ3469)
  • 原文地址:https://www.cnblogs.com/qizhou/p/12931195.html
Copyright © 2011-2022 走看看