最适化 (Optimization) — CAE用语解说

分类:用语集 | 2026-03-28
CAE visualization for optimization - technical simulation diagram

最适化的定义

🧑‍🎓

CAE中所说的「最适化」与普通数学中的最适化有什么区别呢?


🎓

基本的想法是一样的,都是找到能最小化(或最大化)目标函数设计变量。但CAE的情况下,一次函数评估需要进行FEM或CFD分析,计算成本大得多。例如,一次自动车身结构分析需要花费数小时,就不可能进行1000次反复试验了。


🧑‍🎓

那么具体使用什么方法呢?


🎓

大分为两类。一类是梯度法(gradient-based),利用灵敏度(微分信息)高效地探索下降方向。另一类是元启发式,像遗传算法或粒子群最适化,不使用微分而通过概率进行探索。前者速度快但容易陷入局部解,后者能进行全局探索但需要更多计算次数。


拓扑最适化·形状最适化·尺寸最适化

🧑‍🎓

拓扑最适化形状最适化有什么区别呢?还有尺寸最适化,也听说过。


🎓

三者的区别在于「设计改变的自由度有多大」。

自由度从大到小的顺序是:拓扑 > 形状 > 尺寸。实务中通常先用拓扑最适化确定概形,再用形状最适化进行细节调整,最后用尺寸最适化微调板厚的三步流程。


🧑‍🎓

听说拓扑最适化与3D打印的相性很好,是真的吗?


🎓

完全正确。拓扑最适化的结果通常呈现出像生物骨骼一样的有机形状,用传统切削或铸造很难制造。但增材制造(3D打印)可以直接成形那样的复杂形状。GE Aviation的喷气发动机燃料喷嘴就是著名案例,把20个零部件统合为1个,重量削减了25%。


梯度法 vs 元启发式

🧑‍🎓

梯度法是怎样知道「朝哪个方向改变设计会更好呢」的?


🎓

通过计算灵敏度(sensitivity)。简单来说就是「这个板厚增加0.1mm的话应力会降低多少MPa」这样的偏微分。有三种方法:

  1. 有限差分法:通过微小移动变量进行2次分析,然后取差。简单但需要按变量个数进行分析。
  2. 直接微分法:对支配方程直接求微分产生灵敏度方程。变量少、响应多的情况下有利。
  3. 伴随法(Adjoint Method):响应少、变量多的情况下压倒性有利。后面会详细说明。

🧑‍🎓

那元启发式就不使用微分了吧。什么时候用呢?


🎓

主要在3个场景活跃。首先是目标函数不连续或离散的情况。例如螺栓数量(2个或4个或6个)这样的整数变量无法求微分。其次是局部解众多的多峰值问题。梯度法会陷入最近的谷,但遗传算法可以用整个群体进行广泛探索。最后是分析代码为黑盒无法取得灵敏度的情况。商用软件无法访问源代码时经常使用。


🧑‍🎓

实务中除了遗传算法还有什么方法在用?


🎓

粒子群最适化(PSO)、模拟退火法(Simulated Annealing)、差分进化(Differential Evolution)是标准方法。最近贝叶斯最适化的人气很高。结合代理模型(surrogate model)进行近似后探索,即使是高成本的CFD或碰撞分析,只需数十次样本就能找到好的解。


伴随法(Adjoint Method)

🧑‍🎓

你说伴随法「压倒性有利」,具体有什么了不起的地方?


🎓

伴随法的核心是「即使设计变量有数百万个,计算灵敏度所需的追加联立方程也只需求解一次」。普通有限差分法如果有 $n$ 个变量就需要 $n$ 次分析,但伴随法只需一次伴随分析就能一次性得到全部变量的灵敏度。


🧑‍🎓

什么?100万个设计变量也只需一次?怎么可能?


🎓

关键在于拉格朗日未定乘数法。把目标函数 $J$ 和支配方程残差 $R(\mathbf{u}, \mathbf{x}) = 0$ 结合起来构造的扩展函数:

$$\mathcal{L} = J(\mathbf{u}, \mathbf{x}) + \boldsymbol{\lambda}^T R(\mathbf{u}, \mathbf{x})$$

这里 $\boldsymbol{\lambda}$ 就是伴随变量。令 $\mathcal{L}$ 对 $\mathbf{u}$ 的微分为零,可以导出伴随方程:

$$\left(\frac{\partial R}{\partial \mathbf{u}}\right)^T \boldsymbol{\lambda} = -\left(\frac{\partial J}{\partial \mathbf{u}}\right)^T$$

