首页 >> 大全

鲸鱼优化算法WOA优化BP神经网络(WOA-BP)回归预测-Matlab代码实现

2023-11-24 大全 28 作者:考证青年

一、鲸鱼优化算法WOA(代码获取:评论区或者私信获取)

鲸鱼优化算法(Whale ,WOA)是由等人于2016年提出的一种新型启发式优化算法。WOA算法的灵感来源于座头鲸的狩猎行为,作为群居哺乳动物,它们狩猎时会通过相互合作的方式对猎物实行围捕,鲸鱼在群体狩猎中有包围和驱赶两种行为,群体中的鲸鱼通过朝着其它鲸鱼移动以实现包围猎物,通过环形游动并喷出气泡形成气泡网以实现驱赶猎物,这种独特的狩猎方法被称为泡泡网觅食法。WOA算法的核心思想就是源于座头鲸特殊的泡泡网觅食法,通过随机或最佳搜索代理来模拟鲸鱼的围捕行为,通过螺旋来模拟泡泡网觅食的攻击机制,以此进行数学建模达到优化目的。WOA算法具有操作简单、调整参数少以及跳出局部最优能力强的优点。WOA的算法流程为:

(1)初始化WOA参数,包括初始化鲸鱼群体的规模、最大迭代次数、鲸鱼种群位置;

(2)计算鲸鱼群体的适应度,并根据适应度选择初始鲸鱼种群个数;

(3)计算个体适应度并选择当前最优位置;

(4)迭代更新下一代鲸鱼群体位置;

(5)达到终止条件,输出最优个体,即找到全局最优解。

二、WOA-BP预测模型建

WOA算法优化BP神经网络的初始权值阈值,从而建立稳定的WOA-BP预测模型,提高预测精度和泛化能力。具体过程如下:

(1)数据归一化,建立BP神经网络,确定拓扑结构并初始化网络的权值和阈值;

(2)初始化WOA参数,计算WOA算法的决策长度,选取均方误差作为优化的目标函数;

(3)设置算法停止准则,利用WOA优化BP神经网络的权值阈值参数;

神经网络中的优化算法_优化神经网络参数的常用方法_

(4)WOA算法优化后的最优权值阈值参数赋予BP神经网络,即输出最优的WOA-BP模型,利用WOA-BP进行训练和预测并与优化前的BP网络进行对比分析。

三、关键代码

%% 建立BP模型
net=newff(inputn,outputn,hiddennum_best,{'tansig','purelin'},'trainlm');% 设置BP参数
net.trainParam.epochs=1000;        % 训练次数
net.trainParam.lr=0.01;            % 学习速率
net.trainParam.goal=0.00001;       % 训练目标最小误差
net.trainParam.show=25;            % 显示频率
net.trainParam.mc=0.01;            % 动量因子
net.trainParam.min_grad=1e-6;      % 最小性能梯度
net.trainParam.max_fail=6;         % 最高失败次数%% 设置WOA参数
popsize=30;    %初始种群规模
maxgen=50;     %最大进化代数
dim=inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum;    %自变量个数
lb=repmat(-3,1,dim);    %自变量下限
ub=repmat(3,1,dim);     %自变量上限
%初始化位置向量和领导者得分
Leader_pos=zeros(1,dim);
Leader_score=10^20;   %% 初始化种群
for i=1:dimub_i=ub(i);lb_i=lb(i);Positions(:,i)=rand(popsize,1).*(ub_i-lb_i)+lb_i;
end
curve=zeros(maxgen,1);%初始化收敛曲线%% 进化过程
h0=waitbar(0,'WOA优化中...');
for t=1:maxgenfor i=1:size(Positions,1)%对每个个体一个一个检查是否越界% 返回超出搜索空间边界的搜索代理Flag4ub=Positions(i,:)>ub;Flag4lb=Positions(i,:)=1rand_leader_index = floor(popsize*rand()+1);X_rand = Positions(rand_leader_index, :);D_X_rand=abs(C*X_rand(j)-Positions(i,j));Positions(i,j)=X_rand(j)-A*D_X_rand;elseif abs(A)<1D_Leader=abs(C*Leader_pos(j)-Positions(i,j));Positions(i,j)=Leader_pos(j)-A*D_Leader;endelseif p>=0.5distance2Leader=abs(Leader_pos(j)-Positions(i,j));Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);endendendcurve(t)=Leader_score;waitbar(t/maxgen,h0)
end
close(h0)
setdemorandstream(pi);%% 权重阈值更新
w1=Leader_pos(1:inputnum*hiddennum_best);   
B1=Leader_pos(inputnum*hiddennum_best+1:inputnum*hiddennum_best+hiddennum_best);  
w2=Leader_pos(inputnum*hiddennum_best+hiddennum_best+1:inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum);   
B2=Leader_pos(inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+1:inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum);  
% 矩阵重构
net.iw{1,1}=reshape(w1,hiddennum_best,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum_best);
net.b{1}=reshape(B1,hiddennum_best,1);
net.b{2}=reshape(B2,outputnum,1);

四、仿真结果

(1)根据经验公式,通过输入输出节点数量,求得最佳隐含层节点数量:

(2)WOA-BP和BP的预测对比图和误差图

(3)BP和WOA-BP的各项误差指标,预测准确率

(4)鲸鱼优化算法WOA适应度进化曲线

(5)BP和WOA-BP模型的回归图

(6)BP和WOA-BP模型的误差直方图

五、BP算法优化

BP算法优化

遗传算法 GA-BP

灰狼算法 GWO-BP

鲸鱼算法 WOA-BP

粒子群算法 PSO-BP

麻雀算法 SSA-BP

布谷鸟算法 CS-BP

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了