zoukankan      html  css  js  c++  java
  • 拉格朗日乘子法

    拉格朗日乘子法 (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条件可扩展到多个等式约束和不等式约束的优化问题。

  • 相关阅读:
    读胶料温度代码
    干掉win10自带的不给力的应用(转自https://jingyan.baidu.com/article/08b6a591b7398514a8092238.html)
    安装SQL提示重启电脑失败,解决办法
    几种加解密方法:AES、DES、SHA数据加密
    SQL数据库添加新账号,只操作指定数据库
    jQuery中attr()、prop()、data()用法及区别
    jquery.cookie() 的使用(原)
    功能强大的web打印控件lodop的使用
    Win+R命令大全
    Vue
  • 原文地址:https://www.cnblogs.com/yijuncheng/p/10012679.html
Copyright © 2011-2022 走看看