1. 课程导入与电磁性能优化全景

电磁装置的设计,本质上是在一组几何尺寸、材料属性和激励条件之间寻找平衡。以一台额定功率 5 kW 的永磁同步电机为例,若把定子槽宽从 6.0 mm 增大到 7.2 mm,铜线截面积增加、电阻下降,铜耗随之减小;但齿部磁路变窄,铁心饱和加剧,转矩脉动和铁耗可能上升。这类"按下葫芦浮起瓢"的现象,正是电磁性能优化要系统处理的问题。参数化优化设计的目标,就是把设计对象抽象为可调参数向量 x,在约束条件 g(x) ≤ 0 下,使一个或多个电磁性能指标 f(x) 达到最优,并保证结果可复现、可追溯、可制造。

典型电磁性能指标及其物理含义

不同电磁装置关注的指标差异很大,但归纳起来可分为四类。第一类是能量转换类指标,如电感 L、永磁磁链 ψpm、反电动势系数 ke、转矩 T 与推力 F。它们直接决定装置的出力能力,通常希望在设计工况下达到目标值而非越大越好——例如电动汽车驱动电机要求额定转矩 150 N·m、峰值转矩 300 N·m,超出会带来体积和成本浪费。第二类是损耗与效率类指标,包括铜耗 Pcu、铁耗 Pfe、涡流损耗、开关损耗,以及由此得到的效率 η。第三类是品质类指标,如转矩脉动峰峰值、齿槽转矩、推力波动、电流谐波总畸变率 THD。第四类是高频与端口类指标,如 S 参数 S11、S21、品质因数 Q、谐振频率 f0,常见于天线、滤波器、无线充电线圈等射频与高频磁件设计。

这些指标往往相互冲突。以无线充电线圈为例,增大匝数可提高互感 M 和传输效率,但会抬高交流电阻 Rac,使 S21 在高频段恶化。因此优化不是单目标求极值,而是多目标权衡,最终得到一组 Pareto 非支配解,再由工程经验、成本与工艺约束挑选折中方案。

参数化优化流程与工具链

一个完整的参数化优化闭环通常包含六个环节:参数化建模、设计变量与约束定义、试验设计(DOE)采样、代理模型或直接仿真求解、优化算法寻优、结果验证与鲁棒性校核。关键在于"参数化"三个字——几何必须由尺寸变量驱动,而不是手工改图。例如在 Maxwell 或 JMAG 中,把定子内径 Dsi、槽深 hs、永磁体厚度 hm、极弧系数 αp 定义为变量,脚本即可批量生成模型并自动求解。

工具链一般分为三层:几何与网格层(如 ANSYS SpaceClaim、COMSOL 几何序列)、场求解层(Maxwell 2D/3D、JMAG、FEMM、CST、HFSS)、优化调度层(OptiSLang、modeFRONTIER、Isight,或 Python 的 pymoo、scikit-opt)。调度层负责把变量写入模型、调用求解器、读取结果并驱动算法迭代。对于单次仿真耗时数十分钟的 3D 问题,通常先构建 Kriging 或径向基代理模型,把上万次评估压缩到几百次真实仿真。

参数化建模的第一条纪律:所有几何尺寸必须由变量表达式驱动,禁止出现"手工拉伸后忘记同步变量"的孤立特征,否则优化结果无法复现。

一个可执行的最小示例

下面给出一个用 Python 调用简化解析模型、对电感与损耗做双目标寻优的骨架,帮助建立"变量—仿真—目标—寻优"的直观认识。示例参数为合理假设,用于说明流程而非实测结果。

import numpy as np
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.problems import Problem
from pymoo.optimize import minimize

class CoilDesign(Problem):
    def __init__(self):
        super().__init__(n_var=3, n_obj=2, n_constr=1,
                         xl=np.array([10, 0.5, 5]),   # 匝数N, 线径d(mm), 频率f(kHz)
                         xu=np.array([40, 2.0, 100]))
    def _evaluate(self, X, out, *args, **kwargs):
        N, d, f = X[:,0], X[:,1], X[:,2]
        L  = 1.2e-6 * N**2 * d          # 简化电感模型 (H)
        Rac = 0.02 * N * (f/10)**0.5 / d  # 简化交流电阻 (Ohm)
        Pcu = 5.0 * Rac                 # 假设电流5A
        out["F"] = np.column_stack([-L, Pcu])   # 最大化L, 最小化Pcu
        out["G"] = (0.5 - d)[:, None]           # 线径下限约束

res = minimize(CoilDesign(), NSGA2(pop_size=60), ("n_gen", 40), seed=1)
print(res.X[:5], res.F[:5])

运行后得到的 Pareto 前沿上,每个点代表一种"电感与铜耗"的折中方案。工程上再叠加温升约束(如 Pcu ≤ 8 W)和绕线工艺约束(d ≥ 0.8 mm),即可从解集中锁定候选设计。这个例子虽用解析式替代了有限元,但变量定义、目标构造、约束表达和寻优调度的逻辑与真实项目完全一致。

优化全景与常见误区

把上述内容串起来,可以用一张全景图概括从设计变量到最终方案的完整链路。图中同时标出了各环节的输入输出与典型工具,便于对照自己的项目定位薄弱环节。

电磁性能参数化优化全景链路 设计变量 x D_si, h_s, h_m, α_p N, d, f, 材料牌号 参数化建模 尺寸驱动几何 SpaceClaim / 脚本 DOE 采样 拉丁超立方 / 正交 样本 50~300 组 场求解 Maxwell / JMAG / CST 2D 快速 / 3D 精确 电磁性能指标(目标函数 f(x)) 能量类:L, ψ_pm, T, F 出力能力 损耗类:P_cu, P_fe, η 效率与温升 品质类:T_ripple, THD 平稳性 端口类:S11, S21, Q 高频匹配 代理模型 Kriging / RBF / 神经网络 R² ≥ 0.95 方可替代仿真 优化算法 NSGA-II / MOEA/D / 粒子群 约束:温升、工艺、成本 Pareto 解集 非支配前沿 + 折中决策 鲁棒性 / 灵敏度校核 验证不通过 → 调整变量范围或补充样本,重新迭代 调度层:OptiSLang / modeFRONTIER / Python(pymoo) | 数据层:CSV + 参数快照,保证可复现

最后提醒三个常见误区。其一,把优化当"自动找最优":算法只负责搜索,变量范围、约束和目标定义仍依赖工程师的物理判断,范围设错会得到"数学最优、工程荒谬"的解。其二,忽略网格与求解设置的一致性:不同参数下网格质量变化会引入数值噪声,使代理模型失真,建议固定网格策略或做网格无关性检查。其三,只看最优解不看灵敏度:制造公差 ±0.1 mm 可能让性能偏移 5% 以上,因此最终方案必须做灵敏度与鲁棒性分析,优先选择对公差不敏感的设计点。掌握这条从变量到决策的完整链路,后续各章的建模、求解与算法细节才有落点。