云计算百科
云计算领域专业知识百科平台

响应面法代理模型+MOGWO多目标灰狼优化得到最优特征组合(代码&数据)

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

目录

工艺参数优化案例

优化参数设置

模型原理

结果展示

完整代码


之前给大家带来过两期机器学习+NSGA2实现工艺参数优化的推文:

保姆级教程!NRBO-BP回归+NSGAII多目标优化一键实现工艺参数优化!自动保存最优特征组合!

Matlab一键实现Transformer多输出预测+NSGAII多目标工艺参数优化

后台有小伙伴跟我反馈说,已经用这几个模型结合自己的数据,发到了各自学科的Top期刊上。

当然,机器学习或者深度学习模型确实会新颖一些,不过,机器学习模型通常需要成千上百个样本进行训练,如果数据不足的话很容易造成过拟合现象。另外,深度学习属于黑箱模型,无法在论文里通过公式描述模型,也比较难量化两个特征之间的耦合关系,有的审稿人更看重可解释性的问题。

那么,如何在保证以上前提的基础上对模型进行创新呢?

在本期推文中,我们采用材料/工程等领域中用的最广泛也是最常用的一种方法——响应法进行建模分析,这个方法通常只需要几十个样本就能拟合出比较好的趋势,并可以通过公式展示特征是如何影响输出结果。随后,我们基于非常新颖的多目标优化算法——多目标灰狼算法MOGWO得到最优Pareto特征组合。与NSGA2等算法需要调整变异、交叉概率等参数不同,MOGWO除了种群大小和最大迭代次数之外,几乎没有需要我们手动调整的内部超参数,并且比较适合连续型问题,可以说非常适合工艺参数优化问题,又能吸引审稿人。

可以说,这个方法既经典,又新颖。并且,我们的代码不仅使用方便,只有一个文件需要运行,而且注释详细,非常适合新手小白。

您只需做的工作:替换Excel数据,一键运行main文件即可!

(Ps:4个目标也可以哦~)

工艺参数优化案例

本期给大家带来的数据是一个工艺参数优化的数据,数据已经进行了脱敏处理,因此用x1-x5代表特征,y1-y4代表输出,也就是5个特征4个输出的问题,这样也方便大家替换成自己的数据。

需要提醒的是,由于需要用到多目标优化算法进行求解,因此各个输出之间最好相互独立,比如刚刚提到的例子,化工反应工艺中,我们不可能在提高产品纯度和产量的同时又能够降低能耗,这是有悖于现实的,因此我们才需要利用多目标优化算法找到一个平衡点,这也是我们找到最优特征组合的目的。

小伙伴们在更换自己的数据时,只需将几个输出变量只需放在最后几列即可,然后更改outdim变量,前面的特征数量放多少都可以。

比如,你有10个特征4个输出变量,只需把这4个变量放在最后4列,前面10列放特征即可,然后在代码里找到outdim变量更改为4即可,其余代码无需更改,非常方便适合新手小白!

%% 导入数据
res = xlsread('数据集.xlsx');

%% 划分训练集和测试集
num_size = 0.7; % 训练集占数据集比例
outdim = 4; % 最后几列为输出
num_samples = size(res, 1); % 样本个数
res = res(randperm(num_samples), :); % 打乱数据集
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) – outdim; % 输入特征维度

优化参数设置

替换完自己的数据之后,因为模型不知道你的输出目标是最大还是最小,比如刚刚的例子,你需要告诉模型你的产品纯度和产量是越大越好,而能耗是越小越好,所以需要简单设置一下。

找到objDir变量,设置1或-1即可,1代表最小化,‑1代表最大化,分别对应刚刚案例Excel的4个输出y1-y4。再比如,如果你有两个目标,一个目标最大一个目标最小,那你改成[-1;1]即可。

