多体系统LCP模型转换为QP的严格性分析
1.原始约束与LCP→QP转化的条件
原始的多体接触/摩擦约束满足线性互补问题(LCP)的等价QP条件需要相当严格的假设。 特别是要求系统矩阵对称正定和约束集凸。
对于无摩擦的接触(纯单侧约束),接触力可通过对称的Delassus矩阵 $N = D^T M^{-1} D$ 构造正定二次型;此时LCP可视为某个QP的KKT条件 (线性互补问题(LCP)其实就是某类二次规划(QP)的最优性条件,特别是在约束是盒约束(或不等式)时), 满足等价转换条件。
然而,引入库仑摩擦后,法向与切向约束耦合导致非线性互补问题(NCP),不再满足直接转化为凸QP的充分条件。 论文指出基于库仑摩擦的DVI离散化会形成一个非凸的互补问题,需要特殊处理。 因此,原始约束并未天然满足将LCP严格等价为QP的条件。 必须通过假设或修改(如对称化、凸化)使问题满足凸QP条件。
正如论文所述,他们通过引入决策(D3)对NCP进行凸化,使之成为圆锥互补问题(CCP),
这依赖于接触矩阵$N$的对称半正定性并将摩擦锥约束视为凸集Υ_i。 只有经过这样的处理,才能将原始问题转换为在凸约束下求解的QP。
总之,在未作特殊处理前,原始库仑摩擦约束不具备LCP到QP严格等价的充分条件,
需通过对模型加以假设和修正(如将NCP凸化为CCP)才能建立等价的QP模型。
???
我的问题是:你的意思是LCP直接进行提取schur补矩阵和右端项转换为QP是不准确的吗?我这个代码有进行凸化转化为CCP吗?
考证后:
- 无摩擦(线性摩擦锥):直接转 QP 是准确的(前提 N 对称正定)。
- 有摩擦:直接转 QP 不是准确的,得先做凸化(CCP 化)或其他近似。
所以这个我在求解器设计中,没有直接从 LCP 生硬转 QP,而是通过 projectFriction 做了摩擦锥投影, 这个操作已经是凸化,所以求解的是 CCP(Convex Cone Complementarity Problem)。这种 CCP 是可以等价成二阶锥规划(SOCP)或凸 QP 来解的,所以你的方法是符合 QP 求解假设的(但前提是摩擦锥投影正确实现)。
如果要并行,最好从建模阶段就按 CCP 的接触块结构组织数据,这样能像 Chrono 那样实现并行求解.
2.APGD求解的QP与原始LCP(KKT)的关系
APGD方法实际求解的是由接触互补问题的KKT条件形成的QP。
论文明确指出,经过上述凸化处理后,摩擦接触问题可表述为带圆锥约束的二次优化问题 (Equation 11),
\[\min_{\lambda \in \mathcal{K}} \quad f(\lambda) = \frac{1}{2} \lambda^T Z \lambda + \lambda^T d\]其一阶最优性条件正是圆锥互补形式。
也就是说,该QP的KKT条件等价于求解松弛后接触问题的互补条件(CCP)。
APGD(加速投影梯度下降)利用Nesterov方法,在每个仿真步求解这个带摩擦锥约束的QP, 以求出法向和摩擦方向的约束力。
实际上,APGD方法等价于求解上述QP的对偶形式: 正如论文所述,通过放松原始问题得到的凸优化问题的对偶形式“实质上就是本文采用的方法”。
因此,APGD并非直接求原始LCP,而是求解来自(松弛后)LCP的KKT条件对应的QP。 这一QP的目标函数一般是$ \frac{1}{2}\gamma^T N \gamma + r^T \gamma$, 其中$\gamma$为未知冲量/约束力,$N$为接触的Schur补矩阵,$r$为外力和上一时刻状态形成的项。
QP的约束$\gamma_i\in Υ_i$即各接触力需位于库仑摩擦圆锥内。 APGD通过迭代$\gamma$使其满足KKT:梯度步相当于计算$N\gamma + r$,投影步将$\gamma$投影回摩擦锥可行域。
综上,APGD求解的正是松弛后接触问题KKT条件对应的QP,从数值角度保证了等价于该松弛互补问题的解。 需要注意,这里的KKT对应的是经过凸化/松弛处理后的问题,而非未经松弛的原始NCP模型。
3.摩擦锥投影、互补松弛与伪变量的近似处理 (后续深入研究)
在该方法中,库仑摩擦约束通过圆锥投影精确处理,而法向-切向互补条件则经过松弛处理,引入了一定近似。 具体而言:
-
摩擦锥投影: APGD算法在每次梯度更新后对解进行投影,确保摩擦力$\gamma_{i,u}, \gamma_{i,w}$落在摩擦圆锥$Υ_i$内, 即满足$\sqrt{\gamma_{i,u}^2+\gamma_{i,w}^2}\le \mu_i \gamma_{i,n}$。 这一投影实现了库仑摩擦的最大耗散原则,相当于在切向方向上寻找使滑动速度最小的力 (见论文Eq.7)。 该投影是非光滑但物理精确的(没有对摩擦锥进行光滑近似), 因此摩擦锥约束本身未被放宽,而是通过凸投影严格施加。 代码层面,约束类也将摩擦约束标记为Mode::FRICTION并在求解时投影到摩擦锥上; 投影操作会确保法向反力非负、切向力被截断在允许圆锥内 (例如基础类默认将负向反力置零,派生类会对切向分量按$\mu$约束剪切)。 因此摩擦锥约束的处理是通过投影实现的精确满足,并未通过引入光滑伪变量等来近似摩擦锥。
-
互补条件松弛: 主要的近似来源于法向非穿透互补条件的放松。 原始NCP中法向速度与法向冲量满足$v_n \ge 0,\ \gamma_n \ge 0,\ v_n\gamma_n=0$, 且$v_n$公式中包含摩擦项(如De Saxcé等提出的广义速度$v_n + \mu |v_T|$)。 本文通过减去该摩擦耦合项$\mu|v_T|$来修改法向速度表达式。 这意味着法向约束不再耦合切向滑动速度, 从而将原本的广义互补条件转化为标准形式 $0\le v_n^\text{(mod)} \perp \gamma_n \ge 0$。 这种处理等价于互补条件的凸化/松弛:舍弃了摩擦对法向约束的影响,使法向约束独立且凸。 这一步引用了Anitescu和Hart的方法并在论文Eq.(9)中给出松弛后的条件。 因此,法向-切向互补被分解为一个圆锥约束,这是核心的近似。代码实现中并未显式出现$\mu|v_T|$项, 这表明求解时已采用解耦形式:法向约束只关注法向速度与冲力的互补,摩擦通过锥约束处理。 这种松弛使问题变为凸规划,但牺牲了原模型的严格互补耦合关系。
-
伪变量与松弛参数: 在代码中看到约束柔化参数(如“约束力混合”CFM)被提供,用于引入一个人工柔顺度以缓解数值奇异。CFM在约束方程中加入$ \text{cfm} \cdot \lambda$项,相当于引入虚拟弹簧以允许微小侵入。这是一种常见的数值松弛技巧,但在论文方法中并未重点使用,通常默认设为0保持理想刚性(CFM主要在需要稳定迭代时才启用)。此外,接触稳定项$1/h \Phi(q^{(l)})$(见下节)本身可视作引入了一个伪速度/位移变量用于消除穿透。总体而言,该方法主要通过物理模型层面的松弛(修改互补公式)来获得QP,而非增加额外伪变量来线性化摩擦锥或光滑库仑摩擦。摩擦求解未采用正则化(如粘滑过渡),而是直接投影,保持了库仑模型的非光滑特性。必要时的CFM/柔化仅是为数值稳健性提供,可视为与Anitescu等方法中的松弛类似的概念,但它不是模型转换的核心步骤。
相关知识点
1.系统矩阵对称正定
“系统矩阵对称正定”和“约束集凸”是将**线性互补问题(LCP)转换为二次规划问题(QP)**的两个重要数学条件。下面我详细讲解它们各自的含义,以及为什么这两者对从 LCP 到 QP 的等价转化至关重要。
系统矩阵对称正定(Symmetric Positive Definite, SPD)定义:
一个矩阵 $M \in \mathbb{R}^{n \times n}$ 被称为对称正定矩阵,当且仅当满足以下两个条件: * 对称性:$M = M^T$ * 正定性:对任意非零向量 $z \in \mathbb{R}^n$,有:
\[z^T M z > 0\]🧩 在多体动力学中,它是谁?
在APGD 和 Dantzig 所求解的 LCP 形式如下:
\[w = M z + q,\quad w \geq 0,\; z \geq 0,\; w^T z = 0\]其中:
- $M = J M^{-1} J^T$:这是所谓的 系统矩阵(Schur 补矩阵)
- $J$:约束 Jacobian
- $M^{-1}$:质量矩阵的逆,稀疏对角正定矩阵
所以如果:
- 质量矩阵 $M \succ 0$
- 约束 Jacobian $J$ 满秩
则 $J M^{-1} J^T$ 就是对称正定的。
✅ 重要性:
如果系统矩阵是对称正定的,那么原始的 LCP 就可以等价地转化为一个凸二次规划(QP)问题:
\[\min_{z \geq 0} \;\; \tfrac{1}{2} z^T M z + q^T z\]这一步的等价性是精确的(数学上严格成立)。
2.约束集凸
约束集凸(Feasible Set is Convex)
✅ 定义:
所谓“约束集凸”是指 QP 的可行解集合(也就是变量 $z$ 的取值范围)必须构成一个凸集。即:
-
如果 $z_1, z_2 \in \mathcal{C}$,那么:
\[\forall \theta \in [0,1],\quad \theta z_1 + (1-\theta)z_2 \in \mathcal{C}\]
🧩 在本问题中,它是谁?
对于无摩擦 LCP:
- 限制是 $z \geq 0$(第1象限)
- 它构成一个正交第一象限的凸集
对于含摩擦的 LCP:
- 限制变为 摩擦锥投影
- 如果使用了 库仑摩擦锥近似(例如二阶锥/多面体包络),则该投影区域仍是凸集
✅ 为什么它重要?
二次规划只有在目标函数是凸函数(由 SPD 保证)且约束集是凸集时,才能保证:
- 一定存在全局最优解
- 数值算法(如 APGD)收敛
- LCP ⇌ QP 是严格等价的
🔁 总结一下
条件 | 数学意义 | 对 QP 转化影响 |
---|---|---|
系统矩阵对称正定 $M \succ 0$ | 目标函数是凸函数 | 保证凸优化问题 |
约束集是凸集 $z \in \mathcal{C}$ | 可行域是凸 | 保证最优解存在与唯一 |
二者共同作用 | 保证 LCP ⇄ QP 完全等价 | 可安全使用 APGD 求解 |
3.Delassus矩阵
\[J \, M^{-1} \, J^T \, \lambda = b\]这里:
- $W = J M^{-1} J^T$ 就叫 Delassus 矩阵(或 Delassus Operator)
- $b$ 是约束速度变化的目标(包括 Baumgarte 稳定项、接触恢复速度等)
含义
- 物理意义: $W$ 描述了约束空间内单位约束力引起的约束速度变化量。 换句话说,它是质量矩阵在约束空间的投影。
-
数学性质:
- $W$ 是对称矩阵(因为 $M$ 对称)
- $W$ 在无冗余约束时是正定矩阵(Symmetric Positive Definite, SPD)
- 在接触摩擦问题中,$W$ 可能是半正定的
4.NCP
这是因为 摩擦约束本质上是非线性的,而且它会把法向约束和切向约束耦合在一起,从而让原本的 LCP(线性互补问题)变成 NCP(非线性互补问题)。
我给你拆开讲一下原因:
1️⃣ 先看无摩擦的情况(纯 LCP)
在无摩擦接触中:
-
法向接触条件:
\[g_n \ge 0, \quad \lambda_n \ge 0, \quad g_n \cdot \lambda_n = 0\]- $g_n$ = 法向间隙
- $\lambda_n$ = 法向接触力
力学离散后,KKT 约束是线性的:
\[w_n = N_{nn} \lambda_n + r_n \ge 0\]这就是一个 LCP,因为 $w_n$ 是 $\lambda_n$ 的线性函数。
2️⃣ 加入摩擦(法向和切向耦合)
当你有摩擦时,切向约束来自 库仑摩擦锥:
\[\|\lambda_t\| \le \mu \lambda_n\]其中:
- $\lambda_t = (\lambda_u, \lambda_v)$ 是切向力
- $\lambda_n$ 是法向力
- $\mu$ 是摩擦系数
这个约束 不是线性:
- 右边 $\mu \lambda_n$ 依赖于 $\lambda_n$
- 左边是切向力的范数 $|\lambda_t|$,包含平方和再开方的非线性运算
3️⃣ 为什么导致 NCP
在动力学离散方程中,法向和切向力的计算公式是:
\[w_n = N_{nn} \lambda_n + N_{nt} \lambda_t + r_n\] \[w_t = N_{tn} \lambda_n + N_{tt} \lambda_t + r_t\]摩擦锥条件会把 $\lambda_t$ 和 $\lambda_n$ 绑在一起:
- 切向力上界:$|\lambda_t| \le \mu \lambda_n$
- 滑动/静摩擦切换条件:当切向相对速度 $v_t \neq 0$ 时,$|\lambda_t| = \mu \lambda_n$,方向与 $-v_t$ 相反(stick-slip 非线性)
因为这个关系是 乘法形式 + 范数非线性,所以方程系统变成了 非线性互补问题(NCP)。
4️⃣ 如何处理 NCP
在数值计算中,常见的处理方式有:
-
线性化摩擦锥(变成 LCP)
- 用多边形近似圆锥(切向摩擦力方向离散成若干条边)
- 这样 $|\lambda_t| \le \mu \lambda_n$ 变成若干线性不等式
-
直接解 NCP
- 用非线性互补求解器(如 PATH、semismooth Newton)
- 代价高,但更准确
-
投影法(PGS/APGD 等)
- 在每一步梯度下降后,把解投影到摩擦锥上
- 这是 Chrono、你代码里的
projectFriction()
这种方法
💡 一句话总结: 摩擦约束中的 $|\lambda_t| \le \mu \lambda_n$ 是一个非线性几何约束,它把法向力和切向力耦合起来,使得系统从 LCP 变成 NCP。
Reference
- 《An Analysis of Projected Gradient Descent for Solving LCPs》
- Boyd 等人的《Convex Optimization》,第 4 章(二次规划)
- 你上传的 TOG 论文的第 4 节和附录部分对摩擦锥凸化处理也有提及
- 【2】 Mazhar et al. Using Nesterov’s Method to Accelerate Multibody Dynamics with Friction and Contact. ACM TOG, 2015
- 【5】 Mazhar et al. (ibid.), Section 2.3 Convexification Artifacts
- 【11】 Mazhar et al. (ibid.), Equations (6)-(8) and discussion
- 【12】 Mazhar et al. (ibid.), Eq.(9) and CCP formulation
- 【8】 Chrono::Engine Solver Code (ChIterativeSolverVI), constraint projection modes
- 【14】 Chrono::Engine Constraint Code (ChConstraint), compliance term (CFM)