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

简介: 【预测模型-BP分类】基于人工蜂群算法优化BP神经网络实现数据分类附matlab代码

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

为了提高数据分类准确率,提出一种基于人工蜂群算法和BP神经网络的分类方法.针对反向传播(BP)神经网络存在全局搜索能力差,人工蜂群算法来优化BP神经网络对初始权重敏感的问题,进而实现对数据的分类.实验结果表明,所提算法对数据的分类准确率更高,分类准确率达到94.5%,而且可以加快收敛速度

⛄ 部分代码


clc;

clear;

close all;


%% Problem Definition


CostFunction=@(x) Sphere(x);        % Cost Function


nVar=5;             % Number of Decision Variables


VarSize=[1 nVar];   % Decision Variables Matrix Size


VarMin=-10;         % Decision Variables Lower Bound

VarMax= 10;         % Decision Variables Upper Bound


%% ABC Settings


MaxIt=200;              % Maximum Number of Iterations


nPop=100;               % Population Size (Colony Size)


nOnlooker=nPop;         % Number of Onlooker Bees


L=round(0.6*nVar*nPop); % Abandonment Limit Parameter (Trial Limit)


a=1;                    % Acceleration Coefficient Upper Bound


%% Initialization


% Empty Bee Structure

empty_bee.Position=[];

empty_bee.Cost=[];


% Initialize Population Array

pop=repmat(empty_bee,nPop,1);


% Initialize Best Solution Ever Found

BestSol.Cost=inf;


% Create Initial Population

for i=1:nPop

   pop(i).Position=unifrnd(VarMin,VarMax,VarSize);

   pop(i).Cost=CostFunction(pop(i).Position);

   if pop(i).Cost<=BestSol.Cost

       BestSol=pop(i);

   end

end


% Abandonment Counter

C=zeros(nPop,1);


% Array to Hold Best Cost Values

BestCost=zeros(MaxIt,1);


%% ABC Main Loop


for it=1:MaxIt

   

   % Recruited Bees

   for i=1:nPop

       

       % Choose k randomly, not equal to i

       K=[1:i-1 i+1:nPop];

       k=K(randi([1 numel(K)]));

       

       % Define Acceleration Coeff.

       phi=a*unifrnd(-1,+1,VarSize);

       

       % New Bee Position

       newbee.Position=pop(i).Position+phi.*(pop(i).Position-pop(k).Position);

       

       % Evaluation

       newbee.Cost=CostFunction(newbee.Position);

       

       % Comparision

       if newbee.Cost<=pop(i).Cost

           pop(i)=newbee;

       else

           C(i)=C(i)+1;

       end

       

   end

   

   % Calculate Fitness Values and Selection Probabilities

   F=zeros(nPop,1);

   MeanCost = mean([pop.Cost]);

   for i=1:nPop

       F(i) = exp(-pop(i).Cost/MeanCost); % Convert Cost to Fitness

   end

   P=F/sum(F);

   

   % Onlooker Bees

   for m=1:nOnlooker

       

       % Select Source Site

       i=RouletteWheelSelection(P);

       

       % Choose k randomly, not equal to i

       K=[1:i-1 i+1:nPop];

       k=K(randi([1 numel(K)]));

       

       % Define Acceleration Coeff.

       phi=a*unifrnd(-1,+1,VarSize);

       

       % New Bee Position

       newbee.Position=pop(i).Position+phi.*(pop(i).Position-pop(k).Position);

       

       % Evaluation

       newbee.Cost=CostFunction(newbee.Position);

       

       % Comparision

       if newbee.Cost<=pop(i).Cost

           pop(i)=newbee;

       else

           C(i)=C(i)+1;

       end

       

   end

   

   % Scout Bees

   for i=1:nPop

       if C(i)>=L

           pop(i).Position=unifrnd(VarMin,VarMax,VarSize);

           pop(i).Cost=CostFunction(pop(i).Position);

           C(i)=0;

       end

   end

   

   % Update Best Solution Ever Found

   for i=1:nPop

       if pop(i).Cost<=BestSol.Cost

           BestSol=pop(i);

       end

   end

   

   % Store Best Cost Ever Found

   BestCost(it)=BestSol.Cost;

   

   % Display Iteration Information

   disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);

   

end

   

%% Results


figure;

%plot(BestCost,'LineWidth',2);

semilogy(BestCost,'LineWidth',2);

xlabel('Iteration');

ylabel('Best Cost');

grid on;

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './运行结果.png')         %即可得到对应格式和期望dpi的图像

⛄ 运行结果

⛄ 参考文献

[1]李文越, 周思源, 庞京城. 基于人工蜂群算法优化BP神经网络的交通流预测[J]. 山东交通学院学报, 2017, 25(1):6.

[2]徐健, 陈倩倩, 刘秀平. 基于交叉运算的人工蜂群优化BP神经网络的脑电信号分类[J]. 激光与光电子学进展, 2020.

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
11月前
|
传感器 算法 安全
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
379 4
|
11月前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
615 1
|
10月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
597 5
|
11月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
662 2
|
11月前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
321 2
|
11月前
|
传感器 资源调度 算法
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)
1099 0
|
11月前
|
传感器 机器学习/深度学习 编解码
【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
314 3
|
11月前
|
传感器 资源调度 算法
基于无迹卡尔曼滤波(UKF)与模型预测控制(MPC)的多无人机避撞研究(Matlab代码实现)
基于无迹卡尔曼滤波(UKF)与模型预测控制(MPC)的多无人机避撞研究(Matlab代码实现)
501 1
|
10月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
387 0
|
10月前
|
存储 监控 并行计算
目标跟踪中常用点迹航迹数据关联算法的MATLAB实现
通过计算测量点与预测点之间的欧氏距离,选择最近邻点进行关联,适用于单目标跟踪场景。

热门文章

最新文章