1. 多目标优化问题定义

在结构设计中,工程师很少只关心一个指标。一个支架既要足够轻,又要足够刚;一个悬置系统既要满足强度,又要控制振动传递;一个车身接头既要提升扭转刚度,又不能显著增加质量。当这些诉求同时出现且彼此冲突时,问题就从“单目标最优”变成了“多目标权衡”。Altair OptiStruct 的多目标优化能力,正是为这类工程场景服务的。理解它的第一步,是把模糊的工程语言翻译成清晰的数学表达。

从工程需求到三要素

任何优化问题都可以拆成三个基本要素:设计变量、目标函数和约束条件。设计变量是我们可以主动调整的量,例如板厚、截面尺寸、材料分布密度或形状控制点坐标;目标函数是希望最小化或最大化的性能指标,例如质量、柔度、应力峰值或某阶固有频率;约束条件则是必须满足的边界,例如应力不超过许用值、位移不超过限值、频率避开共振区。

以一块悬臂梁为例。假设梁长 300 mm、宽 40 mm,材料为钢,弹性模量 210 GPa,密度 7.85e-9 t/mm³。若把梁沿长度方向分成 10 段,每段厚度作为一个设计变量,则设计变量向量为 x = [t1, t2, ..., t10],取值范围设为 1.0 mm 到 5.0 mm。工程需求是“在自由端位移不超过 0.5 mm 的前提下,让梁的质量尽可能小”。翻译成数学表达就是:

min  m(x) = ρ · b · Σ(ti · Li)
s.t. u_tip(x) ≤ 0.5 mm
     1.0 ≤ ti ≤ 5.0 mm, i = 1..10

这里 m(x) 是目标函数,u_tip(x) ≤ 0.5 mm 是约束条件,ti 的上下限是设计变量的边界。这个例子虽然简单,却完整展示了“工程需求 → 数学表达”的映射过程。实际项目中,设计变量可能成百上千,约束可能来自静力、模态、屈曲、疲劳等多个分析工况,目标也可能不止一个。

多目标问题的本质:没有唯一最优解

当目标函数从一个变成两个或更多时,问题性质会发生根本变化。考虑同时最小化质量 m 和最小化自由端位移 u。这两个目标通常是冲突的:增加厚度可以减小位移,但会增加质量。此时不存在一个解能同时让两个目标都达到各自的最优值。我们只能找到一组“互不支配”的解,即Pareto 最优解集。

所谓支配关系,可以这样理解:如果解 A 在所有目标上都不差于解 B,且至少在一个目标上严格优于 B,则称 A 支配 B。Pareto 最优解就是那些不被任何其他可行解支配的解。它们构成的集合在目标空间中形成一条前沿,称为 Pareto 前沿。设计者的任务不是寻找“唯一答案”,而是从这条前沿上挑选最符合当前工程偏好的折中点。

关键认识:多目标优化的输出不是一个点,而是一组候选方案。OptiStruct 通过加权法、归一化加权、全局响应面或直接多目标算法,帮助用户逼近这条 Pareto 前沿。理解前沿的形状和分布,比记住某个具体数值更重要。

设计变量、目标与约束的工程化定义

在 OptiStruct 中,这三要素通过特定的卡片和面板定义。设计变量常用 DESVAR 卡片定义,可以是尺寸变量、形状变量或拓扑变量;目标函数通过 OBJECTIVE 卡片指定,支持最小化、最大化或加权组合;约束通过 DCONSTR 卡片关联响应与上下限。响应本身则由 DRESP1、DRESP2 等卡片从分析结果中提取,例如质量、位移、应力、频率。

一个常见的实操误区是:把太多指标都设为约束,导致可行域过小甚至无解。更合理的做法是,把必须满足的硬性要求设为约束,把希望改善但可以折中的指标设为目标。例如,安全法规要求的应力上限应设为约束,而“进一步减重”和“进一步提高一阶频率”则适合作为两个目标。

下面这张图展示了从工程需求到 Pareto 前沿的完整映射关系。左侧是工程语言,中间是数学三要素,右侧是目标空间中的 Pareto 前沿示意。图中标注了三个典型解:A 偏重轻量化,B 偏重刚度,C 是折中点。它们都位于前沿上,互不支配。

工程需求 减轻结构质量 越轻越好 控制端部位移 不超过 0.5 mm 避开共振频率 一阶频率 ≥ 80 Hz 满足应力安全 应力 ≤ 235 MPa 翻译 数学表达 设计变量 x t1…t10 ∈ [1.0, 5.0] mm 板厚分布 目标函数 f(x) min m(x) 质量 min u(x) 端部位移 约束条件 g(x) u ≤ 0.5 mm f1 ≥ 80 Hz, σ ≤ 235 MPa 求解 Pareto 前沿 质量 m → 位移 u ↑ A 轻量化 C 折中 B 高刚度 前沿下方为可行域

Pareto 最优解集的工程意义

Pareto 前沿的形状直接反映了目标之间的冲突程度。如果前沿很“陡”,说明两个目标冲突强烈,稍微改善一个就会显著恶化另一个;如果前沿较“平”,说明存在较大的折中空间。在 OptiStruct 中,用户可以通过设置多个目标并运行多目标优化,得到一组候选设计点,再借助后处理工具观察前沿分布。

实际决策时,常用方法包括:加权法,为每个目标分配权重并转化为单目标;ε-约束法,保留一个目标,把其余目标转为约束;偏好排序法,根据工程经验直接在前沿上挑选。无论哪种方法,前提都是先得到一条足够完整、分布均匀的 Pareto 前沿。如果前沿采样过稀,决策者可能错过真正合适的折中点。

实操建议:在 OptiStruct 中定义多目标时,建议先做一次单目标优化,了解各目标单独最优时的量级和可行域范围,再据此设置多目标的权重或约束边界。这样能避免因目标量级差异过大导致优化器偏向某一目标。

一个可复现的示例设定

回到悬臂梁例子,假设我们运行一次多目标优化,设计变量为 10 段厚度,目标为最小化质量和最小化端部位移,约束为一阶频率不低于 80 Hz、最大应力不超过 235 MPa。经过若干次迭代后,可能得到如下表所示的候选方案(以下数据为教学示例,非实测结果):

方案 总质量 (kg) 端部位移 (mm) 一阶频率 (Hz) 最大应力 (MPa) 特点
A 0.82 0.48 82.1 228 轻量化优先
C 1.05 0.31 96.5 196 折中方案
B 1.38 0.18 118.3 152 刚度优先

这三个方案都满足约束,且互不支配。方案 A 最轻但位移接近上限;方案 B 刚度最好但质量最大;方案 C 位于中间。设计者可以根据实际装配空间、成本预算和性能优先级选择其中一个,或者继续在前沿上加密采样。

理解多目标优化的定义,核心在于接受“没有唯一最优解”这一事实,并学会用设计变量、目标函数和约束条件这三要素把工程需求准确地翻译成数学语言。只有定义清晰,后续的求解和权衡才有意义。