版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/itnerd/article/details/86012869
增广拉格朗日函数法( Augmented Lagrangian method)
一、等式约束
考虑问题:
xminf(x)s.t.ci(x)=0,i=1,⋯,m.
定义增广拉格朗日函数:
Lt(x,λ)=f(x)−i∑λici(x)+2ti∑(ci(x))2
算法迭代步骤为:
- 固定
λ, 更新x:
x+=argminxLt(x;λ)意味着
∇xLt(x+;λ)=∇f(x+)−i∑(λi−tci(x+))∇ci(x+)=0
- 更新
λ:
λi+=λi−tci(x+)
二、不等式约束
考虑问题:
xminf(x)s.t.ci(x)≥0,i=1,⋯,m.
其等价形式为:
xminf(x)s.t.ci(x)−νi=0,νi≥0,i=1,⋯,m.
定义带约束的增广拉格朗日函数:
Lt(x,λ)=f(x)−i∑λi(ci(x)−νi(x))+2ti∑(ci(x)−νi(x))2s.t.νi≥0,i=1,⋯,m.
算法迭代步骤为:
- 固定
λ, 更新
x,ν:
(x+,ν+)=argx,νminLt(x;λ)=argx,νminf(x)+i∑{−λi(ci(x)−νi(x))+2t(ci(x)−νi(x))2}s.t.νi≥0,i=1,⋯,m.(1)
- 更新
λ:
λi+=λi−t(ci(x+)−νi+)
事实上,算法中的
ν 可以消去,由(1)式
(x+,ν+)=argx,νminf(x)+i∑{−λi(ci(x)−νi(x))+2t(ci(x)−νi(x))2}=argx,νminf(x)+2ti∑{−(tλi)2+(ci(x)−νi(x)−tλi)2}=argx,νminf(x)+2ti∑{(ci(x)−νi(x)−tλi)2}s.t.νi≥0,i=1,⋯,m.(2)
从(2)式第二项很容易看出,假如先求得
x+,必然有
νi+=max(ci(x+)−tλi,0)上式中取 max 是为了满足
ν 非负的约束条件。将其代回 (1) 式,得
x+=argxminf(x)+i∑ψ(ci(x),λi,t)其中
ψ(ci(x),λi,t)={−λici(x)+2tci(x)2如果ci(x)−λi/t<0−2tλi2,otherwise
然后更新
λ:
λ+=max(λi−tci(x+),0)