2. 参数化设计优化问题定义
在虚拟样机参数化设计中,把工程需求转化为可求解的优化问题,核心工作只有三件事:确定哪些量可以改、改到什么程度算好、以及改的过程中不能违反哪些限制。这三件事分别对应优化问题的三个基本要素——设计变量、目标函数和约束条件。三者共同构成一个标准形式的数学规划问题:
min f(x) —— 目标函数
s.t. g_i(x) ≤ 0, i = 1,2,…,m —— 不等式约束
h_j(x) = 0, j = 1,2,…,p —— 等式约束
x_L ≤ x ≤ x_U —— 变量上下界
其中 x = [x_1, x_2, …, x_n]^T 为设计变量向量
这个式子看起来抽象,但它本质上就是一句工程语言:在允许的范围内,找到一组参数,让某个性能指标尽可能好,同时不违反任何硬性要求。下面逐项展开。
设计变量:把“可调参数”变成向量
设计变量是优化过程中允许被算法调整的量。在虚拟样机中,它们通常来自几何尺寸、材料属性、安装位置或控制参数。例如某悬架系统的参数化模型,可选设计变量包括:弹簧刚度 k(N/mm)、减振器阻尼 c(N·s/mm)、悬架安装点横向坐标 y_p(mm)、轮胎径向刚度 k_t(N/mm)。写成向量即 x = [k, c, y_p, k_t]^T,维数 n = 4。
确定设计变量时有两个关键判断。第一,可调性:该量在真实产品中是否真的能改?如果制造工艺已锁定,把它设为变量只会得到无法落地的结果。第二,独立性:变量之间不应存在完全确定的函数关系。例如若弹簧刚度由线径、圈数、中径唯一决定,而这三者又都作为变量,就会产生冗余自由度,导致求解器出现病态或重复搜索。
每个变量还必须给出上下界。上下界不是装饰,它直接决定搜索空间的大小和物理可行性。例如弹簧刚度取 20 ≤ k ≤ 80 N/mm,阻尼取 0.5 ≤ c ≤ 3.0 N·s/mm。上下界过宽会浪费计算量,过窄则可能把真正的最优解排除在外。
目标函数:把“好”写成可计算的标量
目标函数是把工程期望量化为一个数值的函数 f(x)。优化算法只会朝“让 f 变小”的方向走,因此必须明确:什么指标越小越好。常见目标包括质量最轻、最大应力最小、一阶固有频率最高、乘坐舒适性指标(如车身加速度均方根)最小等。
以悬架为例,若关注舒适性,可取目标函数为车身垂向加速度均方根值:f(x) = a_rms(x)。这个值不能直接手算,而是由虚拟样机仿真在给定路面激励下输出。也就是说,目标函数往往是一次仿真的“黑箱输出”,优化算法通过反复调用仿真来评估它。
当存在多个目标时,例如同时希望舒适性好、悬架动挠度小,就需要处理多目标问题。工程上常用加权和法:f(x) = w_1·a_rms/a_0 + w_2·s_max/s_0,其中 a_0、s_0 是归一化基准,w_1 + w_2 = 1。权重不是数学推导出来的,而是设计意图的体现,必须结合工程优先级确定,并在结果中说明其影响。
约束条件:把“不能违反”写成不等式或等式
约束条件描述设计必须满足的限制。它们分为不等式约束和等式约束两类。不等式约束通常来自性能红线或空间限制,例如悬架动挠度不得超过 s_max ≤ 80 mm,轮胎动载荷不超过静载的 1.5 倍。等式约束则来自必须严格满足的物理关系或装配关系,例如某安装点必须落在给定轴线上。
约束的写法必须可计算、可判断。以动挠度为例,仿真输出的是时域曲线,需要先提取峰值再与限值比较,写成 g_1(x) = s_peak(x) − 80 ≤ 0。若写成“动挠度不能太大”,求解器无法处理。约束数量也不宜过多,每增加一个约束都会压缩可行域,过多约束可能导致可行域为空,即无解。
从工程需求到优化问题的基本流程
实际工作中,转化过程通常按以下顺序推进:
- 明确评价对象与工况:确定要优化的系统、关注的性能指标以及对应的仿真工况(如B级路面、车速60 km/h)。
- 筛选设计变量:从参数化模型中挑出真正可调、相互独立的参数,并给出物理合理的上下界。
- 建立目标函数:把首要性能指标写成仿真可输出的标量;多目标时确定权重与归一化方式。
- 提取约束:把法规、工艺、空间、强度等要求逐条写成
g(x) ≤ 0或h(x) = 0,并确认每条都能由仿真或计算得到。 - 检查问题适定性:确认变量维数、约束数量、可行域是否合理,必要时先做一次基准仿真验证目标与约束的输出是否正常。
下面这张图把上述转化关系组织成一张结构图,左侧是工程需求,中间是三类数学要素,右侧是它们共同构成的优化问题,并标出了常见误区所在的位置。
常见误区与检查要点
把工程需求写成优化问题时,最容易出错的并不是数学推导,而是定义阶段的判断失误。以下六类误区在虚拟样机项目中反复出现:
- 把不可调参数设为设计变量。例如把已经由供应商锁定的减振器阻尼仍作为变量,优化结果无法采购落地。判断方法:问一句“这个值在真实产品中谁有权改、改造成本多大”。
- 变量间存在确定函数关系。如同时把弹簧线径、圈数、中径和刚度都设为变量,而刚度由前三者唯一决定,造成冗余自由度。应只保留一组独立变量。
- 目标函数无法由仿真直接输出。例如把“操纵稳定性好”直接当目标,求解器无法评估。必须落到具体可输出的标量,如横摆角速度峰值或不足转向梯度。
- 约束写成定性描述。“不能太大”“尽量小”都不是约束。约束必须是
g(x) ≤ 0形式,且能由仿真或计算给出确定数值。 - 上下界设置不合理。过窄会排除真正的最优解,过宽会显著增加搜索成本。建议先用基准仿真和工程经验给出保守但合理的范围。
- 约束过多导致可行域为空。当所有约束同时收紧时,可能不存在任何满足全部约束的变量组合。此时应先做可行性检查,必要时放宽次要约束或调整变量范围。
总结来说,参数化设计优化问题的定义,本质上是把工程语言翻译成数学语言的一次严谨映射。设计变量回答“改什么”,目标函数回答“往哪改”,约束条件回答“不能怎么改”。三者缺一不可,且都必须满足可计算、可判断、可落地三个基本要求。定义阶段多花一小时检查,往往能节省求解阶段数十小时的无效计算。