统计学、机器学习和科学计算中出现了很多结构复杂且可能非凸、非光滑的优化问题。交替方向乘子法很自然地提供了一种适用范围广泛、容易理解和实现、可靠性不错地解决方案。该方法在20世纪70年代发展起来地,与许多其他算法等价或密切相关,如对偶分解、乘子方法、Douglas-Rachford Splitting方法、Dykstra交替投影方法、Bregman对于带l 1 l_1l1范数问题地迭代算法、近似点算法等、本届首先介绍交替方向乘子法地基本算法;在介绍了Douglas-Rachford Splitting方法之后,说明见其应用在对偶问题上与交替方向乘子法应用在原始问题上等价;然后给出交替方向乘子法地一些变形技巧,以及它和其他一些算法地关系;接着给出大量实际问题地例子,并展示如何用交替方向乘子法来求解这些问题
一、交替方向乘子法
本节考虑如下凸问题
min x 1 , x 2 f 1 ( x 1 ) + f 2 ( x 2 ) s . t . A 1 x 1 + A 2 x 2 = b , (1) \begin{aligned} &\min_{x_1,x_2}\quad f_1(x_1)+f_2(x_2)\\ & s.t.\quad A_1x_1+A_2x_2=b, \end{aligned}\tag{1}x1,x2minf1(x1)+f2(x2)s.t.A1x1+A2x2=b,(1)
其中f 1 , f 2 f_1,f_2f1,f2是适当地闭凸函数,但不要求是光滑的,x 1 ∈ R n , x 2 ∈ R m , A 1 ∈ R p × n , A 2 ∈ R p × m , b ∈ R p x_1\in\mathcal{R^n},x_2\in\mathcal{R^m},A_1\in\mathcal{R^{p\times n}},A_2\in\mathcal{R^{p\times m}},b\in\mathcal{R^p}x1∈Rn,x2∈Rm,A1∈Rp×n,A2∈Rp×m,b∈Rp.这个问题的特点是目标函数可以分成彼此分离的两块,但是变量被线性约束结合在一起。常见的一些无约束和带约束的优化问题都可以表示成这一形式。下面的一些例子将展示如何把某些一般的优化问题转化为适合交替方向乘子法求解的标准形式。
例1 可以分成两块的无约束优化问题
min x f 1 ( x ) + f 2 ( x ) \min_x f_1(x)+f_2(x)xminf1(x)+f2(x)
为了将此问题转化为标准形式(1),需要将目标函数改成可分的形式。我们可以通过引入一个新的变量z zz并令x = z x=zx=z,将问题转化为
min x , z f 1 ( x ) + f 2 ( z ) , s . t . x − z = 0. \begin{aligned} & \min_{x,z}\quad f_1(x)+f_2(z), \\ & s.t.\quad x-z=0. \end{aligned}x,zminf1(x)+f2(z),s.t.x−z=0.
例2 带线性变化的无约束优化问题
min x f 1 ( x ) + f 2 ( A x ) . \min_{x} f_1(x)+f_2(Ax).xminf1(x)+f2(Ax).
类似地,我们可以引入一个新的变量z zz,令z = A x z=Axz=Ax,则问题变为
min x , z f 1 ( x ) + f 2 ( z ) , s . t . A x − z = 0 \begin{aligned} &\min_{x,z}\quad f_1(x)+f_2(z),\\ &s.t.\quad Ax-z = 0 \end{aligned}x,zminf1(x)+f2(z),s.t.Ax−z=0
对比问题(1)可知,A 1 = A , A 2 = − I A_1=A,A_2=-IA1=A,A2=−I
例3 凸集上的约束优化问题
min x f ( x ) s . t . A x ∈ C . \begin{aligned} &\min_x\quad f(x)\\ &s.t.\quad Ax\in C. \end{aligned}xminf(x)s.t.Ax∈C.
其中C ⊂ R n C\subset\mathcal{R^n}C⊂Rn为凸集。对于集合约束A x ∈ C Ax\in CAx∈C,我们可以用实行函数I C ( ⋅ ) I_C(\cdot)IC(⋅)将其添加到目标函数中,那么问题可转化为如下形式:
min x f ( x ) + I C ( A x ) , \min_x f(x)+I_C(Ax),xminf(x)+IC(Ax),
其中I C ( z ) I_C(z)IC(z)是集合C的实行函数,即
I C ( z ) = { 0 , z ∈ C , + ∞ , o t h e r w i s e . I_C(z)=\left\{ \begin{aligned} &0,&z\in C,\\ &+\infty,&otherwise. \end{aligned} \right.IC(z)={0,+∞,z∈C,otherwise.
再引入约束z = A x z=Axz=Ax,那么问题转化为
min x , z f ( x ) + I C ( z ) s . t . A x − z = 0 \begin{aligned} &\min_{x,z} f(x)+I_C(z)\\ &s.t. Ax-z = 0 \end{aligned}x,zminf(x)+IC(z)s.t.Ax−z=0
例4 全局一致性问题
min x ∑ i = 1 N ϕ i ( x ) \min_x\sum_{i=1}^{N}\phi_i(x)xmini=1∑Nϕi(x)
令x = z x=zx=z,将x xx复制N NN份,分别为x i x_ixi,那么问题转化为
min x i , z ∑ i = 1 N ϕ i ( x i ) , s . t . x i − z = 0 , i = 1 , 2 , ⋯ , N \begin{aligned} &\min_{x_i,z}\sum_{i=1}^{N}\phi_i(x_i),\\ & s.t. x_i-z=0,i=1,2,\cdots,N \end{aligned}xi,zmini=1∑Nϕi(xi),s.t.xi−z=0,i=1,2,⋯,N
在这里注意,从形式上看全局一致性问题仍然具有问题(1)的结果:如果令x = ( x 1 T , x 2 T , ⋯ , x N T ) T x=(x_1^T,x_2^T,\cdots,x_N^T)^Tx=(x1T,x2T,⋯,xNT)T以及f x ( x ) = ∑ i = 1 N ϕ i ( x i ) , f 2 ( z ) = 0 f_x(x)=\sum_{i=1}^N\phi_i(x_i),f_2(z)=0fx(x)=∑i=1Nϕi(xi),f2(z)=0,则此问题可转化为
min x , z f 1 ( x ) + f 2 ( x ) , s . t . A 1 x − A 2 z = 0 , \begin{aligned} &\min_{x,z}f_1(x)+f_2(x),\\ &s.t. A_1x-A_2z=0, \end{aligned}x,zminf1(x)+f2(x),s.t.A1x−A2z=0,
其中矩阵A 1 , A 2 A_1,A_2A1,A2定义为:
A 1 = [ I I ⋱ I ] , A 2 = [ I I ⋮ I ] . A_1=\begin{bmatrix} &I&&&\\ &&I&&\\ &&&\ddots&\\ &&&&I \end{bmatrix}, A_2=\begin{bmatrix} I\\I\\\vdots\\I \end{bmatrix}.A1=⎣⎢⎢⎡II⋱I⎦⎥⎥⎤,A2=⎣⎢⎢⎢⎡II⋮I⎦⎥⎥⎥⎤.
在全局一致性问题的例子中,我们将问题重写为具有两个变量快的形式,而不是简单地将问题(1)推广为多个变量快地形式,这样做的原因是ADMM算法从两个变量块推广到多个变量块的形式并不一定收敛。
例5 共享问题
min x i ∑ i = 1 N f i ( x i ) + g ( ∑ i = 1 N x i ) \min_{x_i}\sum_{i=1}^{N}f_i(x_i)+g(\sum_{i=1}^{N}x_i)ximini=1∑Nfi(xi)+g(i=1∑Nxi)
为了使目标函数可分,我们将g gg的变量x i x_ixi分别复制一份为z i z_izi,那么问题转化为
min x i , z i ∑ i = 1 N f i ( x i ) + g ( ∑ i = 1 N z i ) , s . t . x i − z i = 0 , i = 1 , 2 , ⋯ , N . \begin{aligned} &\min_{x_i,z_i}\sum_{i=1}^{N}f_i(x_i)+g(\sum_{i=1}^{N}z_i),\\ &s.t. x_i-z_i=0,i=1,2,\cdots,N. \end{aligned}xi,zimini=1∑Nfi(xi)+g(i=1∑Nzi),s.t.xi−zi=0,i=1,2,⋯,N.
容易验证此问题也具有(1)的形式。
下面给出交替方向乘子法(alternating direction method of multipliers, ADMM)的迭代格式,首先写出问题(1)的增广拉格朗日函数:
L ρ ( x 1 , x 2 , y ) = f 1 ( x 1 ) + f 2 ( x 2 ) + y T ( A 1 x 1 + A 2 x 2 − b ) + ρ 2 ∣ ∣ A 1 x 1 + A 2 x 2 − b ∣ ∣ 2 2 , (2) L_{\rho}(x_1,x_2,y)=f_1(x_1)+f_2(x_2)+y^T(A_1x_1+A_2x_2-b)+\frac{\rho}{2}||A_1x_1+A_2x_2-b||_2^2, \tag{2}Lρ(x1,x2,y)=f1(x1)+f2(x2)+yT(A1x1+A2x2−b)+2ρ∣∣A1x1+A2x2−b∣∣22,(2)
其中ρ > 0 \rho>0ρ>0是二次惩罚项的稀疏。常见的求解带约束问题的拉格朗日函数法为如下更新:
( x 1 k + 1 , x 2 k + 1 ) = a r g m i n x 1 , x 2 L ρ ( x 1 , x 2 , y k ) (3) \begin{aligned} (x_1^{k+1},x_2^{k+1}) & = argmin_{x_1,x_2}L_{\rho}(x_1,x_2,y^k) \end{aligned} \tag{3}(x1k+1,x2k+1)=argminx1,x2Lρ(x1,x2,yk)(3)
y k + 1 = y k + τ ρ ( A 1 x 1 k + 1 + A 2 k + 1 − b ) (4) y^{k+1}=y^k+\tau\rho(A_1x_1^{k+1}+A_2^{k+1}-b) \tag{4}yk+1=yk+τρ(A1x1k+1+A2k+1−b)(4)
其中τ \tauτ为步长。在实际求解中,第一步迭代(3)同时对x 1 x_1x1和x 2 x_2x2进行优化有时候比较困难,而固定一个变量求解关于另一个变量的极小化问题可能比较简单,因此我们可以考虑对x 1 x_1x1和x 2 x_2x2交替极小化,这就是交替方向乘子法的基本思路。其迭代格式可以总结如下:
x 1 k + 1 = a r g min x 1 L ρ ( x 1 , x 2 k , y k ) , (5) x_1^{k+1}=arg\min_{x_1}L_{\rho}(x_1,x_2^k,y^k),\tag{5}x1k+1=argx1minLρ(x1,x2k,yk),(5)
x 2 k + 1 = a r g min x 2 L ρ ( x k + 1 , x 2 , y k ) , (6) x_2^{k+1}=arg\min_{x_2}L_{\rho}(x_{k+1},x_2,y^k),\tag{6}x2k+1=argx2minLρ(xk+1,x2,yk),(6)
y k + 1 = y k + τ ρ ( A 1 x 1 k + 1 + A 2 x 2 k + 1 − b ) , (7) y^{k+1}=y^k+\tau\rho(A_1x_1^{k+1}+A_2x_2^{k+1}-b),\tag{7}yk+1=yk+τρ(A1x1k+1+A2x2k+1−b),(7)
其中τ \tauτ为步长,通常取值为( 0 , 1 + 5 2 ] (0,\frac{1+\sqrt{5}}{2}](0,21+5].关于选择步长的收敛性。
观察交替方向乘子法的迭代格式,第一步固定x 2 , y x_2,yx2,y对x 1 x_1x1求绩效;第二步固定x 1 , y x_1,yx1,y对x 2 x_2x2求极小;第二步更新拉格朗日乘子y yy。这一迭代格式和之前讨论的交替极小化方法非常类似。它们的区别是交替极小化方法的第一步是针对拉格朗日函数求极小,而ADMM的第一步将其化成了增广拉格朗日函数。虽然从形式上看两个算法只是略有差别,但这种改变会带来截然不同的算法表先。ADMM的一个直接的改善就是去掉了目标函数f 1 ( x ) f_1(x)f1(x)强凸的要求,其本质还是由于它引入了二次惩罚项。而在交替极小化方法中我们要求f ( x ) f(x)f(x)为强凸函数。
需要注意的是,虽然交替方向乘子法引入了二次惩罚项,但对一般的闭凸函数f 1 f_1f1和f 2 f_2f2,迭代(5)和迭代(6)在某些特殊情况下仍然不是连定义的。本届假设每个子问题的解均是存在且唯一的,但读者应当注意到这个假设对一般闭凸函数是不成立的。
与无约束优化问题不同,交替方向乘子法针对问题(1)是带约束的优化问题,因此算法的收敛准则应当借助约束优化问题的最优性条件(KKT条件)。因为f 1 , f 2 f_1,f_2f1,f2均为闭凸函数,约束为线性约束,所以但Slater条件成立时,可以使用凸优化问题的KKT条件来作为交替方向乘子法的收敛准则。问题(1)的拉格朗日函数为
L ρ ( x 1 , x 2 , y ) = f 1 ( x 1 ) + f 2 ( x 2 ) + y T ( A 1 x 1 + A 2 x 2 − b ) L_{\rho}(x_1,x_2,y)=f_1(x_1)+f_2(x_2)+y^T(A_1x_1+A_2x_2-b)Lρ(x1,x2,y)=f1(x1)+f2(x2)+yT(A1x1+A2x2−b)
若x 1 ∗ , x 2 ∗ x_1^*,x_2^*x1∗,x2∗为问题(1)的最优解,y ∗ y*y∗为对应的拉格朗日橙子,则以下条件满足:
0 ∈ ∂ x 1 L ( x 1 ∗ , x 2 ∗ , y ∗ ) = ∂ f 1 ( x 1 ∗ ) + A 1 T y ∗ , (8a) 0\in\partial_{x_1}L(x_1^*,x_2^*,y^*)=\partial f_1(x_1^*)+A_1^Ty^*,\tag{8a}0∈∂x1L(x1∗,x2∗,y∗)=∂f1(x1∗)+A1Ty∗,(8a)
0 ∈ ∂ x 2 L ( x 1 ∗ , x 2 ∗ , y ∗ ) = ∂ f 2 ( x 2 ∗ ) + A 2 T y ∗ , (8b) 0\in\partial_{x_2}L(x_1^*,x_2^*,y^*)=\partial f_2(x_2^*)+A_2^Ty^*,\tag{8b}0∈∂x2L(x1∗,x2∗,y∗)=∂f2(x2∗)+A2Ty∗,(8b)
A 1 x 1 ∗ + A 2 x 2 ∗ = b . (8c) A_1x_1^*+A_2x_2^*=b.\tag{8c}A1x1∗+A2x2∗=b.(8c)
在这里条件(8c)又称为原始可行条件,条件(8a)和条件(8b)又称为对偶可行性条件。由于问题中只含等式约束,KKT条件中的互补松弛条件可以不考虑。在ADMM迭代中,我们得到的迭代点实际为( x 1 k , x 2 k , y k ) (x_1^k,x_2^k,y^k)(x1k,x2k,yk),因此收敛准则应当针对( x 1 k , x 2 k , y k ) (x_1^k,x_2^k,y^k)(x1k,x2k,yk)检测条件(8).
二、Douglas-Rachford Splitting算法
Douglas-Rachford Splitting(DRS)算法时一类非常重要的算子分裂算法。它可以用于求解下面的无约束优化问题:
min x ψ ( x ) = f ( x ) + h ( x ) (9) \min_x\psi(x)=f(x)+h(x) \tag{9}xminψ(x)=f(x)+h(x)(9)
其中f ff和h hh时闭凸函数。DRS算法的迭代格式为
x k + 1 = p r o x t h ( z k ) , y k + 1 = p r o x t f ( 2 x k + 1 − z k ) , z k + 1 = z k + y k + 1 − x k + 1 \begin{aligned} x^{k+1}&=prox_{th}(z^k),\\ y^{k+1}&=prox_{tf}(2x^{k+1}-z^k),\\ z^{k+1}&=z^k+y^{k+1}-x^{k+1} \end{aligned}xk+1yk+1zk+1=proxth(zk),=proxtf(2xk+1−zk),=zk+yk+1−xk+1
其中t时一个正的常数,我们还可以通过一系列变形来得到DRS格式的等价迭代。首先在原始DRS格式中按照y , z , x y,z,xy,z,x的顺序更新,则有
y k + 1 = p r o x t f ( 2 x k − z k ) , z k + 1 = z k + y k + 1 − x k , x k + 1 = p r o x t h ( z k + 1 ) . \begin{aligned} y^{k+1}&=prox_{tf}(2x^{k}-z^k),\\ z^{k+1}&=z^k+y^{k+1}-x^{k},\\ x^{k+1}&=prox_{th}(z^{k+1}).\\ \end{aligned}yk+1zk+1xk+1=proxtf(2xk−zk),=zk+yk+1−xk,=proxth(zk+1).
引入辅助变量ω k = z k − x k \omega^k=z^k-x^kωk=zk−xk,并注意到上面迭代中变量z k , z k + 1 z^k,z^{k+1}zk,zk+1可以小区,则得到DRS算法的等价迭代格式:
y k + 1 = p r o x t f ( x k − ω k ) , x k + 1 = p r o x t h ( ω k + y k + 1 ) , ω k + 1 = ω k + y k + 1 − x k + 1 . \begin{aligned} y^{k+1}&=prox_{tf}(x^{k}-\omega^k),\\ x^{k+1}&=prox_{th}(\omega^k+y^{k+1}),\\ \omega^{k+1}&=\omega^k+y^{k+1}-x^{k+1}.\\ \end{aligned}yk+1xk+1ωk+1=proxtf(xk−ωk),=proxth(ωk+yk+1),=ωk+yk+1−xk+1.
三、常见的变形和技巧
本小节将给出交替方向乘子法的一些变形以及实现交替方向乘子法的一些技巧。
线性化
我们构造ADMM的初衷时将自变量拆分,最终使得关于x 1 x_1x1和x 2 x_2x2的子问题有显示解。但是实际应用中,有时子问题并不容易求解,或者没必要精确求解。那么如何寻找子问题的一个近似呢?
不失一般性,我们考虑第一个子问题,即
min x 1 f 1 ( x 1 ) + ρ 2 ∣ ∣ A 1 x 1 − v k ∣ ∣ 2 , (10) \min_{x_1} f_1(x_1)+\frac{\rho}{2}||A_1x_1-v^k||^2,\tag{10}x1minf1(x1)+2ρ∣∣A1x1−vk∣∣2,(10)
其中
v k = b − A 2 x 2 k − 1 ρ y k . (11) v^k=b-A_2x_2^k-\frac{1}{\rho}y^k.\tag{11}vk=b−A2x2k−ρ1yk.(11)
当子问题不能显示求解时,可采用线性化的方法近似求解问题(9).线性化技巧实际上时使用近似点项对子问题目标函数吉星二次近似。当子问题目标函数可微时,线性化可见问题(9)变为:
x 1 k + 1 = a r g min x 1 { ( ∇ f 1 ( x 1 k ) ) + ρ ( A 1 T ( A 1 x 1 k − v k ) ) T x 1 + 1 2 η k ∣ ∣ x 1 − x k ∣ ∣ 2 2 } , x_1^{k+1}=arg\min_{x_1}\{(\nabla f_1(x_1^k))+\rho (A_1^T(A_1x_1^k-v^k))^Tx_1+\frac{1}{2\eta_k}||x_1-x^k||_2^2\},x1k+1=argx1min{(∇f1(x1k))+ρ(A1T(A1x1k−vk))Tx1+2ηk1∣∣x1−xk∣∣22},
其中η k \eta_kηk是步长参数,这等价于做一步梯度下降。当目标函数不可微时,可以考虑之间二次项线性化,即
x 1 k + 1 = a r g min x 1 { f ( x 1 ) + ρ ( A 1 T ( A 1 x 1 k − v k ) ) T x 1 + 1 2 η k ∣ ∣ x 1 − x k ∣ ∣ 2 2 } , x_1^{k+1}=arg\min_{x_1}\{f(x_1)+\rho (A_1^T(A_1x_1^k-v^k))^Tx_1+\frac{1}{2\eta_k}||x_1-x^k||_2^2\},x1k+1=argx1min{f(x1)+ρ(A1T(A1x1k−vk))Tx1+2ηk1∣∣x1−xk∣∣22},
这等价于求解子问题(9)时做一步近似点梯度步。当然,若f 1 ( x 1 ) f_1(x_1)f1(x1)时可微函数与不可微函数的和时,也可将其可微部分线性化。缓存分解
如果目标函数中含二次函数,例如f 1 ( x 1 ) = 1 2 ∣ ∣ C x 1 − d ∣ ∣ 2 2 f_1(x_1)=\frac{1}{2}||Cx_1-d||_2^2f1(x1)=21∣∣Cx1−d∣∣22,那么针对x 1 x_1x1的更新等价于求解线性方程组
( C T C + ρ A 1 T A 1 ) x 1 = C T d + ρ A 1 T v k , (C^TC+\rho A_1^TA_1)x_1=C^Td+\rho A_1^Tv^k,(CTC+ρA1TA1)x1=CTd+ρA1Tvk,
其中v k v^kvk的定义如(11)式。虽然子问题有显示解,但是每部求解的复杂度仍然比较高,这个时候可以考虑用缓存分解的方法。首先对C T C + ρ A 1 T A 1 C^TC+\rho A_1^TA_1CTC+ρA1TA1进行Cholesky分解并缓存分解的结果,在每步迭代中只需要求解简单的三角形方程组;当ρ \rhoρ发生更新时,就要重新进行分解。特别地,当C T C + ρ A 1 T A 1 C^TC+\rho A_1^TA_1CTC+ρA1TA1一部分容易求逆,另一部分时低秩的情形,可以用SMW公式来求逆。优化转移
有时候为了方便求解子问题,可以用一个性质郝的矩阵D近似二次项A 1 T A 1 A_1^TA_1A1TA1,此时子问题(10)替换为
x 1 k + 1 = a r g min x 1 { f 1 ( x 1 ) + ρ 2 ∣ ∣ A 1 x 1 − v k ∣ ∣ 2 2 + ρ 2 ( x 1 − x k ) T ( D − A 1 T A 1 ) ( x 1 − x k ) } , x_1^{k+1}=arg\min_{x_1}\{f_1(x_1)+\frac{\rho}{2}||A_1x_1-v^k||_2^2+\frac{\rho}{2}(x_1-x^k)^T(D-A_1^TA_1)(x_1-x^k)\},x1k+1=argx1min{f1(x1)+2ρ∣∣A1x1−vk∣∣22+2ρ(x1−xk)T(D−A1TA1)(x1−xk)},
其中v k v^kvk的定义如(11)式,这种方法也称为优化转移。通过选取合适的D,当计算a r g min x 1 { f 1 ( x 1 ) + 2 ρ x 1 T D x 1 } arg\min_{x_1}\{f_1(x_1)+\frac{2}{\rho}x_1^TDx_1\}argminx1{f1(x1)+ρ2x1TDx1}明显比计算a r g min x 1 { f 1 ( x 1 ) + 2 ρ x 1 T A 1 T A 1 x 1 } arg\min_{x_1}\{f_1(x_1)+\frac{2}{\rho}x_1^TA_1^TA_1x_1\}argminx1{f1(x1)+ρ2x1TA1TA1x1}要容易时,优化转移可以极大地简化子问题地计算。特别地,当D = η k ρ I D=\frac{\eta_k}{\rho}ID=ρηkI时,优化转移等价于做但不地近似点梯度。二次惩罚项系数地动态调节
动态调节二次惩罚项系数在交替方向乘子法地实际应用中时非常重要地数值技巧。在介绍ADMM时我们引入了原始可行性和对偶可行性。在实际求解过程中,二次惩罚项系数ρ \rhoρ太大会导致原始可行性下降很快,但是对偶可行性下降很慢;二次惩罚项系数太小,则会有相反地效果。这样都会导致收敛比较慢或得到地解可行性很差。一个自然地想法是在每次迭代时动态调节惩罚系数ρ \rhoρ地大小,从而使得原始可行性和对偶可行性能够以比较一致地速度下降到零。这种做法通常可以改善算法在实际中地收敛效果,以及使算法表现更少地依赖于惩罚系数地初始选择。一个简单有效地方式是令
ρ k + 1 = { γ p ρ k , ∣ ∣ r k ∣ ∣ > μ ∣ ∣ s k ∣ ∣ , ρ k γ d , ∣ ∣ s k ∣ ∣ > μ ∣ ∣ r k ∣ ∣ , ρ k , o t h e r w i s e \rho^{k+1}=\left\{ \begin{aligned} &\gamma_p\rho^k,&||r^k||>\mu||s^k||,\\ &\frac{\rho^k}{\gamma^d},&||s^k||>\mu||r^k||,\\ &\rho^k,&otherwise \end{aligned} \right.ρk+1=⎩⎪⎪⎪⎨⎪⎪⎪⎧γpρk,γdρk,ρk,∣∣rk∣∣>μ∣∣sk∣∣,∣∣sk∣∣>μ∣∣rk∣∣,otherwise
其中μ > 1 , γ p > 1 , γ d > 1 \mu>1,\gamma_p>1,\gamma_d>1μ>1,γp>1,γd>1是参数,常见地选择为μ = 10 , γ p = γ d = 2 \mu=10,\gamma_p=\gamma_d=2μ=10,γp=γd=2。该惩罚参数更新方式背后地想法是在迭代过程中,将原始可行性和对偶可行性保持在彼此地μ \muμ倍以内。如果原始可行性或对偶可行性下降过慢就应该相应增加或减小二次惩罚项系数ρ k \rho^kρk。但在改变ρ k \rho^kρk地时候需要注意,若之前利用了缓存分解地技巧,此时分解需要重新计算。更一般地,我们可以考虑对每一个约束给一个不同地惩罚系数,审制可以将增广拉格朗日函数中地二次项ρ 2 ∣ ∣ r ∣ ∣ 2 \frac{\rho}{2}||r||^22ρ∣∣r∣∣2替换为ρ 2 r T P r \frac{\rho}{2}r^TPr2ρrTPr,其中P是一个对称镇定矩阵。如果P在郑哥迭代过程中是不变地,我们可以将这个一般地交替方向乘子法解释为标准地交替方向乘子法应用在修改后地初始问题上-----等式约束A 1 x 1 + A 2 x 2 − b = 0 A_1x_1+A_2x_2-b=0A1x1+A2x2−b=0替换为F ( A 1 x 1 + A 2 x 2 − b ) = 0 F(A_1x_1+A_2x_2-b)=0F(A1x1+A2x2−b)=0,其中F为P地Cholesky因子,即P = F T F P=F^TFP=FTF,且F是对角元为正树地上三角矩阵。超松弛
另外一种想法是用超松弛地技巧,在(6)式与(7)式中,A 1 x 1 k + 1 A_1x_1^{k+1}A1x1k+1可以被替换为
α k A 1 x 1 k + 1 − ( 1 − α k ) ( A 2 x 2 k − b ) , \alpha_kA_1x_1^{k+1}-(1-\alpha_k)(A_2x_2^k-b),αkA1x1k+1−(1−αk)(A2x2k−b),
其中α k ∈ ( 0 , 2 ) \alpha_k\in(0,2)αk∈(0,2)是一个松弛参数。但α k > 1 \alpha_k>1αk>1时,这种技巧称为超松弛;但α k < 1 \alpha_k<1αk<1时,这种技巧称为欠松弛。实验表明α k ∈ [ 1.5 , 1.8 ] \alpha_k\in[1.5,1.8]αk∈[1.5,1.8]地超松弛可以提高收敛速度。