论文阅读笔记:Parallel Iterative Solvers for Real-time Elastic Deformations (迭代法求解方程组 / 弹性形变仿真)
材料来源于 Siggraph Asia 2018 的 course note Parallel iterative solvers for real-time elastic deformations, SIGGRAPH Asia 2018 Courses, 2018.
0. 概述
在形变仿真中,许多类方法/模型最终归结为对方程组
1. 迭代线性求解器 Iterative Linear Solver
首先,构建迭代形式。 已知线性方程组
接下来,对迭代误差进行分析。 在迭代过程中,误差可以记作如下形式
将
如果我们将上式中的
由此可见,迭代方法线性收敛,且其收敛速度取决于特征值
最后,将介绍 Jacobi 和 Gauss-Seidel 两种迭代形式。 将矩阵
1.1 Jacobi 迭代求解器
将上述迭代中的矩阵分别记作
上述方程右侧全部为已知量,且
其中,
1.2 Gauss-Seidel 迭代求解器
将上述迭代中的矩阵分别记作
对上式进行转化,可得到如下
进而有 (这样转化的一个原因是,
将上述公式展开后,则
其中,
2. Projective and Position-based Dynamics
(待整理)
3. Parallel Descent Method
下面详细介绍非线性优化问题的一类求解方法:下降方法。主要包括优化问题的描述、常见的几类下降方法、以及一种新的下降方法(对并行计算更加友好、计算效率更高)。各类下降方法的基本原理类似,只是在处理搜索方向、步长等各个环节时有所不同。
3.0 问题描述
在形变仿真中,将模型网格节点的位置和速度分别记作
其中,
由于弹性力可由应变能函数计算得到
该非线性优化问题可通过下降方法(Descent Method)求解得到,其主要迭代步骤如*所示。不同方法之间的区别主要在于如何计算搜索方向,通常涉及到梯度
(待添加伪代码)
3.1 常用下降方法
下面将介绍几种常用的下降方法,包括梯度下降法、牛顿法、准牛顿法、非线性共轭梯度法等
3.1.1 梯度下降法 / Gradient Descent Method
在梯度下降法中,搜索方向设定为优化函数的梯度,即
3.1.2 牛顿法 / Newton's Method
为了提高收敛速度,Newton's method approximates
3.1.3 拟牛顿法 / Quasi-Newton Method
由于求解线性方程组、计算 Hessian 矩阵十分耗时,因此可以考虑采用某种方法估计 Hessian 矩阵及其逆。例如,在准牛顿法(如 BFGS 方法)中,采用梯度向量(previous gradient vector)估计 Hessian 矩阵的逆。此外,为了避免存储 dense inverse matrix,L-BFGS 方法通过 m 个梯度向量来依次更新 Hessian 矩阵的逆。尽管 L-BFGS 方法的收敛速度比牛顿法慢,但由于其具有更好的计算性能,单步迭代所消耗的计算资源更少。但是,该方法仍然难以实现并行计算。
3.1.4 非线性共轭梯度法 / Nonlinear Conjungate Gradient (CG) Method
在非线性共轭梯度法中,将共轭梯度法应用到非线性优化问题中。基于 Fletcher-Reeves 定理,搜索方向可计算为:
非线性共轭梯度法与
3.2 基于 Jacobi 和 Chebyshev 的预处理下降方法 / Preconditioning Descent Method by Jacobi+Chebyshev
下面将介绍一种新的方法,参见论文 Descent methods for elastic body simulation on the GPU, ACMTransactions on Graphics (TOG), 2016. 主要包括下降方向计算、步长估计、优化加速、初始化等几个方面。
3.2.1 搜索方向 / Descent Direction
受 preconditioned conjugate gradient 方法的启发,为提高收敛速度,通过 preconditioning 将优化问题转化为 conditioned 状态(a well conditioned one):
其中,
在所有 preconditioners 中,作者更倾向于 Jacobi preconditioner ,这是因为其对 GPU 并行计算更加友好。当优化问题是二次型时,其 Jacobi preconditioner 为常数矩阵
3.2.2 收敛及性能 / Convergence and Performance
收敛的判别条件为
3.2.3 步长调节 / Step Length Adjustment
已知搜索方向
3.2.4 加速方法 / Momentum-based Acceleration
(待补充,主要是调整了某参数
3.2.5 初始化 / Initialization
在迭代的方式求解优化问题时,初始值的设定也十分重要。在实际操作中,作者采用恒定加速度 constant acceleration 的方式,即
3.2.6 一些其他实现细节
例如,每八次迭代,更新一次
4. 结语
上述文章主要介绍了形变仿真计算中通过迭代法求解优化问题。特别是给出了一种适合于 GPU 并行计算的下降方法,可实现高效、准确的形变仿真计算。相关源代码及实现细节,可参照随笔 Source Code and Details for the Descent Method
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