3. 收敛性基本概念辨析
在 OptiStruct 的优化求解过程中,判断“算完了”和判断“算对了”是两件不同的事。前者看求解器是否正常终止,后者看结果是否满足工程可信度要求。收敛性判据正是连接这两者的桥梁。很多工程师习惯只看目标函数是否趋于平稳,但仅凭一条目标曲线远不足以判断优化是否真正收敛。本节围绕五个核心概念展开:迭代历史、目标函数、约束违反量、设计变量变化率以及 KKT 条件,并说明它们在工程判断中的实际含义。
迭代历史:优化的“行车记录仪”
OptiStruct 每完成一次设计循环,都会在 .out 文件和 .hst 文件中记录当前迭代步的信息。迭代历史就是这些记录的集合,通常包含迭代号、目标函数值、最大约束违反量、设计变量最大变化率、KKT 乘子信息以及是否满足收敛判据等。它相当于优化的行车记录仪:不仅告诉你终点在哪里,还告诉你路径是否平稳、有没有剧烈震荡或长时间停滞。
在 HyperView 或 HyperGraph 中打开 .hst 文件,可以绘制目标函数随迭代步的变化曲线。一个健康的迭代历史通常表现为:前若干步目标快速下降,随后下降速率逐渐减小,最终趋于平稳。如果曲线出现大幅上下跳动,说明设计变量变化过猛或约束边界附近存在冲突;如果曲线长时间水平不动但约束违反量仍高,说明优化可能陷入不可行区域。
目标函数:优化在“追求什么”
目标函数是优化问题中希望最小化或最大化的物理量,例如结构总质量、柔度、最大应力或某阶频率。在 OptiStruct 中,目标函数通过 DESOBJ 或响应引用定义。目标函数的收敛并不意味着结果一定可信,因为目标函数下降可能以严重违反约束为代价。因此,目标函数必须与约束违反量联合观察。
工程上常关注两个指标:目标函数的相对变化量和绝对变化量。相对变化量定义为相邻两次迭代目标值之差与当前目标值之比。例如,第 12 步目标值为 2.45 kg,第 13 步为 2.43 kg,则相对变化约为 0.82%。若连续若干步相对变化小于设定容差(如 0.1%),可认为目标已趋于稳定。但要注意,目标稳定只是收敛的必要条件之一,不是充分条件。
约束违反量:可行性的“红线指标”
约束违反量衡量当前设计点偏离约束边界的程度。对于不等式约束 g(x) ≤ 0,违反量定义为 max(0, g(x));对于等式约束,则取绝对值。OptiStruct 在每次迭代中会输出最大约束违反量,通常记为 maxcon 或类似名称。
工程判断中,约束违反量比目标函数更值得优先关注。如果最大约束违反量在收敛时仍大于容差(默认通常在 1e-3 到 1e-2 量级,视问题而定),即使目标函数已经平稳,结果也不应被接受。常见原因包括:约束本身相互冲突、设计变量上下限过紧、网格或载荷条件导致可行域为空。此时需要回到模型定义,而不是强行放宽收敛容差。
设计变量变化率:设计是否“安定下来”
设计变量变化率反映相邻两次迭代之间设计变量的最大相对改变量。OptiStruct 通常输出 maxdv 或 delx 类指标。它回答的问题是:设计本身是否已经稳定,而不是目标或约束是否稳定。
一个常见误区是:目标函数平稳就认为设计稳定。实际上,可能存在目标函数几乎不变、但设计变量仍在两个相近构型之间来回切换的情况。这种“目标平稳但设计振荡”的现象在拓扑优化中尤其常见。因此,设计变量变化率是判断收敛独立性的重要补充。若 maxdv 持续大于 1e-2,即使目标曲线看起来平滑,也应检查是否存在棋盘格、网格依赖或局部模态切换。
KKT 条件:收敛的数学根基
KKT 条件(Karush-Kuhn-Tucker 条件)是约束优化问题最优解的一阶必要条件。对于最小化问题,在满足约束规范的前提下,最优解处应存在拉格朗日乘子,使得目标梯度与约束梯度的线性组合为零,且乘子满足非负性和互补松弛条件。
在 OptiStruct 的工程语境中,不需要手动推导 KKT 方程,但需要理解其工程含义:KKT 条件满足程度越高,说明当前设计点越接近数学意义上的局部最优。OptiStruct 在 .out 文件中会输出与 KKT 相关的收敛指标,例如 KKT 或 Lagrangian 信息。若 KKT 残差较大,说明当前点还不是稳定最优解,即使目标函数和约束违反量看起来都不错。
工程判断顺序建议:先看约束违反量是否满足容差,再看设计变量变化率是否足够小,然后看目标函数是否平稳,最后参考 KKT 指标确认最优性。四者都满足,收敛结论才具备可信度。
五类概念的联合判断逻辑
把上述五个概念放在一起,可以形成一条清晰的工程判断链。第一步,检查约束违反量是否满足容差。如果最大约束违反量仍高于 1e-2,无论目标函数多平稳,都应判定为不可行,需要回到模型检查约束定义或设计空间。第二步,检查设计变量变化率是否足够小。若 maxdv 持续大于 1e-2,说明设计仍在明显调整,收敛结论不成立。第三步,观察目标函数是否连续多步趋于平稳。第四步,参考 KKT 残差确认是否接近局部最优。只有四类指标同时满足,才能给出可信的收敛结论。
需要特别强调的是,OptiStruct 的默认收敛容差是一组工程折中值,并非适用于所有问题。对于安全关键结构,建议收紧约束违反量容差并增加迭代步数上限;对于概念阶段的拓扑优化,可以适当放宽设计变量变化率要求,但必须配合制造约束检查。收敛性判断不是一次性的开关动作,而是贯穿优化全过程的持续评估。
实用检查清单:打开 .out 文件,依次确认:① 最大约束违反量是否小于设定容差;② 设计变量最大变化率是否连续三步小于 1e-2;③ 目标函数相对变化是否连续三步小于 0.1%;④ KKT 残差是否呈下降趋势并处于合理量级;⑤ 迭代历史曲线是否存在异常震荡或长时间停滞。五项均通过,方可认为收敛结果具备工程可信度。
理解这些概念的工程含义,最终是为了避免两种典型误判:一是把“求解器正常结束”等同于“优化收敛”,二是把“目标函数平稳”等同于“结果可信”。迭代历史提供数据,目标函数、约束违反量、设计变量变化率和 KKT 条件分别从不同维度回答收敛性问题。只有把它们放在一起看,才能对 OptiStruct 优化结果的可信度做出有依据的判断。