3. 工程参数求解的数学建模
工程参数求解的第一步不是打开 MATLAB 写代码,而是把一段物理描述翻译成优化模型。这个翻译过程的核心只有三件事:决策变量回答“我可以调什么”,目标函数回答“我到底想要什么”,约束条件回答“哪些方案在物理上、工艺上、安全上是允许的”。三者一旦确定,后续的求解器选择、初值设置、结果校验才有意义。本节以“设计一台带散热要求的直流电源模块”为教学示例,完整走一遍从物理问题到优化模型的转化流程。示例中的数值均为合理假设,用于说明建模方法,不代表实测结果。
一、从物理描述中提取决策变量
假设工程需求是:在给定负载电流下,设计一个电源模块,使其体积尽量小,同时保证关键器件温度不超过允许值。物理对象包括:散热器、功率管、外壳、风扇(可选)。此时先问一句:哪些量是设计者可以主动改变的?
可调的量通常包括:散热器基板厚度 t_hs、散热器宽度 W_hs、散热器长度 L_hs、功率管与散热器之间的导热垫厚度 t_pad、风扇风量 Q_fan。这些量就是决策变量。不可调或由外部条件决定的量,如环境温度 T_amb、负载电流 I_load、功率管损耗 P_loss,应作为参数处理,而不是决策变量。
决策变量需要写成向量形式,便于 MATLAB 统一处理。例如:
x = [t_hs, W_hs, L_hs, t_pad, Q_fan]
% 单位:m, m, m, m, m^3/s
% 示例取值范围(合理假设):
% 0.002 <= t_hs <= 0.010
% 0.030 <= W_hs <= 0.120
% 0.050 <= L_hs <= 0.200
% 0.0002 <= t_pad <= 0.002
% 0.000 <= Q_fan <= 0.020
这里有一个常见错误:把“散热器型号”当成决策变量。型号是离散的,若直接作为变量,会引入整数规划或混合整数规划。工程上更稳妥的做法是先用连续尺寸建模,得到最优尺寸后再从标准型号中选最接近的,或者明确使用 intlinprog 等整数求解器。本节先按连续变量处理。
二、目标函数的抽象:把“体积小”写成可计算的量
“体积尽量小”是工程语言,不是数学语言。需要把它转化为关于决策变量的函数。电源模块总体积可近似为散热器体积与外壳预留空间之和:
V_hs = W_hs * L_hs * t_hs; % 散热器体积
V_case = (W_hs + 0.01) * (L_hs + 0.01) * (t_hs + 0.03);
f = V_case; % 目标函数:总体积最小
如果同时希望“散热器材料成本低”,可以构造加权目标:
cost_hs = rho_al * V_hs * price_al; % 材料成本
f = w1 * V_case / V_ref + w2 * cost_hs / C_ref;
其中 w1、w2 是权重,V_ref、C_ref 是参考量,用于无量纲化。权重不是随便取的:若体积和成本同等重要,可取 w1 = w2 = 0.5;若体积是硬指标,可把体积放入约束,只把成本作为目标。目标函数的选择直接决定最优解落在哪个方向,因此必须在建模阶段写清楚“优化目标是什么、为什么这样加权”。
三、约束条件的抽象:等式、不等式与边界
约束条件分为三类。第一类是物理等式约束,例如热阻网络关系。简化热路模型可写为:
R_hs = 1 / (h * A_hs); % 散热器对流热阻
R_pad = t_pad / (k_pad * A_pad); % 导热垫热阻
R_total = R_jc + R_pad + R_hs; % 总热阻
T_j = T_amb + P_loss * R_total; % 结温
第二类是不等式约束,例如结温不得超过允许值:
T_j <= T_j_max; % 例如 T_j_max = 125 °C
第三类是边界约束,即决策变量的上下限,如前面给出的尺寸范围。在 MATLAB 中,这三类约束分别对应 Aeq*x = beq、A*x <= b、lb <= x <= ub。对于非线性关系,如 T_j 与 Q_fan 的关系,应写成非线性约束函数 c(x) <= 0 和 ceq(x) = 0。
四、从物理问题到优化模型的转化流程
把上述过程整理成可复用的转化流程,如下图所示。图中左侧是物理对象与工程需求,中间是抽象动作,右侧是 MATLAB 可调用的模型要素。注意:流程图不是唯一表达方式,但本节的核心是“转化关系”,因此用带方向的映射图最合适。
五、建模后的自检与常见陷阱
模型写完后,不要急着调用 fmincon。先做三项自检。第一,量纲检查:目标函数是体积还是成本?约束左右两边单位是否一致?例如热阻单位是 °C/W,功耗单位是 W,乘积才是 °C。第二,可行性检查:把一组明显合理的尺寸代入约束,看是否满足 T_j <= T_j_max;如果连一个可行点都找不到,说明约束过紧或模型有误。第三,灵敏度预判:改变 Q_fan 是否显著影响 T_j?如果影响很小,说明该变量可能不是关键决策变量,应考虑删除或固定。
常见陷阱包括:把参数误当变量、目标函数与约束重复表达同一件事、忽略变量之间的耦合关系(如散热器宽度必须大于功率管安装宽度)、以及用“越大越好”的直觉代替数学表达。工程建模的价值恰恰在于把这些直觉变成可检验的数学关系。
1. 决策变量是否都是设计者真正可调的?
2. 目标函数是否可计算、量纲是否正确?
3. 等式约束是否来自物理定律或定义式?
4. 不等式约束是否覆盖安全、工艺、安装要求?
5. 边界是否给出合理上下限和初值?
6. 是否存在至少一个可行点?
7. 变量之间是否有遗漏的耦合约束?