增广拉格朗日的高效预处理器

计算科学 线性求解器 预处理 约束优化
2021-12-09 02:44:00

我想解决具有非线性等式约束的非线性问题,并且我正在使用带有惩罚正则化项的增强拉格朗日算子,众所周知,它破坏了我的线性化系统的条件数(我的意思是在每次牛顿迭代时) . 惩罚项越大,条件数越差。有人知道在那种特定情况下摆脱这种不良条件的有效方法吗?

更具体地说,我使用的是经典的增广拉格朗日,因为我有很多通常可能是多余的约束。所以盲目地将约束直接合并到原始变量中是非常方便的。我直接在 KKT 系统上尝试了基于变量消除或有效预处理器的其他更复杂的方法,但是由于约束冗余,我遇到了一些麻烦。

关于问题u=[u1,,un]变量被公式化为遵循我的拉格朗日形式

L(u,λ):=W(u)+ρλTc(u)+ρ2c2(u)

所以一般来说,每次牛顿迭代的目标是解决以下形式的问题

AΔu=b
使用(我们放弃约束的粗麻布)
A(u,ρ):=u2W(u)+ρCT(u)C(u)
b(u,ρ):=(uW(u)+(ρ+λTc(u))u(u))
和首都C是为了C(u):=uc(u).

谢谢你。

2个回答

根据问题结构,您可以直接求解病态增广拉格朗日系统。例如,BDDC/FETI-DP 可以求解原始形式的几乎不可压缩的弹性,其收敛速度与泊松比无关(子域上的分段常数,但具有任意跳跃)。类似地,精确再现体积模式的多重网格方法可以具有此属性。这种方法是针对特定问题的,一般来说,较大的惩罚会导致系统难以进行预处理。

为了让预处理器选择更加灵活,我建议引入显式对偶变量并编写更大的鞍点系统

(ACTCρ1)(xy)=(b0)

正如阿诺德·纽迈尔所建议的那样。该系统的条件要好得多,可以让您准确评估残差。如果某个惩罚系统的预处理器Aρ~CTC存在(其中ρ~ρ),您可以将其用作鞍点系统的块预处理器。有关这方面的示例,请参见Dohrmann 和 Lehoucq (2006),其中使用 BDDC 对可压缩问题应用混合形式的不可压缩弹性的前提条件。另一类流行的方法是基于近似 Schur 补码ρ1CA1CT使用“近似换向器”参数。解决鞍点问题的方法种类繁多,参见Benzi、Golub 和 Liesen,Numerical Solution of Saddle Point Problems (2005)的综述。如果您使用的是 PETSc,那么上面评论中描述的许多方法都可以通过PCFIELDSPLIT组件使用运行时选项来构建。

如果您可以更具体地了解问题的根源(您要最小化什么以及限制是什么),我可能会建议更具体的参考资料。

为 KT 条件中的破坏项引入额外变量,您可以找到一个更大的对称系统,该系统在数值上表现良好,只有惩罚因子的倒数进入矩阵。

解决病态系统(A+ρCTC)x=b 什么时候ρ很大,介绍y=ρCx并以表格形式重新提出您的问题Ax+CTy=b,Cxρ1y=0,这通常是条件良好的。