PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模—优化—决策」的多目标优化框架

PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模---优化---决策」的多目标优化框架

读完你会得到:一个可以直接复用的 MATLAB 多目标优化流水线,以及为什么「神经网络 + 支持向量回归」的组合能在小样本黑箱系统上稳健建模、补回跨量级目标的局部误差,并输出特征敏感性分析。

多目标优化在工程里是个老问题,但真正难的不是优化算法本身,而是优化目标函数从哪里来。

真实工程里,设计变量(比如压力、温度、几何尺寸)和性能响应(比如强度、变形、寿命)之间往往没有显式公式,只能靠昂贵的有限元仿真或物理实验一点点试。于是问题变成:样本只有一百来条,怎么建一个足够准的代理模型,再在这个模型上做多目标寻优,最后从一堆帕累托解里挑出一个真正能用的方案?

这篇文章拆解一个把四件事串起来的完整框架:物理信息神经网络(PINN)建模 → SVM 残差修正 → NSGA-II 多目标寻优 → 熵权 TOPSIS 决策,并用 150 条样本的实测结果说明每一环为什么这么设计。


一、这套框架解决什么问题

先看数据形态:150 条样本,5 个输入 x1~x5,4 个输出 y1~y4。优化方向是「最大化 y1、最小化 y2、y3、y4」------四个目标互相打架,这是典型的多目标冲突。

真正棘手的地方在数据本身:

变量 量级范围
x1 1 ~ 13
x3 18 ~ 20.5(窄区间)
y1 -19.97 ~ -8.49
y3 3526 ~ 2.15×10⁶(跨三个数量级)

y3 的取值从几千跳到二百多万,跨度超过 1000 倍。直接把这样的数据丢进神经网络,大数会淹没小数,模型很难学到 y3 之外的规律。所以框架的第一道工序是自适应归一化:对「最大值/最小值 > 1000」的列先取 log10 压缩量级,再做 min-max 归一化。

这一步看似不起眼,却是后面所有精度提升的前提。


二、主要功能:一条流水线四段活

框架被拆成四个可独立替换的模块,每个模块只干一件事:

  1. 数据预处理:读 Excel、识别 x*/y* 列、去 NaN/Inf、自适应归一化、按 8:2 切训练/测试集。
  2. 融合代理建模:PINN 学全局规律,SVM 修局部残差,二者相加得到融合模型。
  3. 多目标寻优:以融合模型为适应度函数,NSGA-II 在归一化输入空间 0,1 上反求帕累托前沿。
  4. 多属性决策:熵权法定客观权重,TOPSIS 排序选出最优折中方案。

模块化带来的好处是:换数据不用改算法,改物理约束不用动优化器,把「建模」和「决策」解耦了。


三、技术路线:为什么是「总体 + 残差」

这是整个框架最核心的设计决策。

单独用 PINN 建模,测试集 R² 已经能到 0.987 左右,不算差。但 PINN 学的是数据的总体趋势,对训练点局部的细节拟合会有残留误差------这是所有基于梯度优化的神经网络的通病,它倾向于「平均地」拟合,而不是「精确地」插值。

残差修正有三种常见选择:克里金(Kriging)、支持向量回归(SVR)、Boosting 集成。 本框架最终选择 SVM(支持向量回归,SVR),理由有三:

  • 全局最优解:SVR 归结为凸二次规划问题,能保证找到全局最优,不像神经网络那样依赖初值、容易陷入局部极小。
  • 强泛化能力:SVR 基于结构风险最小化原则,同时最小化经验误差与模型复杂度,在中小样本、高维数据上抗过拟合能力突出。
  • 核技巧 + 稀疏性:通过 RBF 高斯核隐式映射到高维空间处理非线性关系,最终模型仅由少数支持向量决定,结构紧凑、预测高效。

融合策略很直观:

复制代码
Y_fused = Y_pinn + R_svm

先让 PINN 拟合原始输出,算出训练集残差 Residual = Y_train - Y_pinn,再用 SVM 对这个残差建模。最终预测 = PINN 的全局预测 + SVM 的残差预测。

这一刀切得漂亮的地方在于:两个模型的职责完全互补。PINN 负责「趋势和外推」,SVM 负责「局部细节和残差修正」。下面的实测数据会证明,这一步在默认超参数下带来了稳健的小幅改善,其中跨量级的 y3 最为明显。


四、算法步骤与公式原理

