条件极值 拉格朗日乘数法
现实问题中,有时会遇到对函数的自变量还有附加条件的极值问题。例如,求表面积为a2而体积为最大的长方体的体积问题。设长方体的三棱长为x,y,z,则体积V=xyz,又因表面积为a2,所以自变量x,y,z还必须满足附加条件2(xy+yz+xz)=a2,像这种对自变量有附加条件的极值称为条件极值。对于有些实际问题,可以把条件极值化为无条件极值。例如上述问题,可由条件2(xy+yz+xz)=a2,将z表示成x,y的函数z=2(x+y)a2−2xy.
再把它代入V=xyz中,于是问题就化为求V=2xy(x+ya2−2xy)
的无条件极值。
但是在很多情况下,将条件极值化为无条件极值并不这样简单。另有一种直接寻求条件极值的方法,可以不必先把问题化到无条件极值的问题,这就是下面要介绍的朗格朗日乘数法。(这里只给出拉格朗日乘数法的结论,其具体引入思路可参考文献[2] P113,这里不再赘述。)
要找函数 z=f(x,y)(1) 在附加条件 φ(x,y)=0(2) 下的可能极值点,可以先作拉格朗日函数L(x,y)=f(x,y)+λφ(x,y),其中参数 λ 称为拉格朗日乘子。求其对x与y的一阶偏导数,并使之为零,然后与方程(2)联立起来:
⎩⎪⎨⎪⎧fx(x,y)+λφx(x,y)=0,fy(x,y)+λφy(x,y)=0,φ(x,y)=0.(3)
由这个方程组解出 x,y 及 λ,这样得到的 (x,y) 就是函数 f(x,y) 在附加条件 φ(x,y)=0 下的可能极值点。
方程组(3)是函数(1)在条件(2)下在(x0,y0)取得极值的必要条件。至于如何确定所求得的点是否极值点,在实际问题中往往可根据问题本身的性质来判定。
该方法可以推广到自变量多于两个而条件多于一个的情形[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=1∑lλkhk(x),再联立方程组:⎩⎪⎨⎪⎧∂xi∂L=0(i=1,2,...,n)∂λk∂L=0(k=1,2,...,l)
得到的解为可能极值点,由于我们用的是必要条件,具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件. (me:上述方程组中的第二个方程实际上就是约束条件 hk(x1,x2,...,xn)=0)
等式约束下的Lagrange乘数法引入了l个Lagrange乘子,或许我们可以把λk也看作优化变量,这相当于将优化变量个数增加到(n+l)个,xi与λk一视同仁,均为优化变量,均对他们求偏导。
不等式约束优化
不等式约束优化主要是使用转化的思想——将不等式约束条件转化成等式约束条件,具体做法:引入松弛变量。松弛变量也是优化变量,也需要一视同仁求偏导[3]。

具体而言,我们先看一个一元函数的例子:
KaTeX parse error: Expected group after '\begin{array}' at position 16:
\begin{array} \̲
̲min \ f(x) \\
s…
注:优化问题中,我们必须求得一个确定的值,因此不妨令所有的不等式均取到等号,即 ≤ 的情况[3].
对于约束 g1 和 g2,我们分别引入两个松弛变量a12 和b12,得到h1(x,a1)=g1+a12=0和h2(x,b1)=g2+b12=0. 注意,这里直接加上平方项a12、b12 而非a1、b1,是因为g1和g2这两个不等式的左边必须加上一个正数才能使不等式变为等式。若只加上 a1 和 b1,又会引入新的约束a1≥0和b1≥0,这不符合我们的意愿。

由此我们将不等式约束转化成了等式约束,此时引入Lagrange函数
L(x,a1,b1,μ1,μ2)=f(x)+μ1(a−x+a12)+μ2(x−b+b12)(2)
我们再按照等式约束优化问题(极值必要条件)对其求解,联立方程:
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧∂x∂L=∂x∂f+μ1dxdg1+μ2dxdg2=∂x∂f−μ1+μ2=0,∂μ1∂L=g1+a12=0,∂μ2∂L=g2+b12=0,∂a1∂L=2μ1a1=0,∂b1∂L=2μ2b1=0,μ1≥0,μ2≥0.(3)
注:这里的μ1≥0,μ2≥0我们先记住!实际上对于不等式约束前的乘子,我们要求其大于等于0 [3].
对于方程组(3)中的
⎩⎪⎪⎪⎨⎪⎪⎪⎧∂μ1∂L=g1+a12=0,∂a1∂L=2μ1a1=0,μ1≥0.(4)我们可以做如下讨论:
- 当μ1=0时,a1̸=0 (me:此时a1等于0不可以吗?),在Lagrange函数L中,约束g1不起作用;而由 g1+a12=0可知此时g1<0.
- 当μ1>0时,a1=0,由 g1+a12=0可知此时g1=0.
综上有 μ1g1=0.
同理也有 μ2g2=0.
由此,方程组(3)转化为
⎩⎪⎨⎪⎧∂x∂f+μ1dxdg1+μ2dxdg2=0,μ1g1(x)=0,μ2g2(x)=0,μ1≥0,μ2≥0.(5)这是一元一次的情形。类似地,对于多元多次不等式约束问题:
KaTeX parse error: Expected group after '\begin{array}' at position 16:
\begin{array} \̲
̲min \ f(\boldsy…
我们有
⎩⎪⎪⎨⎪⎪⎧∂xi∂f+j=1∑mμj∂xi∂gj=0,(i=1,2,...,n),μjgj(x)=0,(j=1,2,...,m),μj≥0,(j=1,2,...,m).(7)上式便称为不等式约束优化问题(6)的KKT(Karush-Kuhn-Tucker)条件. μj称为KKT乘子,且约束起作用时μj≥0,gj(x)=0;约束不起作用时μj=0,gj(x)<0 [3].
注意这里的约束起作用时, “μj≥0,gj(x)=0” 和上面讨论的 “μj>0,gj(x)=0” 的区别,但这里是正确的,也就是说上面的证明还不够严谨,那么具体要怎样更严谨的证明呢?
总结:同时包含等式和不等式约束的一般优化问题[3]

参考文献
[1] 可导与可微等价吗?有什么区别?
[2] 高等数学.第六版.下册
[3] 浅谈最优化问题的KKT条件
凸优化有关书目:
Numerical Optimization和Convex optimization 两本书的选择?