条件极值 拉格朗日乘数法

  现实问题中,有时会遇到对函数的自变量还有附加条件的极值问题。例如,求表面积为a2a^2而体积为最大的长方体的体积问题。设长方体的三棱长为x,y,zx,y,z,则体积V=xyzV=xyz,又因表面积为a2a^2,所以自变量x,y,zx,y,z还必须满足附加条件2(xy+yz+xz)=a22(xy+yz+xz)=a^2,像这种对自变量有附加条件的极值称为条件极值。对于有些实际问题,可以把条件极值化为无条件极值。例如上述问题,可由条件2(xy+yz+xz)=a22(xy+yz+xz)=a^2,将zz表示成x,yx,y的函数z=a22xy2(x+y).z=\dfrac{a^2-2xy}{2(x+y)}.
再把它代入V=xyzV=xyz中,于是问题就化为求V=xy2(a22xyx+y)V=\dfrac{xy}{2} \left(\dfrac{a^2-2xy}{x+y} \right)
的无条件极值。
  但是在很多情况下,将条件极值化为无条件极值并不这样简单。另有一种直接寻求条件极值的方法,可以不必先把问题化到无条件极值的问题,这就是下面要介绍的朗格朗日乘数法。(这里只给出拉格朗日乘数法的结论,其具体引入思路可参考文献[2] P113,这里不再赘述。)

