遗传算法(GA) — CAE用语解释

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

遗传算法(GA)概述

🧑‍🎓

遗传算法(GA)在CAE优化中常听说,它大致是做什么的算法呢?


🎓

简单说,就是一种模仿生物进化的优化手法。创建设计方案的种群(群体),通过选择、交叉、突变这3个操作进行多代演化,逐渐进化出更好的设计。Holland在1975年提出的经典手法,但在CAE中至今仍是主力。


🧑‍🎓

为什么要模仿"进化"呢? 直接求微分找最优值不行吗?


🎓

好问题。梯度法(基于微分)在目的函数光滑且可微时很高效,但CAE现场经常出现非线性、不连续、多峰值的问题。比如碰撞分析,稍微改变参数,响应就可能不连续地变化。GA完全不使用梯度信息,所以即使在这种"粗糙"的问题上也能搜索到最优解。


基本操作:选择、交叉、突变

🧑‍🎓

选择、交叉、突变具体是怎样的操作呢?


🎓

按顺序说明。选择(Selection)是从群体中选择"优秀的父体"的操作。常用的是竞赛选择,随机取出k个个体,从中选择适应度最高的作为父体。轮盘赌选择(按适应度比例的概率选择)也很有名。


🧑‍🎓

交叉怎么样? 生物学上是"生育后代"的意思吧?


🎓

完全正确。交叉(Crossover)是将两个父体的基因(设计变量)结合生成子代的操作。实数值GA中常用SBX交叉(模拟二进制交叉)。CAE优化的设计变量通常是板厚、材料常数、形状参数等连续值,所以SBX交叉很适合。分布指数 $\eta_c$ 越大,生成的子代越接近父体;越小,离父体越远。


🧑‍🎓

突变呢? 从名字看好像就是随机改变数值?


🎓

没错。突变(Mutation)是随机扰动个体的基因,防止过早收敛到局部最优的操作。实数值中通常使用多项式突变(Polynomial Mutation),突变率通常设定为 $p_m = 1/n$($n$ 为设计变量个数)。比如有20个设计变量的话就大约5%。设定过大会变成随机搜索,收敛会变差,需要注意。


GA的基本流程可用以下公式表示,对第 $t$ 代的种群 $P(t)$ 重复该循环:

$$ P(t) \xrightarrow{\text{Selection}} P'(t) \xrightarrow{\text{Crossover}} P''(t) \xrightarrow{\text{Mutation}} P(t+1) $$

每个个体 $\mathbf{x} = (x_1, x_2, \ldots, x_n)$ 是设计变量向量,通过适应度函数 $f(\mathbf{x})$ 进行评估。

CAE优化中的应用

🧑‍🎓

实际用GA进行CAE优化时,通常应用于什么样的问题呢?


🎓

代表性的是结构优化。比如汽车防撞盒的板厚优化,在最小化重量的同时,满足碰撞能量吸收量的约束条件。运行FEA求解器(如LS-DYNA等)一次,就相当于"评估一个个体"。


🧑‍🎓

但是要运行数百次FEA吧? 计算成本不会非常大吗?


🎓

这正是GA的最大课题。群体规模100,50代的话需要5000次分析。一次分析2小时的话,简单计算就是10000小时。所以实务中的做法是引入代理模型(替代模型)来大幅减少评估次数。实际FEA限制在数十到数百次,其余用代理模型预测。这点稍后再详说。


多目标优化与NSGA-II

🧑‍🎓

现场的话,"要轻量化但也要保证刚性"这种有多个目标的情况应该很多吧,GA怎么处理的?


🎓

这就是多目标优化的范畴。最著名的是NSGA-II(非支配排序遗传算法 II,Deb et al., 2002),可以说是CAE多目标优化的实际标准。


🧑‍🎓

NSGA-II的"非支配排序"具体在做什么?


🎓

考虑最小化两个目的函数 $f_1, f_2$ 的问题。个体A被个体B"支配"是指 $f_1(B) \leq f_1(A)$ 且 $f_2(B) \leq f_2(A)$,其中至少一个严格成立的情况。没有被任何个体支配的个体集合形成第1前沿(帕累托前沿的近似)。NSGA-II根据这个前沿给个体排名,同时用拥挤距离(Crowding Distance)维持解的多样性。


NSGA-II的拥挤距离量化了每个个体在目的函数空间中周围的"空隙"程度:

$$ d_i = \sum_{m=1}^{M} \frac{f_m^{(i+1)} - f_m^{(i-1)}}{f_m^{\max} - f_m^{\min}} $$

其中 $M$ 是目的函数的个数,$f_m^{(i\pm1)}$ 是按目的函数 $m$ 排序时相邻个体的值。拥挤距离越大的个体在帕累托前沿上越孤立,会优先进入下一代。

🧑‍🎓

NSGA-II的结果是一个最优解,还是帕累托前沿整体? 工程师怎么从中选择设计方案?


🎓

好问题。帕累托前沿上的所有解都是"无法同时改进两个目标"的最优解,最终选择由工程师判断。比如"重量多5%也可以,但最大位移必须≤10mm"这样的优先级来筛选。这个过程叫做MCDM(多准则决策)。在现场,通常是用可视化工具看帕累托前沿,然后说"这附近的解平衡性不错啊"来选择,这是典型的工作流程。


与拓扑优化的联合应用

🧑‍🎓

拓扑优化给人的印象是密度法(SIMP法)为主,GA怎么和它结合的?


🎓

SIMP法是基于梯度的,擅长单目标、连续密度变量,但涉及多目标离散材料选择(铝 or CFRP or 钛)时就困难了。这时GA就有用武之地。将各单元的密度或材料用比特串编码,用GA进行搜索。


🧑‍🎓

有什么实际的例子吗?


🎓

汽车车体B柱的设计比较有代表性。用NSGA-II同时优化重量最小化侧面碰撞侵入量最小化这两个目标,同时确定板厚分布和加强筋配置。实务中常用"两阶段方法"——先用SIMP法获得大致的拓扑方向,再用GA进行尺寸优化和材料选择。随着增材制造(3D打印)的普及,GA输出的自由形状现在也能实际制造了。


与代理模型的联合使用

🧑‍🎓

刚才提到的代理模型具体是什么原理?


🎓

代理模型就是"便宜的替代函数"。最常用的是克里金法(高斯过程回归)RBF(径向基函数)网络。先用DOE方法采样少数实FEA点(约50~100点),建立响应曲面,然后用代理模型代替GA的评估。找到有希望的解后,再用实FEA验证并更新代理模型——这个循环就是EGO(高效全局优化)的思想。


🧑‍🎓

代理模型精度不好的话,GA不会朝着错误的方向进化吗?


🎓

这个风险确实存在。所以克里金法的情况下,不仅使用预测值,还用预测的不确定性(预测方差),用叫Expected Improvement(EI)的获取函数来平衡"预测值好的区域"和"不确定性大的(还没探索过的)区域"的探索。实务中最终候选方案总是要用实FEA验证,所以代理模型的误差一般不会出现致命问题。


相关用语

准确理解CAE用语是团队内沟通的基础。 — Project NovaSolver也致力于实务工程师的学习支持。

分享您使用遗传算法的挑战

Project NovaSolver致力于解决CAE工程师每天面对的问题——建立的复杂性、计算成本、结果解释——的解决方案。您的实务经验将成为更好工具开发的动力。

联系我们(筹备中)
本文的评分
感谢回答!
有参考
价值
希望更
详细
报告
错误
有参考价值
0
希望更详细
0
报告错误
0
由NovaSolver Contributors撰写
匿名工程师和AI — 网站地图
查看个人资料