4. 柔性机构拓扑优化的数学列式

柔性机构拓扑优化之所以不能直接照搬刚度最大化问题,根本原因在于:它追求的不是“抵抗变形”,而是“按指定方式变形并输出力或位移”。因此,数学列式必须把“柔度”从被抑制的对象变成被利用的对象。本节围绕目标函数、约束条件、多目标权衡、输入输出弹簧模型以及互能公式展开,建立一套可落地到代码中的列式框架。

一、目标函数:从柔度最小化到互能最大化

在刚度最大化问题中,目标通常是结构柔度最小化 min c = FᵀU。柔性机构则相反,我们希望在外载荷作用下,输出端产生尽可能大的指定方向位移。最直接的做法是最大化输出位移,但输出位移是绝对值,会随输入载荷大小变化,且容易通过“整体放大变形”而非“定向传动”来作弊。更稳健的选择是互能(Mutual Energy / Mutual Potential Energy, MPE)。

设结构在输入载荷 F_in 作用下产生位移场 U,同时定义一个虚拟的单位输出载荷 F_out(方向为期望输出方向,大小取 1)。互能定义为:

MPE = F_outᵀ · U

它的物理含义是:真实输入载荷引起的位移场,在虚拟输出载荷方向上所做的功。最大化 MPE,等价于让结构在输入载荷下沿期望输出方向产生最大位移,同时抑制垂直方向的寄生运动。相比直接最大化输出位移,互能对载荷幅值不敏感,且天然带有方向选择性,是柔性机构拓扑优化最经典的目标函数。

二、约束条件:体积、平衡与制造性

仅有目标函数会导致材料无限堆积,因此必须引入约束。最基础的是体积约束:

V = Σ ρₑ · vₑ ≤ V* = f · V₀

其中 ρₑ 为单元密度(设计变量),vₑ 为单元体积,f 为体积分数上限(常用 0.2~0.4)。此外还有平衡方程约束 K(ρ)·U = F_in,它通过有限元求解隐式满足,通常不写成显式约束,而是在每次迭代中直接求解。

对于柔性机构,还需关注输入输出刚度约束。若输入刚度过低,驱动器行程会被结构“吃掉”;若输出刚度过低,机构无法抵抗外部负载。因此常引入输入刚度 K_in 与输出刚度 K_out 的下限约束,或将其作为多目标中的惩罚项。

三、多目标权衡:互能与刚度的博弈

柔性机构设计存在一对天然矛盾:互能越大,结构往往越“软”,输出刚度越低;而输出刚度越高,结构越“硬”,互能越小。常见的处理策略有三种:

  • 加权和法:max J = w₁·MPE − w₂·K_out,通过权重调节偏好,简单但权重需反复试凑。
  • 比值法:max J = MPE / K_out,直接追求“单位输出刚度下的互能”,物理意义清晰,无需调权。
  • 约束法:将 K_out ≥ K* 作为硬约束,只最大化 MPE,适合对输出刚度有明确指标的场景。

实际教学中,比值法因无需调参、结果稳定,常作为首选。但需注意:当 K_out 接近零时比值会发散,因此通常对 K_out 加一个小量 ε 防止数值问题。

四、输入输出弹簧模型与互能公式推导

为了在有限元框架中同时描述“驱动器”和“外部负载”,需要在输入、输出节点处各加一个弹簧。输入弹簧 k_in 模拟驱动器的有限刚度,输出弹簧 k_out 模拟外部负载或复位弹簧。此时系统平衡方程变为:

(K + K_in + K_out) · U = F_in

其中 K_in、K_out 为弹簧刚度矩阵,仅作用于对应节点自由度。互能公式可写为:

MPE = F_outᵀ · U = F_outᵀ · (K + K_in + K_out)⁻¹ · F_in

若采用伴随法求灵敏度,可引入伴随变量 λ 满足 (K + K_in + K_out)·λ = F_out,则互能对设计变量的导数可简化为:

dMPE/dρₑ = −λᵀ · (dK/dρₑ) · U

这一形式与刚度最大化问题的灵敏度公式结构一致,只是把位移场 U 替换为伴随场 λ。这意味着:互能最大化问题可以复用刚度最大化问题的灵敏度分析代码,只需额外求解一次伴随方程。这是柔性机构拓扑优化能够高效实现的关键。

柔性机构拓扑优化数学列式与互能求解链 设计域 Ω(单元密度 ρₑ) 输入弹簧 k_in 输出弹簧 k_out F_in U_out F_out (虚拟) 平衡方程 (K + K_in + K_out) · U = F_in 互能目标 MPE = F_outᵀ · U 伴随法灵敏度分析 ① 求解状态方程: (K + K_in + K_out) · U = F_in ② 求解伴随方程: (K + K_in + K_out) · λ = F_out ③ 灵敏度:dMPE/dρₑ = −λᵀ · (dK/dρₑ) · U 优化迭代循环 • 设计变量:单元密度 ρₑ ∈ [ρ_min, 1] • 目标:max MPE / K_out • 约束:Σ ρₑ·vₑ ≤ f·V₀ • 更新:OC 准则或 MMA 求解器 • 收敛:Δρ_max < 0.01 或迭代 200 步 迭代更新 注:F_out 为虚拟单位载荷,方向为期望输出方向;K_in、K_out 为输入/输出弹簧刚度矩阵

五、列式实现要点与参数建议

将上述列式落地时,有几个工程细节直接影响结果质量。第一,虚拟输出载荷的方向必须与期望运动方向一致,若方向定义错误,优化会朝相反方向收敛。第二,输入弹簧刚度 k_in 不宜过大,否则输入位移被弹簧吸收,互能下降;也不宜过小,否则输入节点近似自由,结构可能产生刚体位移。教学示例中可取 k_in = 0.01·K_max,其中 K_max 为满材料设计域的输入节点刚度。第三,输出弹簧 k_out 直接决定输出刚度约束的强弱,若希望机构“有力”,应适当增大 k_out;若只追求位移放大,可减小 k_out。

一个典型的二维柔性夹钳教学示例参数如下:设计域 80×80 网格,体积分数 f = 0.3,输入载荷 F_in = 1 N 作用于左侧中点水平向右,虚拟输出载荷 F_out = 1 N 作用于右侧中点水平向右,k_in = 0.5 N/mm,k_out = 0.1 N/mm,过滤半径 r_min = 2.5 个单元。迭代 150 步后,互能通常从初始的约 0.02 N·mm 提升至 0.15~0.25 N·mm 量级,输出端水平位移约为垂直寄生位移的 5~10 倍。这些数值属于合理假设的示例范围,实际结果会随网格、过滤和求解器设置变化。

判断结果是否合理的三个信号:① 输出端水平位移显著大于垂直方向寄生位移;② 输入节点位移与输出节点位移方向符合预期传动关系;③ 体积分数严格满足约束,且迭代曲线在 100 步后趋于平稳。若互能持续振荡或体积分数超限,应检查灵敏度符号、弹簧刚度设置和过滤半径。

综上,柔性机构拓扑优化的数学列式可概括为:以互能 MPE = F_outᵀ·U 为目标,以体积分数和输入输出弹簧模型为约束,通过伴随法获得灵敏度,并在多目标权衡中选择比值法或约束法平衡互能与输出刚度。这套列式既保留了刚度最大化问题的计算框架,又通过虚拟载荷和弹簧模型引入了柔性机构特有的方向性与负载适应性,是后续数值实现和案例设计的直接依据。