约束弹性问题的BFGS方法

计算科学 线性求解器 约束 牛顿法
2021-12-02 22:36:48

我亲爱的社区,

我想知道为什么 BFGS 方法没有如此广泛地用于模拟仍然严重依赖于反转 hessian 矩阵的机械问题。我基本上对约束问题(例如界面上的接触)感兴趣,并且我知道一些作者提出了处理增强拉格朗日的准牛顿近似的方法,但在我看来,计算和反转正则化 hessian 矩阵仍然是选择的方法。我的问题是:为什么?稳定 ?

非常感谢。

亲切的问候,汤姆

1个回答

对于无约束的线性 SPD 问题,BFGS 收敛匹配无条件的共轭梯度。出现在结构力学问题中的微分算子通常具有许多大特征值的病态,这使得无条件迭代方法非常缓慢。为了处理麻烦的频谱,结构力学求解器依赖于稀疏直接方法或预处理迭代方法(通常使用代数多重网格或域分解)。

相比之下,BFGS 是在优化设置中开发的,其中大多数问题的频谱看起来像网格细化下的积分算子,例如,I+K在哪里K紧凑。对于这些问题的线性版本,Krylov 方法将在恒定数量的迭代中收敛,与分辨率无关。Hessian 通常是密集的并且实际上无法访问,因此它以未组装的形式应用,只有恒等或对角缩放可以用作“种子”HessianH0. 因此,BFGS 是一种改进逆 Hessian 的粗略近似的方法。

在解决微分问题时,我们可以使用 BFGS 作为一种滞后方法,从一个很好的近似开始,但构建起来很昂贵。当非线性代表解决问题的一部分困难时,这很有用,但病态条件足够重要以至于需要进行预处理。事实证明,这对于弹性等一些问题非常有效。

Peter Brune 和我最近就此写了一篇简短的论文:

有关大变形弹性示例,请参见第 9 页的表 II。标准牛顿法需要 10 个 Jacobian 评估、11 个残差评估和 77 个预处理器应用程序(代数多重网格的线性 V 循环;请注意,我们可以使用较少的总预处理器应用程序使用不精确求解,但这会增加 Jacobian 评估的数量) . LBFGS-6 与 AMG 相同的 V 循环用于H0需要 4 个 Jacobian 评估、49 个残差评估和 24 个预处理器应用程序。LBFGS 让我们用 Jacobian 工作换取更多残差评估,同时保持比正常 Jacobian 滞后更快的收敛。

您可以在PETSc中仅使用命令行选项进行尝试,例如

-snes_type qn -snes_qn_restart_type periodic -snes_qn_scale_type jacobian

这种方法对约束弹性的效用将取决于约束变化的速度,但我希望它很有用。我们计划扩展 PETSc 对求解受限系统的支持,以便将这些方法用于弹性接触问题。如果您对此感兴趣,请告诉我们。