1 内容介绍

Mirjalili 等在 2014 年 提 出 了 灰 狼 优 化 ( 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]. 计算机应用, 2017, 037(010):2854-2860.

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

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

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

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

  1. 【ELAMN预测】基于灰狼算法优化ELMAN神经网络实现数据回归预测matlab代码

    1 简介 风能,作为一种重要,有潜力,无污染,可再生.可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐.近年来,为缓解能源短缺问题,改善环境,实现经济乃至人类的可持续发展,世 ...

  2. 【PNN分类】基于灰狼鹰算法优化pnn神经网络实现数据分附matlab代码

    1 简介 概率神经网络(Probabilistic Neural Network,简称PNN)是利用贝叶斯定理和基于风险最小的贝叶斯决策规则对新样本进行分类的神经网络,具有训练时间短且不易收敛到局部极 ...

  3. 【预测模型-ELAMN预测】基于蝙蝠算法优化ELMAN神经网络实现数据回归预测

    1 简介 风能,作为一种重要,有潜力,无污染,可再生.可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐.近年来,为缓解能源短缺问题,改善环境,实现经济乃至人类的可持续发展,世 ...

  4. 【CNN分类】基于贝叶斯优化卷积神经网络BO-CNN实现故障诊断附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 【回归预测-FNN预测】基于蝙蝠算法优化前馈网络实现数据回归预测附Matlab代码

    1 内容介绍 强大的非线性映射能力使得人工神经网络越来越多地应用于数值预测.工程控制中,但神经网络在学习过程中,不可避免的存在着全局搜索能力差.容易跳入局部最优等不足,因而用神经网络技术预测的数据并不 ...

  6. 基于灰狼算法优化概率神经网络PNN的分类预测-附代码

    基于灰狼算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于灰狼算法优化概率神经网络PNN的分类预测 - 附代码 1.PNN网络概述 2.变压器故障诊街系统相关背景 2.1 模型建立 3. ...

  7. 【预测模型】基于灰狼算法优化BP神经网络实现数据预测matlab代码

    1 简介 信息化时代的快速发展,给人们的生活带来了很大的便捷.越来越多的人习惯在网上办事.网络购物.在线支付,俨然成为了一种常态.通过网络来获取各类信息也更加方便,这就给网络钓鱼带来了肥沃的生存土壤. ...

  8. 【预测模型-ELM分类】基于鲸鱼算法优化核极限学习机实现数据分类附matlab代码

    1 内容介绍 极限学习机(extreme learning machine,ELM)作为一种新兴的机器学习方法,已经成为了一个热门的研究方向. ELM 随机确定单隐含层网络的输入权值和隐含层节点偏置, ...

  9. 【预测模型-ELAMN预测】基于蚁群算法优化ELMAN神经网络实现数据回归预测matlab代码

    1 简介 风能,作为一种重要,有潜力,无污染,可再生.可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐.近年来,为缓解能源短缺问题,改善环境,实现经济乃至人类的可持续发展,世 ...

最新文章

  1. 本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍
  2. Eclipse插件工具
  3. UA MATH566 统计理论 QE练习题2.1
  4. JAVA基础:Hibernate外键关联与HQL语法
  5. 26Exchange Server 2010跨站点部署-内外网邮件流测试
  6. 深受程序员鄙视的外行语录,你都听过吗?
  7. LeetCode 604. 迭代压缩字符串
  8. 使用云效Codeup10分钟紧急修复Apache Log4j2漏洞
  9. 企业实战02:Oracle数据库的安装和卸载
  10. universe是什么牌子_【寰宇影视】品牌介绍→寰宇电影_寰宇娱乐_买购网
  11. java web课程设计工资管理系统_javaweb教师绩效工资管理系统
  12. 奇迹按键精灵挂机脚本_奇迹挂机捡物按键精灵源码
  13. Python使用Reportlab处理PDF数据 - 字体
  14. 论文阅读:Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
  15. 群智能优化算法学习规划
  16. 新生代公链再攻「不可能三角」
  17. 数据挖掘里的开源问题(PAKDD 2009 WORKSHOP CALL FOR PAPER)
  18. 51单片机 AT24C02 PROTEUS 读写程序 源码
  19. Oracle11g 调整表空间大小 Resize
  20. 未来十年Python的前景会怎样?(知乎)

热门文章

  1. 京东深度布局全渠道,“全城购”扮演什么角色?
  2. CSDN创始人蒋涛:“重应用轻生态”的AI开源模式非长久之计
  3. Scratch绘制蜘蛛网1
  4. 当机器有了“视力”,它会抢人类的饭碗并取代人类吗?
  5. nslookup命令使用技巧(一)
  6. 百度地图获取行政区域以及自定义显示网格
  7. thinkcmf 常用操作
  8. 页面提交后提示“连接被重置”或“载入页面时到服务器的连接被重置”的问题分析
  9. 小程序的服务通知(模板消息) 实现以及坑
  10. google哈希面试题