【预测模型-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]. 自动化与仪器仪表, 2022(000-004).

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值