只需求解这一个伴随方程,就能用下式一次性计算设计变量 $\mathbf{x}$ 各成分的灵敏度:

$$\frac{dJ}{dx_i} = \frac{\partial J}{\partial x_i} + \boldsymbol{\lambda}^T \frac{\partial R}{\partial x_i}$$

右侧的计算只是矩阵-向量乘积,费用极低。在CFD形状最适化中,网格上的全部节点坐标都成为设计变量,没有伴随法几乎不可能。


🧑‍🎓

OpenFOAM也有伴随求解器吧。实际使用时的注意点是?


🎓

很好的问题。OpenFOAM的adjointOptimisationFoam对定常RANS伴随有实用级别的支持。注意点是:首先原始流场(primal)必须充分收敛。残差大的话伴随解也会很糙。其次伴随方程的收敛通常比原方程更难。把松弛系数调小是诀窍。还有乱流模型的伴随处理,可以冻结(frozen turbulence)或严格求解,严格求解的精度更好但需要更多计算资源。


多目标最适化

🧑‍🎓

实际设计中「要减轻重量」和「要提高强度」这样的目标有很多呀。怎样同时满足这些呢?


🎓

这就是多目标最适化。例如汽车车体设计,「质量最小化」和「碰撞能量吸收量最大化」相互矛盾。轻的话吸收量减少,吸收量增加的话就变重。这个权衡的界限就是帕累托前沿,这条曲线上的解都是「某种意义上最优的」。


🧑‍🎓

帕累托前沿上的解全部最优的话,最后怎样选择一个设计?


🎓

数学上都等价,所以最终还是工程师的判断。常用的方法有3种:

  1. 权重法:$\min\ w_1 f_1 + w_2 f_2$ 这样用权重反映优先级。
  2. 膝点(knee point)选择:选择权衡效率最好的「转角」。用少量的质量增加换来大幅强度提升的点。
  3. 制造约束筛选:从帕累托解中,按制造成本、工程、公差等最适化中没有包括的实际条件来筛选。

实务中通常用NSGA-II这样的多目标遗伝算法一次性生成帕累托前沿,然后由团队讨论选择的工作流程。


🧑‍🎓

NSGA-II经常听到,计算成本要多大?


🎓

需要进行「群体大小×世代数」次评估。例如群体100×50世代=5000次。一次分析花1小时的话,简单计算需要5000小时。实际上是用代理模型进行近似,把评估次数减至100~200次,或者在HPC集群上并行执行。modeFRONTIER、HyperStudy这样的最适化平台把这些自动化了。


数学定式化

CAE中的最适化问题通常定式化为如下形式:

$$\begin{aligned} \min_{\mathbf{x}} \quad & J(\mathbf{u}(\mathbf{x}), \mathbf{x}) \\ \text{subject to} \quad & g_j(\mathbf{u}(\mathbf{x}), \mathbf{x}) \leq 0, \quad j = 1, \dots, m \\ & h_k(\mathbf{u}(\mathbf{x}), \mathbf{x}) = 0, \quad k = 1, \dots, p \\ & x_i^L \leq x_i \leq x_i^U, \quad i = 1, \dots, n \end{aligned}$$

这里 $\mathbf{x}$ 是设计变量向量,$\mathbf{u}(\mathbf{x})$ 是FEM/CFD等的状态变量(变位场、速度场等),$J$ 是目标函数(质量、顺应性、阻力等),$g_j$ 是不等式约束(应力上限、体积率等),$h_k$ 是等式约束,$x_i^L, x_i^U$ 是设计变量的上下限。

拓扑最适化中SIMP法(Solid Isotropic Material with Penalization)是代表性的,用各元素的伪密度 $\rho_e \in [0, 1]$ 作为设计变量,弹性模量为:

$$E_e = \rho_e^p \, E_0$$

通过惩罚化处理($p$ 通常为3)。这样可以抑制中间密度(灰度),得到接近0/1的明确材料配置。

相关用语

准确理解CAE用语是团队沟通的基础。— Project NovaSolver也面向实务人士的学习支持。

请告诉我们实务中最适化遇到的课题

Project NovaSolver致力于解决CAE工程师日常面对的课题——设置的复杂性、计算成本、结果解释。你的实务经验会成为更好工具开发的原动力。

联系我们(准备中)
对本文的评价
感谢您的回答!
有帮助
要更多
详情
报告
错误
有帮助
0
要更多详情
0
报告错误
0
由NovaSolver贡献者编写
匿名工程师和AI — 网站地图
查看简介