%% MOGWO 多目标算法求解设置
params.Np = 50; % 种群大小
params.Nr = 50; % 存档库大小
params.maxgen = 100; % 最大迭代次数
MultiObj.nVar = f_; % 变量数量
MultiObj.var_min = min(res(:, 1:f_)); % 变量下界
MultiObj.var_max = max(res(:, 1:f_)); % 变量上界
MultiObj.numOfObj = outdim; % 目标函数个数
MultiObj.name = 'MOGWO'; % 问题名称
objDir = [-1; 1; 1; 1]; % 目标函数方向, -1最大化, 1最小化

另外,如果你有特定的问题约束,想改变每个特征的上界和下界约束,也可以按上面的方法更改MultiObj.var_min和MultiObj.var_max变量(一般不用更改)~

其余参数是关于MOGWO的,大家可以根据计算时间等需求自行调整,用我自己设置的默认参数也完全没问题~

模型原理

响应面法实际上是可以理解为比较复杂的回归分析,其基本思想是假设一个包括一些未知参量的极限状态函数与基本变量之间的解析表达式代替实际的不能明确表达的结构极限状态函数。说人话,就是传统的多元回归分析一般只有一次项,而响应面的公式长这样:

y = 常数 + 一次项(直线 + 交叉项(相互影响) + 二次项(曲线)

从一次多项式变成二次多项式之后,它就不仅能分析趋势,还能捕捉变量之间的耦合作用,并构建出高精度的非线性曲面,从而捕捉特征与输出之间的非线性关系以及变量之间的耦合作用。

关于多目标灰狼算法的原理,之前也写过一篇推文专门介绍,这里就不再过多叙述:

多目标灰狼算法(MOGWO):原理讲解与代码实现 Matlab代码免费获取

再来说下我们这个模型具体的流程:

1)数据导入与预处理。导入工艺参数与输出指标数据,划分训练集与测试集。随后对数据进行归一化处理,以便于模型的训练,同时设置算法参数。

2)响应面法模型拟合与预测。利用训练好的模型分别对训练集和测试集数据进行预测,并对预测结果进行反归一化,并输出各个变量与特征之间的响应面公式。

3)模型评估与可视化。计算模型预测的各项精度指标,包括RMSE、MAE、MSE、MAPE和决定系数R²,绘制拟合曲线、误差曲线、误差直方图和线性回归图,直观评估模型的预测性能。

4)多目标灰狼算法(MOGWO)求解与最优工艺参数组合确定。通过MOGWO多目标优化算法,迭代生成多个参数组合解,并计算相应的多目标函数值,获得非支配解集(Pareto前沿),并将最优参数组合导出到Excel文件中。

结果展示

废话不多说,最后展示一下我们的结果~

首先是帕累托解集图,如果你只有1-2个目标,那帕累托解集图就是二维的,3个目标就是三维的,我们的案例数据是4个目标,4个目标不大好可视化,因此用颜色表示第四个目标(超过4个目标就不好绘制了):

每个输出的预测结果图(几个输出就有几张这种图):

误差直方图(几个输出就有几张这种图):

回归拟合图(几个输出就有几张这种图):

线性拟合图(几个输出就有几张这种图):

最后命令行窗口也会清晰地输出每个目标对应的公式:

以及每个目标的误差指标,非常清晰~:

以及生成一个最优特征组合的Excel,方便大家自行选择合适的帕累托解集~

文件夹内也非常清晰,没有什么乱七八糟的文件!您需要运行的文件只有main文件一个!!

以上所有图片,替换Excel后均可一键运行main生成,所使用编程语言为Matlab,无需配置环境!比Python什么方便多了!非常适合新手小白!

完整代码

如果需要以上完整代码,只需点击下方小卡片,再后台回复关键字,不区分大小写:

工艺参数优化

其他更多代码链接:程序清单

赞(0)
未经允许不得转载:网硕互联帮助中心 » 响应面法代理模型+MOGWO多目标灰狼优化得到最优特征组合(代码&数据)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!