论文阅读笔记:ADMM - Projective Dynamics: Fast Simulation of Hyperelastic Models with Dynamic Constraints

材料来源于 ADMM ⊇ Projective Dynamics: Fast Simulation of Hyperelastic Models with Dynamic Constraints, IEEE Transactions on Visualization and Computer Graphics, 2017.


1. 形变仿真基础

1.1 优化隐式积分方法

设形变模型网格节点位置 xR3n ,速度 vR3n ,以及质量 MR3n。采用隐式时间积分,得到系统方程为

x(t+Δt)=x(t)+v(t+Δt)Δt

Mv(t+Δt)=Mv(t)+fext(Δt)+f(t+Δt)Δt

进一步可记作

1Δt2M(x(t+Δt)x~(t+Δt))=f(t+Δt)

其中,x~(t+Δt)=x(t)+v(t)Δt+M1fext(t)Δt2 ,其为不考虑隐式力(implicit forces f)情况下的形变位置预测。

通常情况下,由于弹性力 f 是位置 x 及速度 v 的非线性函数,上述方程是一个大型、非线性系统方程,其求解计算量非常大。在现有的仿真方法中,通常将上述非线性系统线性化后直接求解(linearize the system about the current state, applying one iteration of Newton's method)。但该方法仍有许多局限。

另一种方法是将上述系统转化为优化问题。当 f 是保守力(conservative)时,其可以记作势能的导数,即 f=U(x),则上述系统方程可以转化为如下最优化问题

x(t+Δt)=argminx(12Δt2||xx~(t+Δt)||M2+U(x))

其中 ||x||M=xTMx,为了简化描述,可将 x(t+Δt)x~(t+Δt) 分别记作 xx~

1.2 形变能函数

通常情况下,形变能函数 U 是多个能量子项的和,每个能量子项仅与少量节点有关。在这里,为每个能量子项定义一个“降阶矩阵”(reduction matrix) Di,则每个能量子项所对应 Dix。那么,形变能函数可以记作:

U(x)=i=1mUi(Dix)

其中,Ui maps the local coordinates to the corresponding energy. 为了简便起见,将上述公式记作如下形式:

U([D1xD2xDmx])=i=1mUi(Dix)

因此,即有 U(x)=U(Dx) ,其中 D=[D1TD2TDnT]T ,那么,上述最优化问题可记作

minx12Δt2||xx~||M2+U(Dx)

举例,对于质点弹簧模型,就某根弹簧而言,其所对应的节点为 xaxb,弹簧的长度和刚度分别为 lk,则选择 Di 使得 Dix=[xbxa] ,同时,定义 Ui(Dix)=12k(||Dixl||)2这里的 reduction matrix Di 更像是一个选择矩阵,把与能量子项相关的网格节点位置从整体中选择出来,同时将相关的网格节点位置组合计算后得到一个统一变量。(照这样讲,对于四面体单元,Dix 可以是相应四面体单元的形变梯度 Fi)。

2. 基于 ADMM 的形变仿真方法

2.1 ADMM 基础

ADMM (alternating direction method of multipliers) 是一种求解如下最优化问题的方法,最优化问题通常有如下形式

minx,zf(x)+g(z)

s.t.Ax+Bz=c

通过引入对偶变量(dual variable) u ,其求解过程如下:

xn+1=argminx(f(x)+ρ2||Ax+Bznc+un||2)

zn+1=argminz(g(z)+ρ2||Axn+1+Bzc+un||2)

un+1=un+(Axn+1+Bzn+1c)

其中,ρ 是迭代步长,上标 n 是迭代步数。

注1:当 fg 都是凸函数时,ADMM 算法可以保证任意步长 ρ 都能收敛到最优值。特别注意,fg 必须是可微的(differentiable)。但是,实际应用中发现,尽管形变模型中 fg 不可微,ADMM 方法也有很好的表现。

注2:ADMM 有两个特点值得注意。(1)对变量 xz 的缩放(rescaling)并不会影响迭代收敛速度。(we get exactly the same sequence of iterates as we would for the original problem.);(2)对约束的缩放(rescaling)会极大的影响收敛速率。即,如果将原始的约束最优化问题转化为如下形式:

minx,zf(x)+g(z)

s.t.WAx+WBz=Wc

通过引入可逆矩阵 W 可以显著的影响 ADMM 算法的收敛速率。

附录 A 中证明,当 fg 是二次凸函数,B 是可逆矩阵时,选择 ρ=1 以及 W 使得 g(z)=12||WBz||2,则 ADMM 算法每次迭代都使得误差减半(即收敛速度非常快)。已知形变仿真中,f 为二次凸函数,那么,我们就需要恰当的选择 W,从而使 g 也是二次凸函数。??没有特别懂这儿??

2.2 基于 ADMM 求解优化隐式积分下的形变

(1) 采用 ADMM 求解如 1.2 中所述的最优化问题,则上述最优化问题可以先写作如下形式

minx12Δt2||xx~||M2+U(z)

s.t.W(Dxz)=0

注:感觉这里就是将 Dx 替换为 z,同时,通过添加约束,使得两者相等。

那么,对照 ADMM 方法的最优化函数形式,有

f(x)=12Δt2||xx~||M2

gz=U(z)

A=WD

B=W

c=0

(2) 下面,进行详细的分析。如 1.2 所述,物体的形变能被分为多个能量子项 Ui(Dix) ,因此,在这里也将 z 分成相应的子项 zi,并将权重矩阵 W 记作对角块矩阵(block diagonal with blocks),即

z=[z1z2zm],W=[W1W2Wm]

也就是讲,W(Dxz)=0 可以记作

[W1W2Wm][D1xz1D2xz2Dmxzm]=[000]

简记为 Wi(Dixzi)=0for alli=1,,m. 。通常,Wi=ωiI

(3) 如 2.1 所述,设 ρ=1,并选择 Wi 使得 Ui 近似于二次函数,即选择可逆矩阵 Wi 使得 Ui(zi) 约等于 12||Wizi||2 (原文:we fix ρ=1, and choose Wi for each energy tem Ui to approximate it by a quadratic function. That is, we seek an invertible matrix Wi such that Ui(zi)12||Wizi||2 over the likely range of values of zi.)

具体而言,与论文 Liu et. al 相似,采用 Ui 的 Hessian 矩阵 (using the Hessian of Ui at a single point)。例如,对于弹簧质点模型,弹簧势能为 U(zi)=12ki(||zi||li)2 ,Hessian 矩阵在 zi=0 处无定义,且在 ||zi||=li 处秩为1(has rank 1),因此,采用 12ki||zi||2 近似形变能 Ui(zi) (we may take Ui(zi)12ki||zi||2 as a reasonable quadratic approximation of the global behavior of the spring energy.)

2.3 求解计算流程

引入 dual variable u 之后,将 W1u 记作 u¯,ADMM 算法的计算流程如下:

xn+1=argminx(12Δt2||xx~||M2+12||W(Dxzn+u¯n)||2)=(M+Δt2DTWTWD)1(Mx~+Δt2DTWTW(znu¯n))

注:感觉在这里,是对最优化做了一次求解,导数等于零。

zn+1=argminz(U(z)+12||W(Dxn+1z+u¯n)||2)

注:这里便是优化求解。但为什么不和上面一样,做一次求解呢?

u¯n+1=u¯n+Dxn+1zn+1

在迭代求解的过程中,可采用如下方式计算残差,当残差小于给定阈值时,停止迭代。The primal and dual residuals are

rn+1=W(Dxn+1zn+1)sn+1=DTWTW(zn+1zn)

3. ADMM 算法的物理解释

(大致看了一下这段,感觉给出的解释,更像是从广义力,或者说是变换后的空间,解释了优化的流程。并不是从笛卡尔坐标系中的 x 的角度出发,而是变换空间后,从 Dx 的视角出发的。感觉好像还挺像那么回事的。后面再具体看吧。)

posted @   wghou09  阅读(206)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示