【BP分类】基于花朵授粉算法优化BP神经网络实现数据分类附matlab代码
【BP分类】基于花朵授粉算法优化BP神经网络实现数据分类附matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
为了提高分类的准确性,降低因预测精度不高带来的电能损失,提出将花朵授粉算法(flower pollination algorithm,FPA)与BP神经网络相结合,利用FPA算法具有收敛速度快,全局搜索能力强的特点,对BP神经网络的权值和阈值进行优化,改善传统BP神经网络因权值和阈值的选择具有随机性而陷入局部最优和收敛速度慢的缺点.最后,通过某地区实际负荷数据验证了优化后的BP神经网络的预测精度得到了提高.
2 部分代码
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%
%%%
Flower Pollination Algorithm
for
Multimodal Optimization (MFPA)
%Jorge G醠vez, Erik Cuevas
and
Omar Avalos
%%This is the line to execute the code:
%
%[mem,bestSol,bestFit,optima,FunctionCalls]
=FPA([
50
0
.
25
500
2
]);
%FitFunc implements the function to be optimized
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%
function [mem,bestSol,bestFit,optima,FunctionCalls]=FPA(para)
% Default parameters
if
nargin<
1
,
para=[
50
0
.
25
500
];
end
n=para(
1
); % Population size
p=para(
2
); % Probabibility switch
N_iter=para (
3
); % Number of iterations
phase =
1
; %First state
phaseIte= [
0
.
5
,
0
.
9
,
1.01
]; %State vector
%Deb Function
d =
1
;
Lb =
0
;
Ub =
1
;
optima = [.
1
;.
3
;.
5
;.
7
;.
9
];
% Initialize the population
for
i=
1
:n
,
Sol(i,
:
)=Lb+(Ub-Lb).*rand(
1
,d);
Fitness(i)=fitFunc(Sol(i,
:
));
%%Evaluate fitness function
end
%
Initialice the memory
[mem,bestSol,bestFit,worstF] = memUpdate(Sol,Fitness, [], zeros(
1
,d),
100000000
,
0
, phase,d,Ub,Lb);
S = Sol;
FunctionCalls =
0
;
% Main Loop
for
ite =
1
: N_iter,
%For each pollen gamete, modify each position acoording
%to local
or
global pollination
for
i =
1
: n,
% Switch probability
if
rand>p,
L=Levy(d);
dS=L.*(Sol(i,
:
)-bestSol);
S(i,
:
)=Sol(i,
:
)+dS;
S(i,
:
)=simplebounds(S(i,
:
),Lb,Ub);
else
epsilon=rand;
% Find random flowers
in
the neighbourhood
JK=randperm(n);
% As they are random, the first two entries also random
% If the flower are the same
or
similar species,
then
% they can be pollenated, otherwise, no action.
%
Formula:
x_i^{t+
1
}+epsilon*(x_j^t-x_k^t)
S(i,
:
)=S(i,
:
)+epsilon*(Sol(JK(
1
),
:
)-Sol(JK(
2
),
:
));
% Check
if
the simple limits/bounds are OK
S(i,
:
)=simplebounds(S(i,
:
),Lb,Ub);
end
Fitness(i)=fitFunc(S(i,
:
));
end
%Update the memory
[mem,bestSol,bestFit,worstF] = memUpdate(S,Fitness,mem,bestSol,bestFit,worstF,phase,d,Ub,Lb);
Sol = get_best_nest(S, mem, p);
FunctionCalls = FunctionCalls + n;
if
ite/N_iter > phaseIte(phase)
%Next evolutionary process stage
phase = phase +
1
;
[m,~]=size(mem);
%Depurate the memory
for
each stage
mem = cleanMemory(mem);
FunctionCalls = FunctionCalls + m;
end
end
%Plot the solutions (mem) founded by the multimodal framework
x =
0
:
.
01
:
1
;
y = ((sin(
5
.*pi.*x)).^
6
);
plot(x,y)
hold on
plot(mem(
:
,
1
),-mem(
:
,
2
),
’r*’
);
3 仿真结果
4 参考文献
[1]牛庆、曹爱民、陈潇一、周冬. 基于花朵授粉算法和BP神经网络的短期负荷预测[J]. 电网与清洁能源, 2020, 36(10):5.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
5 代码下载
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
