条件极值 拉格朗日乘数法
现实问题中,有时会遇到对函数的自变量还有附加条件的极值问题。例如,求表面积为
a
2
a^2
a2而体积为最大的长方体的体积问题。设长方体的三棱长为
x
,
y
,
z
x,y,z
x,y,z,则体积
V
=
x
y
z
V=xyz
V=xyz,又因表面积为
a
2
a^2
a2,所以自变量
x
,
y
,
z
x,y,z
x,y,z还必须满足附加条件
2
(
x
y
+
y
z
+
x
z
)
=
a
2
2(xy+yz+xz)=a^2
2(xy+yz+xz)=a2,像这种对自变量有附加条件的极值称为条件极值。对于有些实际问题,可以把条件极值化为无条件极值。例如上述问题,可由条件
2
(
x
y
+
y
z
+
x
z
)
=
a
2
2(xy+yz+xz)=a^2
2(xy+yz+xz)=a2,将
z
z
z表示成
x
,
y
x,y
x,y的函数
z
=
a
2
−
2
x
y
2
(
x
+
y
)
.
z=\dfrac{a^2-2xy}{2(x+y)}.
z=2(x+y)a2−2xy.
再把它代入
V
=
x
y
z
V=xyz
V=xyz中,于是问题就化为求
V
=
x
y
2
(
a
2
−
2
x
y
x
+
y
)
V=\dfrac{xy}{2} \left(\dfrac{a^2-2xy}{x+y} \right)
V=2xy(x+ya2−2xy)
的无条件极值。
但是在很多情况下,将条件极值化为无条件极值并不这样简单。另有一种直接寻求条件极值的方法,可以不必先把问题化到无条件极值的问题,这就是下面要介绍的朗格朗日乘数法。(这里只给出拉格朗日乘数法的结论,其具体引入思路可参考文献[2] P113,这里不再赘述。)
要找函数
(1)
z
=
f
(
x
,
y
)
z=f(x,y) \tag{1}
z=f(x,y)(1) 在附加条件
(2)
φ
(
x
,
y
)
=
0
\varphi(x,y)=0 \tag{2}
φ(x,y)=0(2) 下的可能极值点,可以先作拉格朗日函数
L
(
x
,
y
)
=
f
(
x
,
y
)
+
λ
φ
(
x
,
y
)
,
L(x,y)=f(x,y)+\lambda\varphi(x,y),
L(x,y)=f(x,y)+λφ(x,y),其中参数
λ
\lambda
λ 称为拉格朗日乘子。求其对
x
x
x与
y
y
y的一阶偏导数,并使之为零,然后与方程(2)联立起来:
(3)
{
f
x
(
x
,
y
)
+
λ
φ
x
(
x
,
y
)
=
0
,
f
y
(
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}
⎩⎪⎨⎪⎧fx(x,y)+λφx(x,y)=0,fy(x,y)+λφy(x,y)=0,φ(x,y)=0.(3)
由这个方程组解出
x
,
y
x,y
x,y 及
λ
\lambda
λ,这样得到的
(
x
,
y
)
(x,y)
(x,y) 就是函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在附加条件
φ
(
x
,
y
)
=
0
\varphi(x,y)=0
φ(x,y)=0 下的可能极值点。
方程组(3)是函数(1)在条件(2)下在
(
x
0
,
y
0
)
(x_0, y_0)
(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
λ
k
h
k
(
x
)
L(\boldsymbol x, \boldsymbol \lambda) = f(\boldsymbol x) + \sum \limits_{k=1}^l{\lambda_k h_k(\boldsymbol x)}
L(x,λ)=f(x)+k=1∑lλkhk(x),再联立方程组:
{
∂
L
∂
x
i
=
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}
⎩⎪⎨⎪⎧∂xi∂L=0(i=1,2,...,n)∂λk∂L=0(k=1,2,...,l)
得到的解为可能极值点,由于我们用的是必要条件,具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件. (me:上述方程组中的第二个方程实际上就是约束条件
h
k
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
0
h_k(x_1, x_2, ..., x_n) = 0
hk(x1,x2,...,xn)=0)
等式约束下的Lagrange乘数法引入了 l l l个Lagrange乘子,或许我们可以把 λ k \lambda_k λk也看作优化变量,这相当于将优化变量个数增加到 ( n + l ) (n+l) (n+l)个, x i x_i xi与 λ k \lambda_k λk一视同仁,均为优化变量,均对他们求偏导。
不等式约束优化
不等式约束优化主要是使用转化的思想——将不等式约束条件转化成等式约束条件,具体做法:引入松弛变量。松弛变量也是优化变量,也需要一视同仁求偏导[3]。
具体而言,我们先看一个一元函数的例子:
KaTeX parse error: Expected group after '\begin{array}' at position 16: \begin{array} \̲ ̲min \ f(x) \\ s…
注:优化问题中,我们必须求得一个确定的值,因此不妨令所有的不等式均取到等号,即 ≤ \leq ≤ 的情况[3].
对于约束
g
1
g_{1}
g1 和
g
2
g_{2}
g2,我们分别引入两个松弛变量
a
1
2
a_{1}^{2}
a12 和
b
1
2
b_{1}^{2}
b12,得到
h
1
(
x
,
a
1
)
=
g
1
+
a
1
2
=
0
h_{1} (x,a_{1} )=g_{1} +a_{1}^{2} =0
h1(x,a1)=g1+a12=0和
h
2
(
x
,
b
1
)
=
g
2
+
b
1
2
=
0
h_{2} (x,b_{1} )=g_{2} +b_{1}^{2} =0
h2(x,b1)=g2+b12=0. 注意,这里直接加上平方项
a
1
2
a_{1}^{2}
a12、
b
1
2
b_{1}^{2}
b12 而非
a
1
a_{1}
a1、
b
1
b_{1}
b1,是因为
g
1
g_{1}
g1和
g
2
g_{2}
g2这两个不等式的左边必须加上一个正数才能使不等式变为等式。若只加上
a
1
a_{1}
a1 和
b
1
b_{1}
b1,又会引入新的约束
a
1
≥
0
a_{1} \geq 0
a1≥0和
b
1
≥
0
b_{1} \geq 0
b1≥0,这不符合我们的意愿。
由此我们将不等式约束转化成了等式约束,此时引入Lagrange函数
(2)
L
(
x
,
a
1
,
b
1
,
μ
1
,
μ
2
)
=
f
(
x
)
+
μ
1
(
a
−
x
+
a
1
2
)
+
μ
2
(
x
−
b
+
b
1
2
)
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}
L(x,a1,b1,μ1,μ2)=f(x)+μ1(a−x+a12)+μ2(x−b+b12)(2)
我们再按照等式约束优化问题(极值必要条件)对其求解,联立方程:
(3)
{
∂
L
∂
x
=
∂
f
∂
x
+
μ
1
d
g
1
d
x
+
μ
2
d
g
2
d
x
=
∂
f
∂
x
−
μ
1
+
μ
2
=
0
,
∂
L
∂
μ
1
=
g
1
+
a
1
2
=
0
,
∂
L
∂
μ
2
=
g
2
+
b
1
2
=
0
,
∂
L
∂
a
1
=
2
μ
1
a
1
=
0
,
∂
L
∂
b
1
=
2
μ
2
b
1
=
0
,
μ
1
≥
0
,
μ
2
≥
0.
\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}
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧∂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 \mu_1 \geq 0, \mu_2 \geq 0 μ1≥0,μ2≥0我们先记住!实际上对于不等式约束前的乘子,我们要求其大于等于0 [3].
对于方程组(3)中的
(4)
{
∂
L
∂
μ
1
=
g
1
+
a
1
2
=
0
,
∂
L
∂
a
1
=
2
μ
1
a
1
=
0
,
μ
1
≥
0.
\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∂L=g1+a12=0,∂a1∂L=2μ1a1=0,μ1≥0.(4)我们可以做如下讨论:
- 当 μ 1 = 0 \mu_1 = 0 μ1=0时, a 1 ̸ = 0 \color{#F00}{a_1 \not = 0} a1̸=0 ( m e : 此 时 a 1 等 于 0 不 可 以 吗 ? \color{#F00}{me:此时a_1等于0不可以吗?} me:此时a1等于0不可以吗?),在Lagrange函数 L L L中,约束 g 1 g_1 g1不起作用;而由 g 1 + a 1 2 = 0 g_1 + a_1^2 = 0 g1+a12=0可知此时 g 1 < 0 g_1 < 0 g1<0.
- 当
μ
1
>
0
\mu_1 > 0
μ1>0时,
a
1
=
0
a_1 = 0
a1=0,由
g
1
+
a
1
2
=
0
g_1 + a_1^2 = 0
g1+a12=0可知此时
g
1
=
0
g_1 = 0
g1=0.
综上有 μ 1 g 1 = 0 \mu_1 g_1 = 0 μ1g1=0.
同理也有 μ 2 g 2 = 0 \mu_2 g_2 = 0 μ2g2=0.
由此,方程组(3)转化为
(5)
{
∂
f
∂
x
+
μ
1
d
g
1
d
x
+
μ
2
d
g
2
d
x
=
0
,
μ
1
g
1
(
x
)
=
0
,
μ
2
g
2
(
x
)
=
0
,
μ
1
≥
0
,
μ
2
≥
0.
\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}
⎩⎪⎨⎪⎧∂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…
我们有
(7)
{
∂
f
∂
x
i
+
∑
j
=
1
m
μ
j
∂
g
j
∂
x
i
=
0
,
(
i
=
1
,
2
,
.
.
.
,
n
)
,
μ
j
g
j
(
x
)
=
0
,
(
j
=
1
,
2
,
.
.
.
,
m
)
,
μ
j
≥
0
,
(
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}
⎩⎪⎪⎨⎪⎪⎧∂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
\mu_j
μj称为KKT乘子,且约束起作用时
μ
j
≥
0
,
g
j
(
x
)
=
0
\mu_j \geq 0, g_j(\boldsymbol x) = 0
μj≥0,gj(x)=0;约束不起作用时
μ
j
=
0
,
g
j
(
x
)
<
0
\mu_j = 0, g_j(\boldsymbol x) < 0
μj=0,gj(x)<0 [3].
注意这里的约束起作用时, “ μ j ≥ 0 , g j ( x ) = 0 \mu_j \geq 0, g_j(\boldsymbol x) = 0 μj≥0,gj(x)=0” 和上面讨论的 “ μ j > 0 , g j ( x ) = 0 \mu_j > 0, g_j(\boldsymbol x) = 0 μj>0,gj(x)=0” 的区别,但这里是正确的,也就是说上面的证明还不够严谨,那么具体要怎样更严谨的证明呢?
总结:同时包含等式和不等式约束的一般优化问题[3]
参考文献
[1] 可导与可微等价吗?有什么区别?
[2] 高等数学.第六版.下册
[3] 浅谈最优化问题的KKT条件