1. 简介
拉格朗日乘子法是一种寻找多元函数在其变量受到一个或多个条件的约束时的局部极值的方法。这种方法可以将一个有 n 个变量与 k 个约束条件的最优化问题转换为一个解有 n+k 个变量的方程组的解的问题。
2. 方法
2.1 拉格朗日乘法定理
设 f:Rn→R 为目标函数,g:Rn→Rc 为约束函数,二者有连续的一阶导数。令 x∗ 为下列问题的一个最优解,使得 rank(Dg(x∗))=c<n,其中 Dg(x∗) 表示偏导矩阵 [Dg(x∗)]j,k=[∂xk∂gj]:
maximizesubject tof(x)g(x)=0
则一定存在一个唯一的拉格朗日乘子 λ∗∈Rc,使得 Df(x∗)=λ∗TDg(x∗)。
2.2 拉格朗日乘子法
为了找到函数 f(x) 在约束条件 g(x)=0 下的极值,可以构造以下的拉格朗日函数:
L(x,λ)=f(x)+λ⋅g(x)
则拉格朗日函数的鞍点中,一定包含原始问题的极值点。所以我们需要求出 L(x,λ) 的所有鞍点,也即需满足:
{∂x∂L(x,λ)=0∂λ∂L(x,λ)=0
2.3 拉格朗日对偶性
在约束最优化问题时,常常会利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。
原始问题
假设 f(x),ci(x),hj(x) 是定义在 Rn 上的连续可微函数。考虑约束以下最优问题
x∈Rnmins.t.f(x)ci(x)≤0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l
称此约束最优化问题为原始最优化问题或原始问题。
首先引入广义拉格朗日函数:
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)
其中,x∈Rn,αi,βj 是拉格朗日乘子,αi≥0。考虑 x 的函数:
θP(x)=α,β:αi≥0maxL(x,α,β)
则有
θP(x)={f(x)+∞x 满足原始问题约束 其他
因此,以下极小化问题
xminθP(x)=xminα,β:αi≥0maxL(x,α,β)
其与原始最优化问题等价。问题 minxmaxα,β:αi≥0L(x,α,β) 称为广义拉格朗日函数的极小极大问题。定义原始问题的最优值:
p∗=xminθP(x)
对偶问题
定义
θD(α,β)=xminL(x,α,β)
再考虑极大化 θD(α,β),即:
α,β:αi≥0maxθD(α,β)=α,β:αi≥0maxxminL(x,α,β)
可以将上述广义拉格朗日函数的极大极小问题表示为约束最优化问题:
α,βmaxs.t.θD(α,β)=xminL(x,α,β)αi≥0,i=1,2,⋯,k
称为原始问题的对偶问题。定义对偶问题的最优值:
d∗=α,β:αi≥0maxθD(α,β)
-
定理一:若原始问题和对偶问题都有最优值,则
d∗=α,β:αi≥0maxxminL(x,α,β)≤xminα,β:αi≥0maxL(x,α,β)=p∗
-
定理二(KKT 条件):对于原始问题和对偶问题,假设函数 f(x) 和 ci(x) 是凸函数,hj(x) 是仿射函数,并且不等式约束 ci(x) 是严格可行的,则 x∗ 和 α∗,β∗ 分别是原始问题和对偶问题的解的充分必要条件是 x∗,α∗,β∗ 满足下面的 KKT 条件:
∇xL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,⋯,kci(x∗)≤0,i=1,2,⋯,kαi∗≥0,i=1,2,⋯,khj(x∗)=0,j=1,2,⋯,l
附录