1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【预测模型-BP分类】基于人工蜂群算法优化BP神经网络实现数据分类附matlab代码

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

时间:2019-06-05 20:55:33

相关推荐

【预测模型-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]. 山东交通学院学报, , 25(1):6.

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

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

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

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