一、模型详细简介
1.1附件文件夹程序代码截图
全部完整源代码,请在个人首页置顶文章查看:
学行库小秘_CSDN博客https://blog.csdn.net/weixin_47760707?spm=1000.2115.3001.5343
1.2各文件夹说明
1.2.1 gadecod.m函数文件
gadecod.m该文件为一个函数文件,作用是一个用于神经网络参数解码和训练的函数。该函数文件的具体执行流程如下:
1.函数输入:函数接受一个参数 x,这个参数是一个经过遗传算法编码的一维向量。
2.读取主空间变量:函数从 MATLAB 的基础工作空间中读取一些重要的变量,包括隐藏层神经元个数 S1,网络参数 net,输入数据 p_train,输出数据 t_train。
3.参数初始化:根据输入数据的维度,初始化输入节点数 R2 和输出节点数 S2。
4.输入权重编码:根据隐藏层神经元个数 S1 和输入节点数 R2,将遗传算法编码的参数 x 中的一部分解码为输入层到隐藏层之间的权重矩阵 W1。
5.输出权重编码:根据输出节点数 S2 和隐藏层神经元个数 S1,将遗传算法编码的参数 x 中的一部分解码为隐藏层到输出层之间的权重矩阵 W2。
6.隐层偏置编码:根据隐藏层神经元个数 S1,将遗传算法编码的参数 x 中的一部分解码为隐藏层的偏置向量 B1。
7.输出偏置编码:根据输出节点数 S2,将遗传算法编码的参数 x 中的一部分解码为输出层的偏置向量 B2。
8.赋值并计算:将解码后的权重和偏置值赋给网络参数 net 中对应的权重和偏置矩阵。然后通过调用 train 函数对神经网络进行训练,其中 p_train 是输入数据,t_train 是输出数据。
9.模型训练:使用输入数据 p_train 和输出数据 t_train 对神经网络进行训练。
10.仿真测试:使用训练好的神经网络对输入数据 p_train 进行仿真测试,得到输出 t_sim1。
11.计算适应度值:通过对比仿真输出 t_sim1 和实际输出 t_train 的差异,计算适应度值 val。适应度值反映了神经网络的拟合精度,即神经网络对训练数据的拟合程度。计算公式中使用了均方根误差的倒数来作为适应度值。
总体来说该函数是将遗传算法编码的参数解码成神经网络的权重和偏置,然后通过训练和仿真测试计算神经网络的适应度值,以评估神经网络的性能。
图1 gadecod.m函数文件部分代码
1.2.2 main.m主函数文件
这段代码是一个使用遗传算法对神经网络进行参数优化,并对优化后的神经网络进行训练和测试的过程。下面对代码的作用进行概括解释:
1.导入数据:从名为 "数据集.xlsx" 的 Excel 文件中读取数据,存储在变量 res 中。
2.添加路径:将名为 "goat" 的文件夹添加到 MATLAB 的搜索路径中,以便调用其中的函数。
3.划分训练集和测试集:将数据集划分为训练集和测试集,其中训练集包含80个样本,测试集包含23个样本。
4.数据归一化:对训练集和测试集的输入和输出数据进行归一化,将其缩放到区间 [0, 1] 之间,方便神经网络的训练。
5.建立模型:创建一个具有5个隐藏层节点的前馈神经网络模型。设置参数:设置神经网络的训练参数,包括最大迭代次数、误差阈值和学习率。
6.设置优化参数:设置遗传算法的参数,包括遗传代数、种群规模、优化变量个数和边界等。
7.初始化种群:使用遗传算法初始化种群,准备进行参数优化。
8.优化算法:调用遗传算法函数进行参数优化,得到优化后的种群和优化迭代曲线。
9.获取最优参数:从优化后的种群中解码出神经网络的最优权重和偏置。
10.参数赋值:将最优参数赋给神经网络模型。
11.模型训练:使用训练集对神经网络进行训练。
12.仿真测试:使用训练好的神经网络对训练集和测试集进行仿真测试,得到预测结果。
13.数据反归一化:将仿真测试得到的预测结果反归一化,还原到原始数据范围。
14.计算均方根误差:通过计算真实输出与预测输出之间的均方根误差来评估神经网络的性能。
15.绘制优化迭代曲线:绘制优化过程中适应度值的变化曲线。
16.绘制预测结果对比图:绘制训练集和测试集真实输出与预测输出之间的对比图,并计算相关指标(R2、MAE、MBE和RMSE)。
17.绘制散点图:绘制训练集和测试集的真实输出与预测输出之间的散点图,用于直观地观察预测结果的一致性。
图2 main.m主函数文件部分代码
1.2.3 GA遗传算法等函数文件
此外还包含GA遗传算法等一共9个辅助函数文件,具体见下图。
1.2.4 数据集文件
数据集为Excel数据csv格式文件,可以方便地直接替换为自己的数据运行程序。原始数据文件包含7列特征列数据和1列输出标签列数据,一共包含103条样本数据,具体如图所示。
二、代码运行结果展示
该GA-BP神经网络回归预测模型通过遗传算法对神经网络进行参数优化,包括权重和偏置的优化。
首先,它从Excel文件读取数据,并将数据划分为训练集和测试集。然后,对数据进行归一化处理,以便神经网络的训练。
接着,创建具有5个隐藏层节点的前馈神经网络,并设置训练参数。通过遗传算法优化神经网络的参数,得到最优的权重和偏置。然后,将最优参数赋给神经网络并进行训练。训练后,对训练集和测试集进行仿真测试,并计算预测结果与真实值之间的均方根误差等相关指标来评估神经网络性能。
最后,通过绘制优化迭代曲线和预测结果对比图,直观地展示优化过程和预测结果。具体结果如下图所示,包括调用的MATLAB神经网络库的各项具体参数,GA遗传算法训练过程中的适应度变化曲线,训练集、测试集的预测值和真实值的预测结果对比图,RMSE值以及模型预测结果的散点图等。
三、注意事项
1.程序运行软件推荐Matlab 2018B版本及以上;
2.所有程序都经过验证,保证程序可以运行。此外程序包含简要注释,便于理解。
3. 代码包含详细的文件说明,以及对每个程序文件的功能注释,说明详细清楚。
4.Excel数据,可直接修改数据,替换数据后直接运行即可。