1. 为什么关注静磁场仿真里的形状优化与灵敏度分析
先说清楚这个东西到底是什么。静磁场仿真,解决的是永磁体、电流线圈、铁磁材料这些对象在稳态条件下的磁场分布问题,典型场景包括电机、电磁阀、磁吸盘、磁共振线圈、磁性夹具。形状优化,是在给定约束条件下调整模型的几何边界,让某个性能指标达到最优。灵敏度分析,则是量化几何参数变化对目标函数的影响程度,回答一个很关键的问题:如果把某个圆角从2毫米改成2.5毫米,磁感应强度到底能提升多少?值不值得改?
把这三者放在一起,实际工程价值非常直接。传统的设计流程是画图、仿真、试错、改图、再仿真,一个方案来回折腾好几轮,效率低不说,最后往往只能得到一个“能用”的设计,而不是“最优”的设计。有了形状优化和灵敏度分析,你可以在仿真阶段就把几何参数和性能指标之间的关系摸清楚,让优化器替你去寻找最优的尺寸组合。这套方法在电机极弧系数优化、磁屏蔽罩形状设计、电磁铁吸力最大化、MRI梯度线圈整形等场景里,已经是非常成熟的做法。
我最早接触这个方向,是在做一个电磁阀吸力优化的项目。客户要求在不增大整体体积的前提下,把衔铁在行程中段的吸力提升至少8%。一开始靠手动调参数,折腾了三周,勉强提升了3%。后来把灵敏度分析引入流程,发现真正起作用的不是衔铁端面直径,而是端面外缘的倒角半径和磁轭内侧的台阶位置。锁定这两个参数之后,用优化算法迭代了十几轮,吸力直接提升了12%,而且磁路饱和程度反而下降了。从那以后,我再也没用过纯手动试参的方式做磁路设计。
这篇文章,我想把整个流程从头到尾拆开讲一遍。包括形状优化和灵敏度分析各自是什么、两者是什么关系、如何用有限元仿真工具落地、求解器如何设置、参数化模型怎么建、灵敏度计算有哪些方法、优化算法怎么选、收敛判据怎么定,以及我在实际项目中踩过的坑。无论你是刚开始接触电磁仿真的学生,还是已经有一定经验想系统性引入优化流程的工程师,这篇文章都能给你一个可以直接照着做的路线图。
2. 形状优化与灵敏度分析的基本概念和内在关系
2.1 形状优化:不是简单“改尺寸”,而是重构几何边界
形状优化这个词,听起来高大上,本质上做的事情其实很朴素:把几何模型的尺寸参数从固定值变成变量,在约束条件的限制下,让某个目标函数取到最优值。这里的“形状”不只是指长宽高,还包括圆心位置、圆弧半径、角度、曲线控制点坐标,甚至是样条曲线的控制多边形形状。
用静磁场仿真的语言来说,形状优化问题的标准数学形式是:
minimize: f(x) = 目标函数(如磁能、吸力、电感、磁场均匀度) subject to: g_i(x) <= 0 (几何约束,如最小壁厚、最大包络尺寸) x_l <= x <= x_u (参数上下限)其中 x 是几何设计参数向量。目标函数可以是各种从场解中提取的物理量。静磁场仿真中最常用的几个目标函数包括:
- 电磁吸力:对衔铁表面的麦克斯韦应力张量做面积分,垂直方向的分量就是吸力。这是电磁阀、继电器、接触器设计的核心指标。
- 磁链/电感:对线圈交链的磁通求积分,得到磁链,除以电流得到电感。电机设计经常用这个。
- 磁场均匀度:在目标区域内计算磁感应强度的标准差或最大偏差,常用于MRI和粒子加速器磁体设计。
- 磁场强度/磁通密度:在特定位置的场值,比如磁传感器感应位置的B值。
- 磁通泄漏:通过非预期路径泄漏的磁通量,影响EMC性能和效率。
形状优化的关键区别于尺寸优化的地方在于,它允许几何边界的拓扑关系不变,但边界的形状可以连续变化。简单来说,尺寸优化改变的是“量”,比如线圈匝数、气隙长度、永磁体厚度;形状优化改变的是“形”,比如从矩形改成梯形,从直角改成圆角,从圆弧改成样条曲线。在实际工程项目中,这两者往往是联合使用的,几何形状和尺寸参数一起作为设计变量。
2.2 灵敏度分析:回答“哪个参数最值得动”
灵敏度分析的输出,本质上是目标函数对设计参数的偏导数。用数学语言写,就是:
S_i = ∂f(x) / ∂x_i这个东西的直观意义是:当第 i 个设计参数变化一个微小量时,目标函数变化多少。哪个参数的灵敏度绝对值大,说明它对性能影响越显著,值得作为优化的重点对象;灵敏度接近零的参数,说明当前取值下这个参数对性能没什么影响,优化时可以固定,减少变量维度,节省计算资源。
除了这种局部灵敏度之外,工程中还常用归一化灵敏度:
S_i_norm = (∂f / f) / (∂x_i / x_i)归一化之后的灵敏度实际上是弹性的概念,表示参数变化1%时目标函数变化百分之几。这样做的好处是不同量纲的参数之间可以直接比较。圆弧半径的初值和气隙长度不在一个数量级上,直接对比偏导数容易误导,归一化之后就好很多。
灵敏度分析在工程决策中的作用,至少有三个层面。第一,用于设计变量的筛选,把有影响力的参数保留,把无关紧要的参数去掉。第二,用于理解物理机制,比如发现某个几何特征对吸力有强烈的非线性影响,这就提示了该几何特征可能处于磁路饱和的临界状态。第三,作为梯度优化算法的输入,告诉优化器“往哪个方向走最快”。
2.3 两者协同:先灵敏度筛选,再形状优化迭代
在实际项目中,灵敏度和形状优化从来不是割裂的两步,而是一个不断交替的闭环。
第一步,先做全局灵敏度分析。把所有可能影响性能的几何参数全部列出来,用试验设计加有限元仿真的方式,算出一组灵敏度指标。比如方差的贡献率,或者归一化偏导数。这一步的目的是筛变量。
第二步,基于灵敏度分析结果,把影响大的变量设为优化变量,影响小的固定。这里有一个非常重要的工程经验:有些参数在初始点灵敏度小,但把它当成优化变量之后,灵敏度会变化。所以不要只做一次灵敏度分析就永久删掉某些参数,比较好的做法是每经过几轮优化迭代后重新做一次灵敏度校核。
第三步,进入形状优化主循环。优化器修改几何参数,重建模型,重新剖分网格,重新求解静磁场,提取目标函数,判断是否收敛,如果不收敛就继续调整参数。
这个闭环流程看起来简单,落地的时候每一步都有很多细节问题。下面我从工具选型、模型准备、仿真设置在实操层面逐步展开。
3. 工具选型:参数化建模和梯度接口是关键
3.1 主流工具一览
静磁场有限元仿真工具,目前工程上用得比较多的是ANSYS Maxwell、COMSOL Multiphysics、JMAG、Flux,以及开源界的FEMM。做形状优化和灵敏度分析,工具选择的考虑重点和普通静态仿真不太一样。
普通静磁场仿真,你只要能把模型建出来,材料属性定义对,边界条件加载正确,求解器算出来就行。但做优化,你还得考虑三件事:能不能参数化建模、能不能批量自动修改几何并重建网格、能不能方便地把目标函数值输出给优化器。
- COMSOL Multiphysics:AC/DC模块加优化模块,参数化建模能力很强,几何节点里可以直接用全局定义参数驱动。优化模块内置了灵敏度分析、梯度优化、蒙特卡洛等多种算法,和求解器配合紧密,是我个人做形状优化最习惯的工具。
- ANSYS Maxwell:电磁场专业仿真能力很强,自带Optimetrics模块,支持参数化扫描和优化。但Maxwell的几何建模能力相对弱一些,复杂形状一般得配合SpaceClaim或从CAD导入,参数化链条稍微长一点。
- JMAG:在电机设计领域很强,几何模板丰富,自带优化功能,对电机类形状优化很友好。缺点是授权成本高,通用性稍弱。
- FEMM + Octave:开源方案,2D静磁场求解很快,配合Lua脚本可以批量修改几何、批量求解。虽然建模能力简陋,但胜在免费,适合学习验证和算法研究。
3.2 梯度接口:优化算法和有限元求解器之间的桥梁
这里要强调一个很多人忽略的细节:形状优化和数值优化算法对接的时候,算法需要的是目标函数对设计参数的偏导数,而有限元求解器直接给出的是节点上的磁矢势解。从场解到目标函数,再到对设计参数的偏导数,中间要经历两个层面的推导。
第一个层面是场解到目标函数。比如吸力,需要把磁矢势A或磁通密度B在边界上做积分,这个积分结果是目标函数。第二个层面是目标函数对几何参数的导数。这就复杂了,因为修改几何参数之后,网格节点位置发生变化,单元积分区域也跟着变化,不能简单地对场解求微分。
处理这个问题有两种常见策略。一种叫有限差分法,也就是直接让某个参数变化一个小量Δx,重新建网、重新求解、重新计算目标函数,然后把变化量除以Δx作为近似导数。这个方法简单粗暴,对求解器零侵入,缺点是每次求导都要额外算好几组仿真,计算量随参数数量线性增长,而且Δx取值的大小对精度影响很大,取大了偏导数不准,取小了会被数值噪声淹没。
另一种叫解析伴随法,推导伴随方程,一次性求解得到所有参数的目标函数梯度,计算量和参数个数无关。COMSOL内置的灵敏度分析功能用的就是伴随法,这也是它做形状优化的一个巨大优势。用伴随法做灵敏度分析,即使有几十个设计参数,额外增加的求解时间也只是一次或少数几次线性方程组求解的代价,和有限差分法完全不在一个数量级上。
3.3 我的一些选型建议
如果你是在校学生或者想把原理搞透彻,我建议从FEMM配合脚本开始,自己写一点优化算法代码,把灵敏度计算理解透。FEMM没有内置伴随法,可以从有限差分入手,虽然慢,但每一步都看得清清楚楚。
如果你是工程师,要在实际项目里快速出结果,直接上COMSOL或Maxwell这类商业工具,用内置的优化模块,把精力放在参数化建模和目标函数定义上,不要在底层算法上花太多时间。
如果你是电机方向的设计人员,JMAG的电机专用建模流程会让你省很多事,电机转子形状自动生成、参数化气隙设置这些功能非常贴心。
4. 参数化模型建立:形状优化里最容易被低估的一步
4.1 参数化建模的基本方法
形状优化成败的关键,很大程度上在参数化建模这一步。模型怎么参数化,直接决定了优化器能搜索的空间有多大,也决定了迭代过程中网格重构是否稳定。
参数化建模,核心是把几何尺寸和形状特征用符号参数替代。具体到静磁场仿真,常见的参数化形式有几种。
第一种是最直接的尺寸参数化。把长方体的长宽高、圆柱体的半径高度、圆弧的倒角半径、孔的位置坐标定义成参数。电磁阀的衔铁直径、气隙厚度、磁轭壁厚这些都属于这一类。这种形式最简单,实施成本低,优化器直接修改参数值即可。
第二种是形状轮廓参数化,针对自由曲线边界的。比如用贝塞尔曲线或B样条曲线定义磁极轮廓,控制点坐标作为设计变量。这种方式在电机极靴形状设计里非常常见,理论上可以表示任意光滑轮廓。但要注意,控制点数量不宜过多,否则一方面优化变量太多计算量爆炸,另一方面控制点之间距离太密容易导致网格畸形。
第三种是拓扑变化范围内的形状参数化。比如用一个缩放因子控制某个特征的局部尺寸,或者用一个渐变参数控制过渡区域的形状变化。这种方式介于尺寸优化和拓扑优化之间,在保证制造可行性的前提下,给了形状调整更大的自由度。
4.2 参数化建模过程中的典型坑
我在参数化建模上踩过很深的坑,重点说三个。
第一,几何约束必须提前定义好。不要让优化器产生自相交几何,不要让两个本来分离的部件在优化过程中相互穿透。COMSOL里可以在优化模块中加几何约束,Maxwell里可以用参数限制范围来控制。但最好的办法是在建模阶段就设计好参数的合理范围,让任何参数组合都不会导致灾难性几何。比如圆角半径不能大于它所依附边的最小长度,这类约束一定要在参数上下限里体现。
第二,网格重构的稳定性。形状优化迭代过程中,几何每变化一次,网格都要重新划分。有些网格剖分器在特定几何形态下会失败,或者生成质量很差的单元,导致求解发散或结果突变。解决思路有两个:一是固定网格剖分设置,保证几何变化时剖分策略一致,尽量用物理场控制的网格序列而不是手动网格,让剖分器自动适应几何变化;二是在目标函数中加入网格质量约束或在优化算法中用网格重构失败惩罚项,一旦剖分失败就给一个极大的目标函数值,让优化器自动远离那些不良区域。
第三,参数太多导致的维度灾难。每增加一个设计变量,优化搜索难度并不是线性增加,而是指数级增加。所以一定要重视前面说的灵敏度分析筛选。先做一次低精度网格下的全局灵敏度扫描,把无效参数固定下来,再带着少量关键变量进优化主循环。
4.3 一个实战参数化模型示例
以电磁阀衔铁优化为例。核心尺寸参数可以设置为:衔铁半径r_i,衔铁端面倒角半径r_c,衔铁长度L_a,磁轭台阶位置d_s,磁轭内径r_y,气隙长度g。这些参数的初始值来自现有设计。目标函数是行程中段的轴向吸力F_z,几何约束包括衔铁半径不大于磁轭内径减去最小气隙,衔铁长度不超过总长限制,倒角半径介于零和端面半径的一半之间。
参数化建模建立之后,先在基准点算一次仿真,确认结果和原有设计一致。这一步很重要,它是后面所有灵敏度分析和优化的对照组。如果基准点结果就对不上,后面一切都没有意义。
5. 灵敏度分析的核心方法:有限差分与伴随法
5.1 有限差分法的实现细节
有限差分法最朴素的形式是一阶前向差分:
∂f/∂x_i ≈ (f(x_i + Δx) - f(x_i)) / Δx这个公式看似简单,实现的时候有几个细节问题必须处理。
第一个是步长Δx怎么选。太小了,两次仿真的目标函数差值会被有限元求解的数值噪声淹没。太大了,差分结果是割线斜率而不是切线斜率,远离真实偏导数。比较保险的做法是:先做一次参数扫描,比如参数从x_i-5%到x_i+5%取五个点,画出目标函数随参数变化的曲线,从曲线上看出一个合理的差分步长范围,选取目标函数变化量大约是数值噪声三倍以上的最小步长。
第二个是差分格式的选择。前向差分精度是一阶的,中心差分精度是二阶的:
∂f/∂x_i ≈ (f(x_i + Δx) - f(x_i - Δx)) / (2Δx)中心差分精度更好,但需要多算一次仿真。静磁场2D仿真速度比较快,一次求解几秒到几十秒,中心差分完全可接受。但到了3D模型,单元数量几十万甚至上百万,一次求解可能就是几分钟到几十分钟,这时候就要考虑计算成本了。折中方案是先用前向差分做快速筛选,对筛选出来的重点参数再用中心差分精确计算。
第三个是数值噪声的控制。有限元求解器输出的目标函数值,严格来说是有数值误差的,网格剖分、迭代容差、非线性求解精度都会引入噪声。为了降低噪声影响,在灵敏度计算过程中要固定网格剖分设置,尽量让两次求解的网格剖分一致;如果用的非线性求解器,要确保两次求解的迭代容差一致;一旦发现目标函数曲线不光滑、出现锯齿,先别急着怀疑物理问题,先检查是不是网格太少或者求解精度太低的数值问题。
5.2 伴随法:高效求解所有参数灵敏度的关键
伴随法的思路,说起来也并不难理解。它借用了线性代数里对偶问题的思想:对于每一个目标函数,只需要求解一次伴随方程,就能得到这个目标函数对所有设计参数的导数。
静磁场问题的有限元最终会归结为一个线性方程组:
K * A = J其中 K 是刚度矩阵,A 是磁矢势节点值向量,J 是电流激励向量。目标函数 f 是 A 和几何参数 x 的复合函数。
伴随法引入了伴随变量 λ,求解伴随方程:
K^T * λ = ∂f/∂A得到伴随变量之后,目标函数对设计参数的导数可以通过下式计算:
∂f/∂x_i = (∂f/∂x_i)_explicit - λ^T * (∂K/∂x_i * A - ∂J/∂x_i)这里的∂K/∂x_i和∂J/∂x_i,反映的是几何变化引起的刚度矩阵和激励向量的变化,在有限元离散层面是比较容易计算的。
实际用伴随法做灵敏度分析,整个过程对使用者来说几乎是透明的。COMSOL里只需要在优化模块中选择灵敏度分析,设定目标函数和设计参数,求解器会自动完成伴随方程求解和梯度计算。JMAG和Maxwell也都有类似功能,只是暴露的接口和配置选项不同。
伴随法的最大优点,是计算梯度所需的时间和设计参数的数量基本无关。这句话在参数数量多的时候是决定性的优势。一个形状优化问题如果涉及20个设计变量,用有限差分法每个目标函数每次求导需要至少21次完整仿真;用伴随法只需要1次原问题求解加1次伴随求解,也就是两次线性方程组求解的成本。
5.3 两种方法的对比与选型建议
| 对比维度 | 有限差分法 | 伴随法 |
|---|---|---|
| 原理难度 | 简单,容易理解 | 需要一定的数值线性代数基础 |
| 实现成本 | 低,几乎不需要侵入求解器 | 高,需要在求解器层面实现伴随方程 |
| 计算代价 | 随参数数量线性增长 | 基本与参数数量无关 |
| 精度 | 受步长影响,有截断误差和舍入误差 | 精度高,直接求解析梯度 |
| 适用场景 | 参数少、模型小、验证阶段 | 参数多、模型大、正式优化阶段 |
| 工具支持 | 几乎所有工具都能做 | 需要软件内置支持 |
工程上的实用建议是:不要一根筋只依赖某一种方法。项目初期、参数耦合关系还不清楚的时候,用有限差分法快速扫一遍,同时画出目标函数对每个参数的响应曲线,这对物理理解非常有用。到了正式优化阶段,参数变量数量多,计算量大,切换到伴随法,让优化器拿到精确梯度,收敛速度和稳定性都会有明显提升。
6. 形状优化的完整实操流程
6.1 从目标函数定义到优化算法选择
形状优化第一个要明确的,不是用什么算法,而是目标函数到底是什么。目标函数定义得不清晰,后续一切优化都是白做。
静磁场仿真里,目标函数往往不是直接从求解结果里抓一个量就完事,而是要做很多后处理。比如电磁吸力,需要沿衔铁表面提取麦克斯韦应力张量并积分。这个积分在COMSOL里要定义积分算子,在Maxwell里要设置力计算。再比如磁场均匀度,需要在一个目标区域内对|B|求标准差,这就需要定义域积分、平均值计算、标准差计算。
目标函数定义好之后,还需要考虑约束条件。几何约束前面说过,必须定义在参数上下限和几何约束表达式中。性能约束也很常见,比如吸力最大化的同时,气隙磁场不能超过某个饱和值,线圈电感不能低于某个下限。这些性能约束需要额外提取对应的物理量,并在优化模块中定义为约束表达式。
优化算法的选择,取决于你对设计空间的了解程度和目标函数的性质。静磁场形状优化经常用的有三类。
第一类是梯度类算法,典型代表是SNOPT和IPOPT。这类算法收敛速度快,适合目标函数光滑、灵敏度信息精确的场合。用伴随法算出梯度之后直接喂给这类优化器,效果最好。缺点是容易陷入局部最优,所以一般会配合多个初值点或加入适当的扰动。
第二类是启发式算法,典型代表是遗传算法、粒子群算法和差分进化。这类算法不依赖梯度,适合目标函数存在很多局部极值、或者灵敏度信息获取困难的情况。缺点是收敛慢,需要评估的次数多,有时候要跑几百次甚至上千次仿真。在静磁场3D仿真中,一次求解就要十几分钟,几百次评估的耗时难以接受,所以大模型上直接用启发式算法要做很多取舍。
第三类是基于代理模型的算法。这个我要多说一点,因为它在工程实践中性价比极高。
6.2 代理模型:工程性价比最高的优化路径
代理模型的思想非常朴素:用少量仿真数据训练一个近似模型,然后用这个近似模型代替有限元仿真去做大量快速评估。常见方法有响应面法、Kriging代理模型、神经网络。把这些代理模型和优化算法结合的方式,叫“基于代理模型的优化”。EGO算法就是一个很经典的例子。
为什么说它在静磁场形状优化里性价比极高?因为静磁场仿真的计算代价虽然不是特别高,但也绝对不低,尤其是3D模型和非线性材料。一次求解可能几十秒到几十分钟。而形状优化如果直接跑遗传算法,动不动要评估几百上千次,时间上无法接受。代理模型相当于在有限元求解器和优化算法之间加了一层缓冲:先用少量仿真点训练代理模型,然后优化算法在代理模型上快速搜索,找到可能的最优点后,再用有限元仿真验证这个点,把验证结果更新进代理模型,继续搜索。
这样的流程里,有限元仿真只需要跑几十次甚至十几次,对3D模型来说也是可以接受的。代理模型的另一个好处,是它本身就能做灵敏度分析,因为代理模型给出的是一个明确的数学表达式,导数可以直接解析计算。
我个人的建议是:如果你的项目只需要跑一次优化,参数数量在十个以内,用代理模型加遗传算法搜索是最稳妥的。如果参数数量再多,就先用灵敏度分析筛选一遍变量,再进代理模型优化。
6.3 逐轮迭代的收敛判据与停止条件
形状优化迭代过程中,必须明确收敛判据,否则优化器会无限跑下去或者提前停止。
常用的收敛判据有这么几类。第一是目标函数变化量。连续迭代中目标函数的相对变化量小于一个阈值,比如10^-5,说明已经收敛。第二是设计参数变化量。连续两次迭代的参数向量之差的模小于阈值,说明几何形状已经趋于稳定。第三是约束满足情况。所有约束条件的违反量都在容差范围内,而且目标函数不再明显改善。第四是最大迭代次数或最大评估次数。这是兜底条件,防止优化器进入死循环。
实际项目里我最习惯的组合是:设计参数相对变化量小于10^-4,同时目标函数相对变化量小于10^-5,加上最大迭代次数上限作为保险。这个设置在大多数静磁场优化问题里都能在合理的计算量内得到一个稳定的收敛结果。
还有一点要注意:形状优化收敛到的最优解,一定要用更细的网格重新求解一次验证。优化过程中为了追求计算速度,网格往往用得比较粗,目标函数存在一定的数值误差。最终验证必须用加密网格重新求解,确认目标函数值确实满足要求,并且磁场分布没有出现异常的局部饱和或畸形场型。
6.4 优化后的验证与制造可行性检查
仿真优化出来一个形状,不等于可以直接加工。这一段讲验证和可行性检查,是我个人很有感触的部分。之前做过一个磁极形状优化,优化结果漂亮得很,磁场均匀度提升了15%,但交付给机械工程师之后被一句话打回来:这个圆弧过渡和走刀方向干涉,没法车削加工。
从那之后,我的流程里增加了三个验证步骤。
第一是几何可制造性。优化得到的轮廓曲率是否在加工能力范围内,倒角半径是否符合刀具规格,是否有无法脱模的负角度特征。最好在设计阶段就和制造工程师沟通加工约束,把最小圆角半径、最大拔模角度直接写入优化约束条件中。
第二是装配干涉检查。优化后的形状在装配时是否会和相邻零件产生干涉,气隙是否在装配公差范围内。静磁场仿真通常只关注磁场性能,几何装配的合理性容易被忽略。
第三是材料性能验证。优化设计中,某些区域的磁通密度可能接近饱和临界值,这时候材料的B-H曲线数据精度会明显影响优化结果的可靠性。建议优化完成后检查关键区域的磁通密度分布,确认没有进入材料的深度饱和区,否则需要重新调整设计空间或更换材料。
7. 实操中的常见问题与排查技巧
7.1 网格畸变带来的伪最优解
形状优化最容易遇到也是最隐蔽的问题,就是网格畸变导致的伪最优点。几何参数改变后,如果局部区域的网格被拉伸或者压缩过度,单元质量下降,有限元解的精度会急剧恶化。这时候目标函数可能出现一个看起来很小的值,但这不是真实的物理最优解,而是数值失真导致的假象。
排查方法很直接:把优化后的几何单独拿出来,用极细网格重新求解,和目标函数的优化结果对比。如果细网格下的结果比优化结果差了很大,基本就是粗网格数值污染导致的伪最优。的解决办法是在优化过程中加网格质量控制,比如加入网格质量指标作为约束,COMSOL里有专门的网格质量检查节点,Maxwell也可以通过固定网格剖分策略来缓解这个问题。
7.2 灵敏度分析结果不稳定的原因分析
有时候会碰到一个头疼的现象:灵敏度分析做了兩次,敏感性排序不一样,甚至正负号都变了。这往往有几种原因。
最常见的原因是目标函数的数值噪声太大。网格不够细,尤其是关于形状敏感的边界区域网格不够密,会导致目标函数随参数的变化被噪声淹没。遇到这种情况,先把边界区域做网格加密,再检查目标函数曲线是否平滑。
另一种原因是目标函数本身就不是单峰函数,真实物理中确实存在多个局部极值区域,灵敏度在某个参数区间内会变号。这时候需要用全局灵敏度分析方法,比如Sobol指标,而不是局部偏导数。全局灵敏度和局部灵敏度的视角不同,前者评估参数在整个设计空间内的平均影响,后者只评估在当前点的局部影响。两者结合使用,结论才更可靠。
还有一类容易被忽视的原因,是基准点的选取。同一个模型,在不同几何参数组合下,灵敏度的相对排序可能完全不一样。所以灵敏度分析不能只在一个点做,至少要在设计空间的下限、中心、上限各做一个代表性点,综合结果再下结论。
7.3 非线性材料B-H曲线引起的收敛困难
静磁场仿真里只要有饱和型铁磁材料,模型就是非线性的,需要迭代求解。在形状优化过程中,材料区域可能从轻度饱和变化到深度饱和,非线性求解器可能在某个几何形态下不收敛。
应对策略有几条。第一,把电流激励的加载方式改成逐步加载,从零电流开始缓慢增加,每个载荷步都以前一步的解作为初值,这样可以显著提高非线性求解的稳定性。第二,检查B-H曲线的数据质量,如果数据点过于稀疏或外插部分太多,在接近饱和区会出问题,建议补充更密的实测数据。第三,为非线性求解器设置合适的迭代容差和最大迭代次数,不要为了求速度把容差设得太大,否则灵敏度计算会被数值误差污染。
7.4 计算资源受限时的降维与替代方案
形状优化最怕的是3D模型线性求解几百次,算力不够。如果你遇到这种情况,我建议按优先级做三件事。
第一,考虑降维。很多静磁场形状优化问题本质上具有旋转对称性或者平面对称性,用2D轴对称或2D平面模型代替3D模型,计算速度可以提升一到两个数量级。虽然结果和3D有差异,但用于优化迭代和参数筛选已经足够。最终验证阶段再用3D模型算一两次。
第二,用代理模型加自适应的实验设计。初始只要十到二十个仿真点,构造代理模型,再用EGO方式迭代,每轮最多额外增加一两个新仿真点,整体仿真次数能控制在几十次以内。
第三,合理利用并行计算。COMSOL和Maxwell都支持集群或多核并行,有限差分法每次参数扰动之间的仿真彼此独立,可以并行计算;遗传算法中每个个体的评估也互相独立,天然适合并行化。把计算资源用足,问题往往没那么可怕。
7.5 常见问题速查表
下面这张表,是我这些年做静磁场形状优化过程中遇到的问题汇总,不一定完整,但覆盖面已经很广。
| 问题现象 | 可能原因 | 排查/解决方法 |
|---|---|---|
| 优化结果在细网格下不成立 | 粗网格数值误差 | 加密验证,优化中加入网格质量约束 |
| 灵敏度排序不稳定 | 数值噪声大或存在局部极值 | 加密网格,检查响应曲线,全局灵敏度确认 |
| 非线性求解不收敛 | 深度饱和、材料数据差 | 逐步加载激励,补充B-H数据,放宽迭代次数 |
| 优化模型参数组合导致几何交叠 | 参数约束不足 | 增加几何约束表达式,设置参数安全范围 |
| 目标函数曲线锯齿状 | 网格剖分不一致 | 固定剖分设置,控制求解容差一致 |
| 优化结果无法加工 | 制造约束未纳入 | 提前沟通最小圆角、拔模角度等加工限制 |
8. 让灵敏度分析和形状优化真正落地的方法
静磁场仿真里的形状优化和灵敏度分析,方法论本身并不神秘。有限元求解器、优化算法、灵敏度计算工具,每一个环节都有了非常成熟的商业和开源实现。真正拉开差距的,是能否把这一套流程有效地组织起来,能否在工程决策中把灵敏度分析作为判断依据,而不是把优化当做一个跑一次就算完的“黑盒按钮”。
我在项目里总是提醒自己三件事。第一,形状优化之前一定要做灵敏度分析,它决定你优化方向的正确性;第二,灵敏度分析的结论要在多个基准点验证,单点结论不可靠;第三,优化结果只是仿真意义上的最优,还要叠加制造约束、成本约束和装配约束之后才真正可用。
对于刚入门的读者,建议从一个2D轴对称的简单模型入手,先跑通“参数化建模、灵敏度分析、优化迭代、验证”的完整流程,把一个熟悉的案例的结论复现出来,再逐步增加问题复杂度。这个流程本身比任何单个软件的技巧都更重要,它是一套可以迁移到任意电磁设计场景的思维方式。
在后续的实际项目中,你可以把同样一套流程迁移到更多场景,比如永磁同步电机的极弧系数与极靴形状联合优化、磁悬浮系统的电磁铁磁极轮廓优化、无线充电线圈的磁屏蔽结构与位置优化。每一个场景都有各自的目标函数和约束条件,但方法框架是完全一致的。希望这篇文章能帮你把这条路走通,少踩一些我当年踩过的坑。