1. 课程导入与协同框架

在真实的工程优化问题中,我们常常面对这样的困境:一次高保真仿真(如有限元分析、计算流体力学、多体动力学)可能需要几分钟到几十小时,而多目标优化算法往往需要成百上千次目标函数评估。如果直接让优化器反复调用高保真模型,计算成本会迅速失控。代理模型与多目标优化协同的核心思想,正是用少量高保真样本训练一个"廉价替身",让优化搜索主要在替身上进行,只在关键位置调用真实模型校正,从而在可接受的时间内获得一组高质量折中解。

本课程围绕"代理模型如何与多目标优化协同工作"这一主线展开。它不是把两类方法简单拼接,而是要让读者理解:代理模型提供的是对目标/约束的近似映射,多目标优化提供的是在冲突目标间寻找Pareto前沿的搜索机制,二者通过采样策略、模型更新准则和收敛判据形成闭环。学完本课程,你应当能够独立搭建一个"采样—建模—优化—验证—更新"的协同流程,并针对具体工程问题选择合适的代理模型类型与多目标算法。

协同框架的整体流程

一个典型的协同框架可以拆成五个相互咬合的环节。第一是问题定义:明确设计变量及其上下界、目标函数个数与方向、约束条件,以及可接受的评估预算。第二是试验设计(DoE):用拉丁超立方、最优拉丁超立方或Sobol序列在设计空间内生成初始样本,保证空间填充性。第三是代理模型训练:常用Kriging(高斯过程)、径向基函数(RBF)、支持向量回归(SVR)或多项式响应面,其中Kriging还能给出预测方差,这对后续的"不确定性驱动"更新非常关键。第四是多目标优化:在代理模型上运行NSGA-II、MOEA/D或NSGA-III等算法,得到近似Pareto前沿。第五是验证与更新:挑选前沿上具有代表性的点(如拐点、稀疏区、高不确定性区)调用高保真模型,将新样本加入训练集,重新训练代理模型,直到前沿收敛或预算耗尽。

代理模型与多目标优化协同框架 ① 问题定义 设计变量 / 目标 / 约束 评估预算 N_max ② 试验设计 DoE LHS / OLHS / Sobol 初始样本 n₀ 高保真模型评估 FEM / CFD / 多体 输出目标与约束值 ③ 代理模型训练 Kriging / RBF / SVR 预测均值 + 方差 ④ 多目标优化 NSGA-II / MOEA/D 近似 Pareto 前沿 ⑤ 验证与更新 前沿选点 → 高保真评估 → 加入训练集 → 重训代理 收敛判据:前沿变化 < ε 或预算耗尽 迭代反馈 评估预算管理 n₀ 初始样本 N_max 总预算 收敛判据 超体积 HV 前沿间距 Δ 实线:数据流方向 虚线:反馈/管理回路

这个框架的关键在于"闭环"二字。如果只是用初始样本训练一次代理模型,然后在上面跑一次多目标优化就结束,那只是"一次性近似",前沿精度无法保证。真正的协同要求把优化结果反馈回采样环节,让新样本落在最需要的地方——可能是Pareto前沿的稀疏段,也可能是代理模型预测方差较大的区域。这种"优化引导采样、采样改善模型、模型提升优化"的循环,才是协同的精髓。

典型应用场景

协同框架在多个工程领域都有成熟应用。在汽车轻量化中,设计变量可能是板材厚度、加强筋位置和截面形状,目标是最小化质量同时最大化碰撞吸能,约束包括刚度、模态和制造可行性。一次整车碰撞仿真可能需要数小时,直接优化不可行,但用Kriging代理模型配合NSGA-II,通常200~400次高保真评估就能得到较完整的前沿。在翼型气动优化中,设计变量是翼型控制点坐标,目标是最大化升阻比同时最小化阻力系数,CFD单次计算从几分钟到几十分钟不等,代理模型协同可以把总评估次数压缩一个数量级。在电池热管理中,设计变量包括流道宽度、冷却液流量和入口温度,目标是降低最高温度同时减小泵功耗,这类问题往往还带有制造公差约束,需要代理模型同时处理目标与约束的近似。

这些场景的共同特征是:高保真模型昂贵、目标之间存在冲突、设计空间维度中等(通常5~30维)、需要的是折中解集而非单一最优解。如果问题只有单一目标且评估廉价,直接优化即可,不需要代理模型;如果设计空间维度极高(上百维),代理模型的训练成本本身就会成为瓶颈,需要先做降维或变量筛选。

学习路径与实战项目

本课程的学习路径分为四个阶段。第一阶段建立概念框架,理解代理模型与多目标优化的基本术语和协同逻辑,也就是本章的内容。第二阶段深入代理模型技术,包括Kriging的核函数选择、超参数优化、RBF的宽度参数、SVR的惩罚系数,以及如何用交叉验证评估模型精度。第三阶段掌握多目标优化算法,重点理解Pareto支配、拥挤距离、参考点选择等机制,并能根据问题特征选择NSGA-II、MOEA/D或NSGA-III。第四阶段进入协同策略,学习自适应采样准则(如期望改进EI、超体积改进、Pareto前沿填充)和收敛判据设计。

实战项目贯穿课程始终:以一个"悬臂梁多目标轻量化设计"为案例,设计变量为梁的截面宽度和高度,目标为最小化质量和最小化端部位移,约束为最大应力不超过许用值。你将用Python实现完整流程:用SMT或scikit-learn训练Kriging模型,用pymoo运行NSGA-II,用超体积指标监控收敛,最终输出Pareto前沿并对比不同采样策略的效果。项目会提供示例参数和参考结果,但你需要自己运行代码、观察中间输出、判断收敛是否合理。

学习建议:每学完一个模块,回到悬臂梁案例中替换对应组件,观察结果变化。例如把Kriging换成RBF,看前沿分布是否改变;把NSGA-II换成MOEA/D,看收敛速度差异。这种"替换—对比—分析"的方式,比单独学算法更有效。

需要特别提醒的是,代理模型与多目标优化的协同不是"先建好模型再优化"的串行关系,而是交替进行的。初始样本可能只有20~30个,代理模型精度有限,但优化器仍能给出一个粗略前沿;用这个前沿引导采样,补充10~20个高保真点后,模型精度会显著提升,前沿也会向真实Pareto前沿逼近。通常经过3~5轮迭代,超体积指标的变化会小于1%,此时可以认为收敛。如果预算允许,还可以在前沿的拐点附近加密采样,因为这些位置往往对应设计者最感兴趣的折中方案。