• 拉格朗日乘子法


    拉格朗日乘子法 (Lagrange multipliers)是一种寻找多元函数在一组约束下的极值的方法.通过引入拉格朗日乘子,可将有 d 个变量与 k 个约束条件的最优化问题转化为具有 d + k 个变量的无约束优化问题求解。本文希望通过一个直观简单的例子尽力解释拉格朗日乘子法和KKT条件的原理。


    以包含一个变量一个约束的简单优化问题为例。

    如图所示,我们的目标函数是$f(x)={x^2} + 4x - 1$,讨论两种约束条件$g(x)$:

    (1)在满足$x le -1$ 约束条件下求目标函数的最小值;

    (2)在满足 $x ge -1$约束条件$g(x)$下求目标函数的最小值。

    [egin{array}{*{20}{l}}
    {mathop {min }limits_x f(x) = {x^2} + 4x - 1}\
    egin{array}{l}
    (1) s.t. x + 1 le 0\
    (2) s.t. -x - 1 le 0
    end{array}
    end{array}]

    我们可以直观的从图中得到,

    对于约束(1)使目标值$f(x)$最小的最优解是$x=-2$;

    对于约束(2)使目标值$f(x)$最小的最优解是$x=-1$。

    下面我们用拉格朗日乘子来求解这个最优解。

    当没有约束的时候,我们可以直接令目标函数的导数为0,求最优值。可现在有约束,那怎么边考虑约束边求目标函数最优值呢?最直观的办法是把约束放进目标函数里,由于本例中只有一个约束,所以引入一个朗格朗日乘子$lambda$,构造一个新的函数,拉格朗日函数$h(x)$,

    [h(x) = f(x) + lambda g(x) ]

    该拉格朗日函数$h(x)$最优解可能在$g(x) <0$区域中,或者在边界$g(x) =0$上,下面具体分析这两种情况,

    当$g(x) <0$时,也就是最优解在$g(x) <0$区域中, 对应约束(1)$x le -1$的情况。此时约束对求目标函数最小值不起作用,等价于$lambda = 0$,直接通过条件$ abla f(x*) = 0$,得拉格朗日函数$h(x)$最优解$x=-2$。

    当$g(x) =0$时,也就是最优解在边界$g(x) =0$上,对应约束(1)$x ge -1$的情况。此时不等式约束转换为等式约束,也就是在$lambda>0$、约束起作用的情况下,通过求$ abla f(x*) + lambda abla g(x*)=0$,得拉格朗日函数$h(x)$最优解$x=-1$。

    所以整合这两种情况,必须满足$lambda g(x)=0$

    因此约束$g(x)$最小化$f(x)$的优化问题,可通过引入拉格朗日因子转化为在如下约束下,最小化拉格朗日函数$h(x)$,

    [left{ {egin{array}{*{20}{c}}
    {g(x) le 0}\
    {lambda ge 0}\
    {lambda g(x) ge 0}
    end{array}} ight.]

    上述约束条件成为KKT条件。

    该KKT条件可扩展到多个等式约束和不等式约束的优化问题。

  • 相关阅读:
    从官网下载mod_jk.so
    一台电脑上运行两个tomcat
    官网下载apache服务器并运行
    给tomcat7w.exe改名字
    运行tomcat7w.exe,提示:指定的服务未安装unable to open the service tomcat7
    一台电脑启动多个tomcat
    Spring和Hibernate结合的一个小例子
    spring和jdbc结合的一个小例子
    svn 文件后面显示时间和提交人
    svn 未提交的显示黑色的星*
  • 原文地址:https://www.cnblogs.com/yijuncheng/p/10012679.html
Copyright © 2020-2023  润新知