4.1 PINN:把物理先验塞进损失函数

普通神经网络只拟合数据,PINN 在损失函数里加了一项物理约束:

复制代码
L(θ) = L_data + λ_phys · L_phys

L_data 是均方误差。L_phys 这里没有用复杂的控制方程,而是用了一个通用先验------响应曲面应该光滑连续 。具体做法是定义输出能量 E = ||U||²,惩罚能量关于输入的梯度范数:

复制代码
L_phys = mean( || ∂(||U||²) / ∂X ||² )

配合 tanh 激活函数(输出有界、导数连续),这个约束会压制预测曲面的剧烈振荡,让模型在样本稀疏的地方也保持物理合理性。λ_phys = 0.05 控制约束强弱。

网络结构是「输入层 → 两个 32 神经元的全连接层(tanh)→ 输出层」,用 Adam 优化器训练 3000 轮。

4.2 SVM:支持向量回归的残差修正器

SVM(Support Vector Machine)最初由 Vapnik 等人提出,用于回归时就是 SVR(Support Vector Regression,支持向量回归)。它的核心是结构风险最小化------在拟合误差与模型复杂度之间求平衡,而不是像普通最小二乘那样只看拟合误差。目标函数为:

复制代码
min  0.5·||w||² + C · Σ(ξᵢ + ξᵢ*)
s.t. yᵢ − <w, φ(xᵢ)> − b ≤ ε + ξᵢ
     <w, φ(xᵢ)> + b − yᵢ ≤ ε + ξᵢ*
     ξᵢ, ξᵢ* ≥ 0

这里 ε 是不敏感损失带宽度:落在 ±ε 管道内的误差不计入惩罚,只有超出管道的点才通过松弛变量 ξ 被「容忍」。C 是惩罚系数,控制「管道宽度」与「超出惩罚」之间的权衡。

对偶形式通过核函数 K(xᵢ, xⱼ) = φ(xᵢ)ᵀφ(xⱼ) 避免了显式的高维映射。本框架采用 RBF 高斯核:

复制代码
K(x, x') = exp(−γ·||x − x'||²)

最终预测由少数支持向量(αᵢ − αᵢ* ≠ 0 的点)线性组合给出:

复制代码
f(x) = Σ (αᵢ − αᵢ*) · K(xᵢ, x) + b

SVR 的三个关键超参数:

  • 惩罚系数 C:C 越大越倾向拟合训练数据,过大会过拟合;C 越小模型越平滑、但可能欠拟合。
  • 不敏感带 ε:决定「误差多小算可以接受」,ε 越大支持向量越少、模型越稀疏。
  • 核参数 γ(核尺度):控制单个样本的影响半径,γ 越大非线性拟合能力越强、越容易过拟合。

本框架设定 kernel=gaussian(RBF 核)、C=1、ε=0.1、kernelScale=auto(自动核尺度),并通过 MATLAB 的 fitrsvm 实现。由于每次只对残差做点预测,SVR 的训练是秒级完成的。

4.3 NSGA-II:帕累托前沿的生成器

NSGA-II 的三个核心机制:

  • 快速非支配排序:把种群按支配关系分成多个前沿层级,第一前沿就是帕累托最优。
  • 拥挤距离:同一层级里,优先保留目标空间分布更稀疏的个体,维持解的多样性。
  • 精英保留:父代子代合并后,「层级优先、拥挤距离次之」选下一代,优秀个体不丢失。

遗传算子用二元锦标赛选择、模拟二进制交叉(SBX)和多项式变异。对最小化问题统一处理,最大化目标取负号。这样不需要人工设权重,就能得到一整条分布均匀的帕累托前沿。

4.4 熵权法 + TOPSIS:从「解集」到「方案」

帕累托前沿是一堆互不支配的解,用户还是得选一个。这里用「熵权法 + TOPSIS」把它变成一个排序。

熵权法用信息熵客观定权重------指标取值越分散,熵越小,权重越大:

复制代码
e_j = -(1/ln n) · Σ p_ij · ln(p_ij)
w_j = (1 - e_j) / Σ(1 - e_j)

TOPSIS 再算每个解到「正理想解」和「负理想解」的距离,得到相对贴近度:

复制代码
C_i = D⁻_i / (D⁺_i + D⁻_i)

贴近度越大越优。两者结合,就完成了「优化出解集 → 决策出方案」的最后一公里。