要找函数 (1)z=f(x,y)z=f(x,y) \tag{1} 在附加条件 (2)φ(x,y)=0\varphi(x,y)=0 \tag{2} 下的可能极值点,可以先作拉格朗日函数L(x,y)=f(x,y)+λφ(x,y),L(x,y)=f(x,y)+\lambda\varphi(x,y),其中参数 λ\lambda 称为拉格朗日乘子。求其对xxyy的一阶偏导数,并使之为零,然后与方程(2)联立起来:
(3){fx(x,y)+λφx(x,y)=0,fy(x,y)+λφy(x,y)=0,φ(x,y)=0. \begin{cases} f_x(x, y) + \lambda \varphi_x(x, y) = 0, \\ f_y(x, y) + \lambda \varphi_y(x, y) = 0, \\ \varphi(x, y) = 0. \end{cases} \tag{3}
由这个方程组解出 x,yx,yλ\lambda,这样得到的 (x,y)(x,y) 就是函数 f(x,y)f(x,y) 在附加条件 φ(x,y)=0\varphi(x,y)=0 下的可能极值点。
  方程组(3)是函数(1)在条件(2)下在(x0,y0)(x_0, y_0)取得极值的必要条件。至于如何确定所求得的点是否极值点,在实际问题中往往可根据问题本身的性质来判定。

  该方法可以推广到自变量多于两个而条件多于一个的情形[2],这在下面的等式约束优化问题中也会提到。

等式约束优化

所谓的等式约束优化是指 [3]
KaTeX parse error: Expected group after '\begin{array}' at position 16: \begin{array} \̲ ̲min \ f(x_1, x_…
我们用拉格朗日乘数法求解,令 L(x,λ)=f(x)+k=1lλkhk(x)L(\boldsymbol x, \boldsymbol \lambda) = f(\boldsymbol x) + \sum \limits_{k=1}^l{\lambda_k h_k(\boldsymbol x)},再联立方程组:{Lxi=0(i=1,2,...,n)Lλk=0(k=1,2,...,l) \begin{cases} \dfrac{\partial L}{\partial x_i} = 0 \quad (i=1,2,...,n) \\ \dfrac{\partial L}{\partial \lambda_k} = 0 \quad (k=1,2,...,l) \end{cases}
得到的解为可能极值点,由于我们用的是必要条件,具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件. (me:上述方程组中的第二个方程实际上就是约束条件 hk(x1,x2,...,xn)=0h_k(x_1, x_2, ..., x_n) = 0

  等式约束下的Lagrange乘数法引入了ll个Lagrange乘子,或许我们可以把λk\lambda_k也看作优化变量,这相当于将优化变量个数增加到(n+l)(n+l)个,xix_iλk\lambda_k一视同仁,均为优化变量,均对他们求偏导。

不等式约束优化

  不等式约束优化主要是使用转化的思想——将不等式约束条件转化成等式约束条件,具体做法:引入松弛变量。松弛变量也是优化变量,也需要一视同仁求偏导[3]。
【数学基础与最优化1.4】带约束的优化问题

  具体而言,我们先看一个一元函数的例子:
KaTeX parse error: Expected group after '\begin{array}' at position 16: \begin{array} \̲ ̲min \ f(x) \\ s…

注:优化问题中,我们必须求得一个确定的值,因此不妨令所有的不等式均取到等号,即 \leq 的情况[3].

  对于约束 g1g_{1}g2g_{2},我们分别引入两个松弛变量a12a_{1}^{2}b12b_{1}^{2},得到h1(x,a1)=g1+a12=0h_{1} (x,a_{1} )=g_{1} +a_{1}^{2} =0h2(x,b1)=g2+b12=0h_{2} (x,b_{1} )=g_{2} +b_{1}^{2} =0. 注意,这里直接加上平方项a12a_{1}^{2}b12b_{1}^{2} 而非a1a_{1}b1b_{1},是因为g1g_{1}g2g_{2}这两个不等式的左边必须加上一个正数才能使不等式变为等式。若只加上 a1a_{1}b1b_{1},又会引入新的约束a10a_{1} \geq 0b10b_{1} \geq 0,这不符合我们的意愿。
【数学基础与最优化1.4】带约束的优化问题

  由此我们将不等式约束转化成了等式约束,此时引入Lagrange函数
(2)L(x,a1,b1,μ1,μ2)=f(x)+μ1(ax+a12)+μ2(xb+b12)L(x, a_1, b_1, \mu_1, \mu_2) = f(x) + \mu_1(a-x+a_1^2) + \mu_2(x-b+b_1^2) \tag{2}
我们再按照等式约束优化问题(极值必要条件)对其求解,联立方程:
(3){Lx=fx+μ1dg1dx+μ2dg2dx=fxμ1+μ2=0,Lμ1=g1+a12=0,Lμ2=g2+b12=0,La1=2μ1a1=0,Lb1=2μ2b1=0,μ10,μ20. \left\{ \begin{array}{} \dfrac{\partial L}{\partial x} = \dfrac{\partial f}{\partial x} + \mu_1 \dfrac{{\rm d}g_1}{{\rm d}x} + \mu_2 \dfrac{{\rm d}g_2}{{\rm d}x} = \dfrac{\partial f}{\partial x} - \mu_1 + \mu_2 = 0, \\ \dfrac{\partial L}{\partial \mu_1} = g_1 + a_1^2 = 0, \quad \dfrac{\partial L}{\partial \mu_2} = g_2 + b_1^2 = 0, \\ \dfrac{\partial L}{\partial a_1} = 2 \mu_1 a_1 = 0, \quad \quad \dfrac{\partial L}{\partial b_1} = 2 \mu_2 b_1 = 0, \\ \mu_1 \geq 0, \quad \mu_2 \geq 0. \end{array} \right. \tag{3}

注:这里的μ10,μ20\mu_1 \geq 0, \mu_2 \geq 0我们先记住!实际上对于不等式约束前的乘子,我们要求其大于等于0 [3].

对于方程组(3)中的
(4){Lμ1=g1+a12=0,La1=2μ1a1=0,μ10. \left\{ \begin{array}{} \dfrac{\partial L}{\partial \mu_1} = g_1 + a_1^2 = 0, \\ \dfrac{\partial L}{\partial a_1} = 2 \mu_1 a_1 = 0, \\ \mu_1 \geq 0. \end{array} \right. \tag{4} 我们可以做如下讨论:

  1. μ1=0\mu_1 = 0时,a1̸=0\color{#F00}{a_1 \not = 0}me:a10\color{#F00}{me:此时a_1等于0不可以吗?}),在Lagrange函数LL中,约束g1g_1不起作用;而由 g1+a12=0g_1 + a_1^2 = 0可知此时g1<0g_1 < 0.
  2. μ1>0\mu_1 > 0时,a1=0a_1 = 0,由 g1+a12=0g_1 + a_1^2 = 0可知此时g1=0g_1 = 0.
    综上有 μ1g1=0\mu_1 g_1 = 0.
    同理也有 μ2g2=0\mu_2 g_2 = 0.

由此,方程组(3)转化为
(5){fx+μ1dg1dx+μ2dg2dx=0,μ1g1(x)=0,μ2g2(x)=0,μ10,μ20. \left\{ \begin{array}{} \dfrac{\partial f}{\partial x} + \mu_1 \dfrac{{\rm d}g_1}{{\rm d}x} + \mu_2 \dfrac{{\rm d}g_2}{{\rm d}x}= 0, \\ \mu_1 g_1(x) = 0, \quad \mu_2 g_2(x) = 0, \\ \mu_1 \geq 0, \quad \mu_2 \geq 0. \end{array} \right. \tag{5} 这是一元一次的情形。类似地,对于多元多次不等式约束问题:
KaTeX parse error: Expected group after '\begin{array}' at position 16: \begin{array} \̲ ̲min \ f(\boldsy…
我们有
(7){fxi+j=1mμjgjxi=0,(i=1,2,...,n),μjgj(x)=0,(j=1,2,...,m),μj0,(j=1,2,...,m). \left\{ \begin{array}{} \dfrac{\partial f}{\partial x_i} + \sum \limits_{j=1}^m \mu_j \dfrac{\partial g_j}{\partial x_i} = 0, \quad (i=1,2,...,n),\\ \mu_j g_j(\boldsymbol x) = 0, \quad (j=1,2,...,m), \\ \mu_j \geq 0, \quad (j=1,2,...,m). \end{array} \right. \tag{7} 上式便称为不等式约束优化问题(6)的KKT(Karush-Kuhn-Tucker)条件. μj\mu_j称为KKT乘子,且约束起作用时μj0,gj(x)=0\mu_j \geq 0, g_j(\boldsymbol x) = 0;约束不起作用时μj=0,gj(x)<0\mu_j = 0, g_j(\boldsymbol x) < 0 [3].

注意这里的约束起作用时, “μj0,gj(x)=0\mu_j \geq 0, g_j(\boldsymbol x) = 0” 和上面讨论的 “μj>0,gj(x)=0\mu_j > 0, g_j(\boldsymbol x) = 0” 的区别,但这里是正确的,也就是说上面的证明还不够严谨,那么具体要怎样更严谨的证明呢?

总结:同时包含等式和不等式约束的一般优化问题[3]
【数学基础与最优化1.4】带约束的优化问题

参考文献

[1] 可导与可微等价吗?有什么区别?
[2] 高等数学.第六版.下册
[3] 浅谈最优化问题的KKT条件

凸优化有关书目:
Numerical Optimization和Convex optimization 两本书的选择?

相关文章:

  • 2022-01-05
  • 2022-12-23
  • 2022-01-01
  • 2021-08-27
  • 2021-10-26
  • 2021-12-09
  • 2021-07-02
  • 2021-10-08
猜你喜欢
  • 2021-12-06
  • 2021-04-06
  • 2021-10-15
  • 2021-08-07
  • 2021-07-10
  • 2021-06-04
  • 2022-01-03
相关资源
相似解决方案