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

【预测模型-BP分类】基于蝙蝠算法优化BP神经网络实现数据分类附matlab代码

时间:2023-12-30 20:20:09

相关推荐

【预测模型-BP分类】基于蝙蝠算法优化BP神经网络实现数据分类附matlab代码

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

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法 神经网络预测 雷达通信 无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

针对无线网络流量数据预测精度不高问题,提出一种基于蝙蝠算法(BA)优化的反向传播(BP)神经网络的分类预测模型——BABP.通过采用蝙蝠算法对BP神经网络模型的初始权值与阈值进行全局寻优,构建崭新的基于蝙蝠算法优化的神经网络模型.​

⛄ 部分代码

%% Bat Algorithm For Sphere Function %%

%% 开始 %%

clear;clc;

close all;

%% 初始化参数 %%

Iter=1;%初始迭代次数

Iter_Max=50;%最大迭代次数

Dim=2;%问题的维度

Pop_Size=30;%种群大小

Loud_Min=0;%响度最小值

Alpha=0.95;%响度控制参数

Gama=0.95;%脉冲发射率控制参数

Freq_Min=0;Freq_Max=2;%频率范围

V_Min=-5;V_Max=5;%速度范围

Pop_Min=-10;Pop_Max=10;%种群个体大小范围

%% 初始化种群 %%

PR=0.5*ones(Pop_Size,1);%脉冲发射率初始化

Loud=0.9*ones(Pop_Size,1);%响度初始化

PR0=PR;%记录初始脉冲发射率

Beta=rand(Pop_Size,1);%随机化Beta值

Freq=Freq_Min+(Freq_Max-Freq_Min)*Beta;%频率初始化

V=V_Min+(V_Max-V_Min)*rand(Pop_Size,Dim);%速度初始化

% V=zeros(Pop_Size,Dim);

Pop=Pop_Min+(Pop_Max-Pop_Min)*rand(Pop_Size,Dim);%种群初始化

for i=1:Pop_Size

Fitness(i)=Sphere_Function(Pop(i,:));%评估当前野草对应的适应度值

end

[Fitness_Best,Position_Best]=min(Fitness);%寻找当前最优适应度值

Position_Current=find(Fitness==Fitness_Best);%最优适应度值的位置

Trace(Iter)=Fitness_Best;%记录当前代适应度值最小值

%% 迭代部分 %%

while Iter<=Iter_Max

Iter%记录当前迭代次数

Fitness_Best%记录当前最优适应度值

for i=1:Pop_Size

Beta(i)=rand;

Freq(i,:)=Freq_Min+(Freq_Max-Freq_Min)*Beta(i);%频率控制

V(i,:)=V(i,:)+(Pop(i,:)-Pop(Position_Best,:))*Freq(i);%速度更新

V(i,find(V(i,:)>V_Max))=V_Max;

V(i,find(V(i,:)<V_Min))=V_Min;

Pop_New(i,:)=Pop(i,:)+V(i,:);%位置更新

Pop_New(i,find(Pop_New(i,:)>Pop_Max))=Pop_Max;

Pop_New(i,find(Pop_New(i,:)<Pop_Min))=Pop_Min;

% Fitness(i)=Griewank_Function(Pop(i,:));%适应度值更新

Epsilon=-1+2*rand(1,Dim);%随机选取Epsilon

PR_Mean=mean(PR);%求当前脉冲发射率的平均值

if rand>PR(i)

Position_Select=Position_Current(ceil(length(Position_Current)*rand));%选择一个最优解作为全局最优解

Pop_New(i,:)=Pop(Position_Select,:)+Epsilon*PR_Mean;%当前最优适应度值解作微扰移动

% else

%Position_Select=ceil(Pop_Size*rand);%选择任意一个解

%Pop_New(i,:)=Pop(Position_Select,:)+Epsilon*PR_Mean;%当前选定解作微扰移动

end

Fitness_New(i)=Sphere_Function(Pop_New(i,:));%适应度值更新

if (rand<Loud(i))&(Fitness_New(i)<Fitness(i))

Pop(i,:)=Pop_New(i,:);%接受新解

Fitness(i)=Fitness_New(i);

Loud(i)=Alpha*Loud(i);%响度更新

PR(i)=PR0(i)*(1-exp(-Gama*Iter));%脉冲发射率更新

end

if Fitness(i)<Fitness_Best

Fitness_Best=Fitness(i);

end

[Fitness_Best,Position_Best]=min(Fitness);%寻找当前最优适应度值

Position_Current=find(Fitness==Fitness_Best);%最优适应度值的位置

end

Iter=Iter+1;

Trace(Iter)=Fitness_Best;%记录当前代适应度值最小值

end

%% 数据后处理 %%

Iter%记录当前迭代次数

Fitness_Best%记录当前最优适应度值

figure('Position',[269 240 660 290])

%Draw search space

subplot(1,2,1);

X1=linspace(-10,10,101);

X2=linspace(-10,10,101);

for i=1:length(X1)

for j=1:length(X2)

Y(i,j)=X1(i)^2+X2(j)^2;

end

end

subplot(1,2,1),surf(X1,X2,Y);

title('Parameter space')

xlabel('x_1');

ylabel('x_2');

zlabel('( x_1 , x_2 )')

subplot(1,2,2);,plot(Trace);

xlabel('Iteration');

ylabel('Best score obtained so far');

⛄ 运行结果

⛄ 参考文献

[1]赵永杰, 张强, 潘德法,等. 基于蝙蝠算法优化的BP神经网络估算工质沸点温度[J]. 自动化与仪器仪表, (000-004).

[2]郭贝, 任金霞. 基于蝙蝠算法优化BP神经网络的特征点匹配[J]. 制造业自动化, , 41(8):4.

❤️ 关注我领取海量matlab电子书和数学建模资料

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

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