贝叶斯优化+卷积神经网络+多目标优化+多属性决策!BO-CNN+NSGAII+熵权TOPSIS,附实验报告!
一、研究背景
在实际工程与科学决策中,常面临两类紧密相关的问题:
预测问题:需要从多个输入特征精确预测多个连续输出变量(如产品质量、能耗、排放等)。卷积神经网络(CNN)具备强大的特征提取能力,但其性能依赖超参数(学习率、批大小、正则化系数)的合理选择。贝叶斯优化能高效搜索最优超参数组合。
优化决策问题:在获得输入-输出映射关系后,决策者通常希望找到一组输入变量(设计参数),使得多个输出目标(如最大化效益、最小化成本与风险)同时达到最优。这些目标往往相互冲突,需要多目标优化算法(如NSGA‑II)获取帕累托前沿,并利用多属性决策方法(如熵权TOPSIS)从中选出综合最优解。
本代码集合将上述两个环节串联:先用CNN建立高精度的输入-输出代理模型,再基于该模型进行多目标优化与决策,形成“数据驱动建模 → 多目标寻优 → 客观决策”的完整技术链条。
二、总体目标
- 代码1(
main1_BO_CNN.m):基于贝叶斯优化自动调优CNN超参数,训练一个多输出回归模型,实现从5个输入变量到4个输出变量的精准预测。 - 代码2(
main2_NSGAII_EYTOPSIS.m):在给定的自变量边界内,利用NSGA‑II算法寻找使4个目标(1个最大化、3个最小化)达到帕累托最优的解集,并采用熵权TOPSIS从帕累托解集中选出综合最优的输入变量组合。 - 协同目标:最终为实际决策问题提供一个可解释、可复现的最优设计方案——既得到高精度的预测模型,又得到客观量化的最优解。
三、主要功能模块
| 模块 | 代码1(BO_CNN) | 代码2(NSGA‑II+TOPSIS) |
|---|---|---|
| 数据预处理 | 读Excel,划分训练/测试集,归一化,重塑为4‑D | 无(直接使用边界和步长生成自变量) |
| 超参数优化 | 贝叶斯优化(学习率、批大小、L2系数) | 无 |
| 模型构建 | 两层CNN(卷积+BN+ReLU+Dropout)+ 全连接回归层 | 无(仅调用costfunction评估目标) |
| 优化算法 | 无 | NSGA‑II(非支配排序、拥挤距离、SBX交叉、多项式变异) |
| 决策方法 | 无 | 熵权TOPSIS(从帕累托前沿选最佳解) |
| 输出结果 | 训练好的net、预测误差指标、可视化图表 | 帕累托前沿解集、综合最优自变量/因变量 |
| 保存内容 | Bayes_CNN_Model.mat | Excel文件(帕累托解集及对应自变量) |
四、完整算法流程(两代码联合)
详细步骤:
阶段一:建立代理模型(代码1)
- 加载
data.xlsx,划分训练/测试集,归一化。 - 贝叶斯优化搜索最优超参数(学习率、批大小、L2系数)。
- 使用最优超参数训练CNN多输出回归模型。
- 评估模型精度(RMSE、R²、MAE、MAPE),生成各类可视化图表。
- 保存模型
net及归一化参数。
- 加载
阶段二:多目标优化与决策(代码2)
- 定义5个自变量的取值范围与离散步长。
- 定义4个目标函数(可通过调用阶段一训练好的
net快速预测,或在costfunction中嵌入真实实验/仿真)。 - 运行NSGA‑II算法:
- 初始化种群(按步长约束随机生成)。
- 非支配排序 + 拥挤距离计算。
- 锦标赛选择、SBX交叉、多项式变异产生子代。
- 合并、重排序、截断,迭代50代。
- 提取最终帕累托前沿(F1)。
- 将F1中的自变量及目标值保存为Excel。
- 执行熵权TOPSIS:
- 正向化处理(目标1最大化,目标2‑4最小化)。
- 计算信息熵及熵权。
- 计算各解到正/负理想解的距离及相对接近度。
- 输出综合最优解(最优自变量取值及对应的目标值)。
五、核心公式与原理
代码1(CNN + 贝叶斯优化)
- 卷积运算:(I∗K)(i,1)=ΣmΣnI(i+m,1+n)K(m,n)(I * K)(i,1) = Σ_m Σ_n I(i+m,1+n) K(m,n)(I∗K)(i,1)=ΣmΣnI(i+m,1+n)K(m,n),核尺寸3×1。
- 批量归一化:$BN(x) = γ·(x-μ)/√(σ²+ε) + β`。
- 损失函数:均方误差MSE=(1/N)Σ(ytrue−ypred)2MSE = (1/N) Σ (y_true - y_pred)²MSE=(1/N)Σ(ytrue−ypred)2。
- 贝叶斯优化:高斯过程代理模型f(x) GP(m(x),k(x,x′))f(x) ~ GP(m(x), k(x,x'))f(x)GP(m(x),k(x,x′)),采集函数为期望改进(EI):
EI(x)=(μ(x)−fbest)Φ(Z)+σ(x)φ(Z)EI(x) = (μ(x)-f_best)Φ(Z) + σ(x)φ(Z)EI(x)=(μ(x)−fbest)Φ(Z)+σ(x)φ(Z),其中Z=(μ(x)−fbest)/σ(x)Z = (μ(x)-f_best)/σ(x)Z=(μ(x)−fbest)/σ(x)。
代码2(NSGA‑II + 熵权TOPSIS)
- 帕累托支配:解A支配解B若 ∀j: f_j(A) ≤ f_j(B) 且 ∃k: f_k(A) < f_k(B)(最小化语境)。
- 拥挤距离:di=Σm=1M(fm(i+1)−fm(i−1))/(fmmax−fmmin)d_i = Σ_{m=1}^{M} (f_m(i+1) - f_m(i-1)) / (f_m^{max} - f_m^{min})di=Σm=1M(fm(i+1)−fm(i−1))/(fmmax−fmmin)。
- SBX交叉:c1=0.5[(1+β)p1+(1−β)p2]c1 = 0.5[(1+β)p1 + (1-β)p2]c1=0.5[(1+β)p1+(1−β)p2],βββ由分布指数随机生成。
- 熵权:Ej=−kΣpijlnpij‘,‘wj=(1−Ej)/Σ(1−Ej)E_j = -k Σ p_{ij} ln p_{ij}`,`w_j = (1-E_j)/Σ(1-E_j)Ej=−kΣpijlnpij‘,‘wj=(1−Ej)/Σ(1−Ej)。
- TOPSIS:
正理想解A+=(maxvij)A^+ = (max v_{ij})A+=(maxvij),负理想解A−=(minvijA^- = (min v_{ij}A−=(minvij;
相对接近度Ci=di−/(di++di−)C_i = d_i^- / (d_i^+ + d_i^-)Ci=di−/(di++di−)。
六、关键参数设定
| 参数 | 代码1(BO_CNN) | 代码2(NSGA‑II) |
|---|---|---|
| 训练集比例 | 0.7 | — |
| 贝叶斯评估次数 | 30 | — |
| 学习率范围 | [1e-4, 1e-1](对数) | — |
| 批大小范围 | [16, 128](整数) | — |
| L2系数范围 | [1e-6, 1e-1](对数) | — |
| 种群大小 | — | 100 |
| 迭代次数 | — | 50 |
| 交叉概率 | — | 0.85 |
| 变异概率 | — | 0.2 |
| 自变量个数 | 5(由数据决定) | 5(自定义边界) |
| 目标个数 | 4(输出维度) | 4(1个最大,3个最小) |
七、运行环境与依赖
- MATLAB版本:R2023b及以上
- 输入数据:
data.xlsx。
八、应用场景
两个代码既可独立使用,也可联合构成完整的数据驱动多目标优化决策系统,典型场景包括:
工业过程优化
- 使用历史生产数据(代码1)训练CNN模型,预测产品收率、能耗、排放等指标。
- 然后以该CNN模型作为目标函数评估器(代码2),寻找最优操作参数(温度、压力、流量等),使收率最大、能耗和排放最小。
材料配方设计
- 基于实验数据训练CNN,预测材料的多项性能(强度、韧性、成本)。
- 利用NSGA‑II搜索配方比例,得到帕累托前沿,再用TOPSIS选出综合性能最优的配方。
能源系统调度
- 建立CNN代理模型预测不同调度方案下的发电量、碳排放、运行成本。
- 通过多目标优化获得帕累托解集,辅助决策者平衡经济性与环保性。
金融投资组合
- CNN预测不同资产配置下的预期收益、风险和换手率。
- NSGA‑II寻找帕累托最优投资组合,熵权TOPSIS给出推荐权重。
