欢迎光临散文网 会员登陆 & 注册

【BP预测】基于帝国企鹅算法优化BP神经网络实现数据预测附matlab代码

2022-04-24 14:24 作者:Matlab工程师  | 我要投稿

1 简介

BP神经网络算法使用非常广泛,传统的BP神经网络算法虽然具有不错的拟合非线性函数的能力,但是容易陷入局部的极小值,并且传统的算法收敛的速度慢.本篇文章详细地论述了如何使用帝企鹅算法优化传统的BP神经网络算法中初始的权值和阀值,通过相应的验证和比较提出了该模型的有效性.

2 部分代码

%% 2021.9.2  AFO 算法优化神经网络% 2021.9.2 AFO algorithm optimizes neural network weights and thresholds%% 这是使用原始算法的直接求解结果,添加专用于本问题的更新方式可以进一步提高精度% This is the direct result of using the original algorithm, % adding some specific update methods to this problem can further improve the accuracyclc;clear;close all;warning off%% 固定随机数种子noRNG=1;rng('default')rng(noRNG)%% 载入数据%% 数据预处理load inputload output%%data.x=[input'];data.y=[output];num_Train=120; %训练集数量data.len_train=num_Train;num_Test=48; %测试集数量index=randperm(num_Train+num_Test); %随机乱序data.train_x=data.x(:,index(1:num_Train))';data.train_y=data.y(:,index(1:num_Train))';data.test_x=data.x(:,index(num_Train+1:end))';data.test_y=data.y(:,index(num_Train+1:end))';% 归一化[data.train_x0,option.ps_x]=mapminmax(data.train_x');data.train_x0=data.train_x0';[data.train_y0,option.ps_y]=mapminmax(data.train_y');data.train_y0=data.train_y0';data.test_x0 = mapminmax('apply',data.test_x',option.ps_x);data.test_x0=data.test_x0';data.test_y0 = mapminmax('apply',data.test_y',option.ps_y);data.test_y0=data.test_y0';%%data.weight=1;data=data;data.hiddenumber= [5];%隐含神经元数%% 未优化神经网络clear result[x(1,:),result(1)]=creat_x_1(option,data);%draw(result(1),'未优化')data.m=result(1).m;data.n=result(1).n;data.m_lw=result(1).m_lw;data.n_lw=result(1).n_lw;data.m_iw=result(1).m_iw;data.n_iw=result(1).n_iw;data.m_b=result(1).m_b;data.n_b=result(1).n_b;data.len=result(1).len;[y(1),result(1)]=aimFcn_1(x(1,:),option,data,result(1).net);%% 参数设置lb=-5;ub=5;option.lb=lb;option.ub=ub;dim=length(x(1,:));%%option.dim=dim; %八个决策变量lb=0;ub=1;option.lb=lb;option.ub=ub;if length(option.lb)==1    option.lb=ones(1,option.dim)*option.lb;    option.ub=ones(1,option.dim)*option.ub;endoption.fobj=@aimFcn_1;%option.fobj0=option.fobj;option.showIter=0;%% 算法参数设置 Parameters% 基本参数tic[bestY(1,:),bestX(1,:),best_result1,recording(1)]=AFO1(x,y,result,option,data);tt(1,1)=toc;%%figurehold onfor i=1:length(recording)    plot((recording(i).bestFit),'LineWidth',2)endlegend(str_legend)title('fitness curve')%% 未优化神经网络rng(7)[x(1,:),result(1)]=creat_x_1(option,data);[y(1),result(1)]=aimFcn_1(x(1,:),option,data,result(1).net);%%figurehold onplot(result(1).ygabptest(i,:));plot(best_result1.ygabptest(i,:));plot(data.test_y(:,i));legend(['未优化神经网络(mse=',num2str(result(1).mse(i)),')'],['AFO优化神经网络(mse=',num2str(best_result1.mse(i)),')'],['真实数据'])

3 仿真结果

4 参考文献

[1]肖雄. PSO优化BP神经网络岩爆预测的Matlab实现[J]. 中国房地产业, 2018, 000(025):244.

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

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



【BP预测】基于帝国企鹅算法优化BP神经网络实现数据预测附matlab代码的评论 (共 条)

分享到微博请遵守国家法律