是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,将原问题的约束条件吸收进目标函数中形成新的函数,简化为无约束优化问题以方便求解:
- 构造拉格朗日函数 L(x,y,…,λ)=f(x,y,…)+λg(x,y,…),其中 f(x,y,…) 是原问题目标函数,g(x,y,…) 是约束条件。
- 求解方程组 ∂x∂L=0,∂y∂L=0,…,∂λ∂L=0,得到所有可能的极值点 (x,y,…,λ)。
- 将极值点代入目标函数 f(x,y,…),比较大小,得到最大值和最小值。
假设要求 f(x,y)=x2+y2 在约束条件 x+y=1 下的最小值。:
- 构造拉格朗日函数L(x,y,λ)=f(x,y)+λg(x,y),其中 g(x,y)=x+y−1 是约束条件转换而来。
- 将偏导置零得到方程组 ∂L/∂x=2x+λ=0,∂L/∂y=2y+∂=0,∂/∂λL=x+y−1=0
- 解得 λ=−2,x=y=1/2,由于只有一组解,所以即为全局最优解。
对于不等式约束,需要通过 KKT 条件判断一个点是否是最优点。对于问题:
mins.t.f(x)gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,n
可以构造一个拉格朗日函数:
L(x,λ,μ)=f(x)+i=1∑nλigi(x)+j=1∑nμjhj(x)
对于一组解 x⋆,λ⋆,μ⋆,使用KKT 条件判断是否是一个最优解:
- 稳定性条件 :∇L(x⋆,λ⋆,μ⋆)=0
- 原始可行性:gi(x⋆)≤0;hj(x⋆)=0
- 对偶可行性:λi⋆≥0
- 互补松弛可行性:λi⋆gi(x⋆)=0
知乎
对偶可行性
x⋆ 若是一个最优解,在 x⋆ 处,g(x) 与 f(x) 的梯度方向应该共线且相反,由稳定性条件可得
∇L(x⋆,λ⋆,μ⋆)=∇f(x⋆)+∑iλi∇gi(x⋆)=0⟹λ∇g(x)=−∇f(x)即λg(x)与f(x)梯度方向也相反,所以这里λ≥0否则不满足g(x)与f(x)。
由于条件成立时,hj(x⋆)=0,且gi(x⋆)≤0
f(x⋆)=g(λ⋆,μ⋆)≤f(x)+i=1∑nλi⋆gi(x⋆)+0
松弛互补可行性
x⋆ 有 gi(x⋆)<0时,即正好满足约束,此时约束并不起作用,所以λi⋆=0。
x∗ 有 gi(x⋆)=0 时,即可以转换为等号约束条件。
而对于 g(x⋆)>0的情况,不满足约束,需要舍弃。
在这两种满足约束的情况下λi⋆gi(x⋆)恒等 于0,即为松弛互补可行性。
拉格朗日对偶问题
把 L(x,λ,μ) 看作是关于 λ,μ 的函数,求其最小值为拉格朗日对偶函数:
θ(x)=xminL(x,λ,μ)
也可以表达为θ(x)=infx∈DL(x,λ,μ)
则:
λ,μ;λ≥0maxs.t.θ(λ,μ)λ≥0
称为原问题的拉格朗日对偶问题,常通过对x求导并置零来获得对偶函数的表达形式(KKT的稳定性条件)。
若
λ,μ;λ≥0maxθ(λ,μ)≤xminλ,μ;λ≥0maxL(x,λ,μ)
则称为弱对偶,若
λ,μ;λ≥0maxθ(λ,μ)=xminλ,μ;λ≥0maxL(x,λ,μ)
称为强对偶。
无论原问题是否为凸,对偶问题总是凸的,因为是关于λ和μ的仿射函数。