【预测模型-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电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
5天前
|
算法
基于GA遗传优化的TSP问题最优路线规划matlab仿真
本项目使用遗传算法(GA)解决旅行商问题(TSP),目标是在访问一系列城市后返回起点的最短路径。TSP属于NP-难问题,启发式方法尤其GA在此类问题上表现出色。项目在MATLAB 2022a中实现,通过编码、初始化种群、适应度评估、选择、交叉与变异等步骤,最终展示适应度收敛曲线及最优路径。
|
6天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
7天前
|
算法
基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真
该程序基于GA遗传优化设计了离散交通网络的双层规划模型,以路段收费情况的优化为核心,并通过一氧化碳排放量评估环境影响。在MATLAB2022a版本中进行了验证,显示了系统总出行时间和区域排放最小化的过程。上层模型采用多目标优化策略,下层则确保总阻抗最小,实现整体最优解。
|
14天前
|
数据采集 算法
基于PSO粒子群算法的三角形采集堆轨道优化matlab仿真
该程序利用PSO算法优化5个4*20矩阵中的模块采集轨迹,确保采集的物品数量及元素含量符合要求。在MATLAB2022a上运行,通过迭代寻优,选择最佳模块组合并优化轨道,使采集效率、路径长度及时间等综合指标最优。具体算法实现了粒子状态更新、需求量差值评估及轨迹优化等功能,最终输出最优轨迹及其相关性能指标。
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
102 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
73 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
57 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
4月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
4月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)