五、参数设定

整套框架的参数都集中在 main.m 的配置区,改起来只动一处:

模块 参数 取值
PINN 隐藏层 32, 32
PINN 学习率 / 迭代 0.01 / 3000
PINN 物理损失权重 λ_phys 0.05
SVM 核函数 gaussian(RBF)
SVM 惩罚系数 C 1
SVM 不敏感带 ε 0.1
SVM 核尺度 kernelScale auto
NSGA-II 种群 / 代数 60 / 100
NSGA-II 交叉 / 变异概率 0.9 / 0.2
NSGA-II SBX / 变异分布指数 20 / 20
数据 训练比例 / 随机种子 0.8 / 42

设置随机种子 42 是为了保证结果可复现。


六、运行环境

  • 平台:MATLAB(R2019a 及以上更稳妥)

七、实测结果

7.1 预测精度

PINN 训练 3000 轮后最终损失收敛至 6.43×10⁻³,训练耗时约 42 秒。SVM(RBF 核、C=1、ε=0.1)残差建模耗时约 0.1 秒。

融合模型在测试集(30 个样本)上的表现:

输出 纯 PINN R² 纯 PINN RMSE 融合模型 R² 融合模型 RMSE RMSE 变化
y1 0.9874 0.4648 0.9883 0.4477 降 3.7%
y2 0.9869 30.68 0.9867 30.98 基本持平
y3 0.9942 4.09×10⁴ 0.9951 3.77×10⁴ 降 7.9%
y4 0.9906 1.211 0.9911 1.178 降 2.7%

相比纯 PINN,SVM 残差修正带来稳健的小幅改善:跨量级的 y3 改善最明显(R² 从 0.9942 升至 0.9951、RMSE 降 7.9%),y1、y4 略有改善,y2 基本持平。默认超参数(C=1、ε=0.1)下,SVM 未破坏 PINN 的全局规律,同时在高量级目标上补回了部分局部误差。

7.2 多目标极值寻优

为直观了解各目标的独立最优能力,框架还进行了多目标极值寻优:

目标 极值 x1 x2 x3 x4 x5
max y1 -8.36 11.54 2.79 20.37 1.03 41
min y2 69.94 2.14 0 18.00 0.6 29.17
min y3 -5.71×10⁴ 4.23 1.51 20.50 0.6 6
min y4 -1.48 1.00 1.94 18.00 1.6 6

各目标独立极值对应的设计变量取值差异明显:max y1 需要 x1=11.54、x5=41,而 min y4 需要 x1=1.00、x5=6,两者几乎位于设计空间两端------这印证了多目标冲突,也凸显了折中优化的必要性。

7.3 优化与决策

NSGA-II 用 100 代得到 60 个帕累托解。熵权法给出的四个权重分别是 0.2849 / 0.2651 / 0.2120 / 0.2380,其中 y1 权重最高(0.2849),四个权重分布较为均衡,说明各目标在帕累托解集中的离散度接近、携带的决策信息相当。

TOPSIS 最终选出第 58 号解作为最优折中方案:

复制代码
输入: x1=3.348, x2=0, x3=18.000, x4=0.601, x5=41
输出: y1=-15.36, y2=112.35, y3=1.45×10⁵, y4=31.24

7.4 特征敏感性

SVM 本身不直接输出像回归树那样的「分裂重要性」,但框架通过对输入扰动敏感性分析度量特征重要性:对每个输入变量施加 ±扰动,计算 SVM 残差预测的平均变化量------变化越大,说明该变量对残差越敏感、越重要。这份信息对工程人员来说,就是告诉你「该重点调哪个参数」,同样能给出各设计变量对不同输出的敏感性排序。

7.5 可视化一览

配套的 18 张可视化图覆盖了建模、优化、决策全流程:

序号 图表 说明
1 PINN 训练损失曲线 收敛性验证
2 PINN 预测热力图 预测值 + 误差分布
3 SVM 残差预测热力图 残差预测 + 拟合误差
4 融合模型拟合散点图 预测 vs 真实(训练/测试)
5 帕累托最优前沿 四维 3D 彩色图
6 熵权法权重占比 柱状图 + 等权对比
7 SVM 支持向量数量统计 模型稀疏性
8 TOPSIS 贴近度排序 方案排序
9 预测值与实际值对比 曲线对比
10 PINN 三维响应面 3D surf 图
11 误差分布直方图 PINN vs 融合模型
12 SVM 残差预测散点图 残差拟合效果
13 融合模型三维响应面 3D surf 图
14 目标空间等高线图 2D contour
15 特征敏感性柱状图 扰动敏感性重要性
16 误差分析箱线图 统计对比
17 关键指标对比柱状图 RMSE/MAE/R²
18 残差分析图 残差 vs 预测值

