200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【回归预测-BP预测】基于灰狼算法优化BP神经网络实现数据回归预测附matlab代码

【回归预测-BP预测】基于灰狼算法优化BP神经网络实现数据回归预测附matlab代码

时间:2018-09-17 11:45:11

相关推荐

【回归预测-BP预测】基于灰狼算法优化BP神经网络实现数据回归预测附matlab代码

1 内容介绍

Mirjalili等在 提 出 了 灰 狼 优 化( Grey Wolf Optimizer,GWO)算法,是一种新型群智能优化算法,通过模拟自然界中灰狼寻找、包围和攻击猎物等狩猎机制的过程来完成最优化工作。该算法将狼群划分为4个等级,将狼按照适应度值最优排序,选择适应度值的前3个分别作为最优灰狼 α,次优灰狼 β 和第三优灰狼 δ,剩余灰狼作为 ω。在捕食过程中,由α、β、δ灰狼进行猎物的追捕,而剩余灰狼 ω追随前三者进行追踪和围捕,猎物的位置便是问题的解。研究证明GWO算法在全局寻优方面明显优于粒子群优化( Particle Swarm Optimization,PSO)算法、遗传算法( Genetic Algorithm,GA)和 进 化 策 略( Evolutionary Strategy,ES)等 智 能 优 化 算法。因此,本文利用GWO来优化BP神经网络的权重和阈值。下面给出灰狼算法的主要数学模型:

灰狼优化算法是一种能够寻找全局最优解的群智能算法,具有加速模型收敛速度快和提升精度等特点,将BP神经网络的权重和阈值作为灰狼的位置信息,根据灰狼对猎物的位置判断,不断更新位置,就等同于在不断更新权重和阈值,最终寻得全局最优。具体优化神经网络过程如下:

Step1确定神经网络结构,主要是隐层节点的选取。

Step2初始化参数。根据网络结构计算灰狼个体位置信息的维度(dim)、灰狼种群大小(SN)、最大迭代次数(maxIter)、灰狼维度的上界(ub) 和下界(lb) ,随机初始化灰 狼位置。

Step3确定神经网络适应度函数及隐层节点、输出节点的激励函数,其中适应度函数选用均方误差(Mean Squared Error,MSE) ,隐含层和输出层的激励函数均采用Sigmoid型函数。

Step4计算适应度值,选取最优灰狼α、次优灰狼β和第三优灰狼δ,根据式(3) 更新剩余灰狼ω的位置信息,并更新参数A和C及a。

Step5记录训练样本和检验样本的误差及所对应的最优灰狼α的位置。

Step6判断个体每一维度是否存在越界,将越界的值设置为灰狼维度的上界(ub) 或下界(lb)。

Step7判断是否满足设定的误差或者达到最大迭代次数; 否则重复Step4 ~ Step7,直到满足条件。

Step8最后返回结果为最优灰狼位置α及对应的最小误差; 训练样本和检验样本的误差及训练过程每一次迭代最 优灰狼α的位置。

2 仿真代码

<span style="color:#333333"><span style="background-color:rgba(0, 0, 0, 0.03)"><code>%灰狼优化多输入多输出BP神经网络代码</code><code>clear</code><code>clc</code><code>tic</code><code>global SamIn SamOut HiddenUnitNum InDim OutDim TrainSamNum </code><code>%% 导入训练数据</code><code>data = xlsread('test_data1.xlsx');</code><code>[data_m,data_n] = size(data);%获取数据维度</code><code>​</code><code>P = 80; %百分之P的数据用于训练,其余测试</code><code>Ind = floor(P * data_m / 100);</code><code>​</code><code>train_data = data(1:Ind,1:end-1)'; </code><code>train_result = data(1:Ind,end)';</code><code>test_data = data(Ind+1:end,1:end-1)';% 利用训练好的网络进行预测</code><code>test_result = data(Ind+1:end,end)';</code><code>​</code><code>%% 初始化参数</code><code>[InDim,TrainSamNum] = size(train_data);% 学习样本数量</code><code>[OutDim,TrainSamNum] = size(train_result);</code><code>HiddenUnitNum = 7; % 隐含层神经元个数</code><code>​</code><code>[SamIn,PS_i] = mapminmax(train_data,0,1); % 原始样本对(输入和输出)初始化</code><code>[SamOut,PS_o] = mapminmax(train_result,0,1);</code><code>​</code><code>W1 = HiddenUnitNum*InDim;% 初始化输入层与隐含层之间的权值</code><code>B1 = HiddenUnitNum;% 初始化输入层与隐含层之间的阈值</code><code>W2 = OutDim*HiddenUnitNum;% 初始化输出层与隐含层之间的权值</code><code>B2 = OutDim;% 初始化输出层与隐含层之间的阈值</code><code>L = W1+B1+W2+B2; %粒子维度</code><code>%%优化参数的设定</code><code>dim=L; % 优化的参数 number of your variables</code><code>for j=1:L</code><code>lb(1,j)=-3.5; % 参数取值下界</code><code>ub(1,j)=3.5;</code><code>end% 参数取值上界</code><code>​</code><code>test_error=test_result(1,:)-Forcast_data_test(1,:);</code><code>mean_error=mean(abs(test_error)/test_result)</code><code>% test_mse=mean(test_error.^2)</code><code>test_mse=sqrt(mean(test_error.^2))</code><code>%% 绘制结果</code><code>figure</code><code>plot(Convergence_curve,'r')</code><code>xlabel('迭代次数')</code><code>ylabel('适应度')</code><code>title('收敛曲线')</code><code>figure</code><code>subplot(2,2,1);</code><code><span style="color:#dd1144">plot(train_result(1,:), 'r-*')</span></code><code>hold on</code><code><span style="color:#dd1144">plot(Forcast_data(1,:), 'b-o');</span></code><code>legend('真实值','拟合值')</code><code>title('输出训练集拟合效果')</code><code>subplot(2,2,2);</code><code><span style="color:#dd1144">plot(test_result(1,:), 'r-*')</span></code><code>hold on</code><code><span style="color:#dd1144">plot(Forcast_data_test(1,:), 'b-o');</span></code><code>legend('真实值','预测值')</code><code>title('输出测试集预测效果')</code><code>subplot(2,2,3);</code><code><span style="color:#dd1144">stem(train_result(1,:) - Forcast_data(1,:))</span></code><code>title('输出训练集误差')</code><code>subplot(2,2,4);</code><code><span style="color:#dd1144">stem(test_result(1,:) - Forcast_data_test(1,:))</span></code><code>title('输出测试集误差')</code><code>toc</code><code>%save('灰狼算法预测2-4')</code></span></span>

3 运行结果

4 参考文献

[1]石峰, 楼文高, 张博. 基于灰狼群智能最优化的神经网络PM2.5浓度预测[J]. 计算机应用, , 037(010):2854-2860.

[2]张文胜, 郝孜奇, 朱冀军,等. 基于改进灰狼算法优化BP神经网络的短时交通流预测模型[J]. 交通运输系统工程与信息, , 20(2):8.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。