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

时间:2022-10-16 17:54:00

✅作者简介:热爱科研的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的图像

⛄ 运行结果

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

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

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

⛄ 参考文献

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

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

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

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