八、为什么选 SVM 而不是克里金

两者都可以做残差修正,但适用场景不同:

维度 克里金(Kriging) SVM(SVR)
建模方式 高斯过程,假设数据服从高斯分布 结构风险最小化,无分布假设
优化问题 需要求解核函数与超参 凸二次规划,保证全局最优
训练集表现 精确插值(R²=1.0) 近似拟合(ε-不敏感)
抗过拟合 依赖核函数选择 结构风险最小化天然抗过拟合
模型稀疏性 无(用全部样本) 仅支持向量决定模型
特征敏感性 较弱 扰动敏感性分析
高维数据 计算复杂度 O(n³) 可高效处理

如果你的数据量很小(几十条)、信噪比高、且需要「精确插值」,Kriging 是好选择。如果你的样本量中等、残差模式复杂、且看重全局最优解与泛化能力,SVM(SVR)更合适。本框架的模块化设计让你可以轻松切换------fit_kriging.m 和 fit_svm.m 接口一致,换一个函数名即可。


九、应用场景

这套框架是通用的黑箱多目标优化流水线,只要你的问题符合「多输入 → 多输出、目标互相冲突、样本有限、评价昂贵」这几个特征就能套用:

  • 结构轻量化:输入是尺寸/厚度/材料参数,输出是重量、强度、刚度、一阶频率。
  • 工艺参数优化:输入是温度/压力/时间,输出是成品率、变形量、残余应力。
  • 材料配方设计:输入是各组分比例,输出是成本、拉伸强度、断裂伸长率。
  • 化工/能源过程:输入是操作条件,输出是能耗、产量、排放。

数据从哪来都可以------有限元仿真、物理实验、历史生产记录。你只需要把列名按 x* / y* 规范命名,剩下的预处理、建模、优化、决策整条链路框架都会自动完成。


写在最后

这套框架最值得借鉴的不是某一个算法,而是「总体规律 + 局部残差」这个建模思想:让擅长趋势外推的神经网络和擅长小样本非线性拟合的支持向量回归各司其职,再用进化算法和客观赋权把「解集」落成「方案」。

相比第一版 Kriging 方案,SVM 替换带来了三个升级:全局最优解的求解保证、结构风险最小化的强泛化能力、以及模型稀疏性带来的高效预测。尤其是泛化能力------在小样本、高维的黑箱工程问题上,它对过拟合的天然抑制是实打实的好处。

当前实现里,物理约束还停留在「光滑性」这类通用先验。如果你手头的具体问题有明确的控制方程,把 L_phys 换成真实的方程残差,模型的物理一致性和外推能力还能再上一个台阶------这也是这个框架留给你扩展的接口。


相关推荐
别动我齐刘海1 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
荆棘鸟智能2 小时前
短历时洪水预报算法实践:水文模型与 LightGBM 残差订正融合
人工智能·算法·机器人
葫三生3 小时前
关于三生原理系列被技术开发社区批量收录或引发策展边界讨论的一种思考
大数据·人工智能·深度学习·算法·机器学习·数据挖掘·开源
catcatuncle3 小时前
OpenWorkBuddy 部署排错手册:从源码启动到自己搭一个给团队用,七个最容易卡住的地方
算法
avi91113 小时前
【AI教人】在Inspector显示所有Delegate-Odin Inspector之三
java·前端·算法·delegate·inspector·editor扩展·unity editor
持续学习的程序员+13 小时前
跟随一次“沙拉酱瓶入篮”任务,理解 RPent(harness vla) 的完整工作流程
人工智能·深度学习·机器学习
淡海水3 小时前
06-02-源码-增量标记算法实现
算法·unity·c#·gc
碧海银沙音频科技研究院3 小时前
实现炬芯ATS308X的usb cdc 串口IAP 固件升级功能实现
人工智能·嵌入式硬件·深度学习·算法
云淡风轻~窗明几净3 小时前
角谷猜想与百度AI的对话dialog(原始稿)
人工智能·算法·机器学习·图论