【ElM分类】基于海洋捕食者算法优化ElM神经网络实现数据分类附matlab代码
【ElM分类】基于海洋捕食者算法优化ElM神经网络实现数据分类附matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
为了提高极限学习机(ELM)数据分类的精度,提出了海洋捕食者算法(SOA)的ELM分类器参数优化方法(MPA-KELM),将CV训练所得多个模型的平均精度作为MPA的适应度评价函数,为ELM的参数优化提供评价标准,用获得MPA优化最优参数的ELM算法进行数据分类.利用UCI中数据集进行仿真.
2 部分代码
%_________________________________________________________________________
%
Marine Predators Algorithm source code (Developed in MATLAB R2015a)
%
function
[Top_predator_fit,Top_predator_pos,Convergence_curve]=MPA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
Top_predator_pos
=
zeros(1,dim);
Top_predator_fit
=
inf;
Convergence_curve
=
zeros(1,Max_iter);
stepsize
=
zeros(SearchAgents_no,dim);
fitness
=
inf(SearchAgents_no,1);
Prey
=
initialization(SearchAgents_no,dim,ub,lb);
Xmin
=
repmat(ones(1,dim).*lb,SearchAgents_no,1);
Xmax
=
repmat(ones(1,dim).*ub,SearchAgents_no,1);
Iter
=
0;
FADs
=
0.2;
P
=
0.5;
while
Iter<Max_iter
%-------------------
Detecting top predator -----------------
for
i=1:size(Prey,1)
Flag4ub
=
Prey(i,:)>ub;
Flag4lb
=
Prey(i,:)<lb;
Prey(i,
:
)=(Prey(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
fitness(i,1)
=
fobj(Prey(i,:));
if
fitness(i,1)<Top_predator_fit
Top_predator_fit
=
fitness(i,1);
Top_predator_pos
=
Prey(i,:);
end
end
%-------------------
Marine Memory saving -------------------
if
Iter==0
fit_old
=
fitness; Prey_old=Prey;
end
Inx
=
(fit_old<fitness);
Indx
=
repmat(Inx,1,dim);
Prey
=
Indx.*Prey_old+~Indx.*Prey;
fitness
=
Inx.*fit_old+~Inx.*fitness;
fit_old
=
fitness; Prey_old=Prey;
%------------------------------------------------------------
Elite
=
repmat(Top_predator_pos,SearchAgents_no,1); %(Eq. 10)
CF
=
(1-Iter/Max_iter)^(2*Iter/Max_iter);
RL
=
0.05*levy(SearchAgents_no,dim,1.5); %Levy random number vector
RB
=
randn(SearchAgents_no,dim); %Brownian random number vector
for
i=1:size(Prey,1)
for
j=1:size(Prey,2)
R
=
rand();
%------------------
Phase 1 (Eq.12) -------------------
if
Iter<Max_iter/3
stepsize(i,j)
=
RB(i,j)*(Elite(i,j)-RB(i,j)*Prey(i,j));
Prey(i,j)
=
Prey(i,j)+P*R*stepsize(i,j);
%---------------
Phase 2 (Eqs. 13 & 14)----------------
elseif
Iter>Max_iter/3 && Iter<2*Max_iter/3
if
i>size(Prey,1)/2
stepsize(i,j)
=
RB(i,j)*(RB(i,j)*Elite(i,j)-Prey(i,j));
Prey(i,j)
=
Elite(i,j)+P*CF*stepsize(i,j);
else
stepsize(i,j)
=
RL(i,j)*(Elite(i,j)-RL(i,j)*Prey(i,j));
Prey(i,j)
=
Prey(i,j)+P*R*stepsize(i,j);
end
%-----------------
Phase 3 (Eq. 15)-------------------
else
stepsize(i,j)
=
RL(i,j)*(RL(i,j)*Elite(i,j)-Prey(i,j));
Prey(i,j)
=
Elite(i,j)+P*CF*stepsize(i,j);
end
end
end
%------------------
Detecting top predator ------------------
for
i=1:size(Prey,1)
Flag4ub
=
Prey(i,:)>ub;
Flag4lb
=
Prey(i,:)<lb;
Prey(i,
:
)=(Prey(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
fitness(i,1)
=
fobj(Prey(i,:));
if
fitness(i,1)<Top_predator_fit
Top_predator_fit
=
fitness(i,1);
Top_predator_pos
=
Prey(i,:);
end
end
%----------------------
Marine Memory saving ----------------
if
Iter==0
fit_old
=
fitness; Prey_old=Prey;
end
Inx
=
(fit_old<fitness);
Indx
=
repmat(Inx,1,dim);
Prey
=
Indx.*Prey_old+~Indx.*Prey;
fitness
=
Inx.*fit_old+~Inx.*fitness;
fit_old
=
fitness; Prey_old=Prey;
%----------
Eddy formation and FADs? effect (Eq 16) -----------
if
rand()<FADs
U
=
rand(SearchAgents_no,dim)<FADs;
Prey
=
Prey+CF*((Xmin+rand(SearchAgents_no,dim).*(Xmax-Xmin)).*U);
else
r
=
rand(); Rs=size(Prey,1);
stepsize
=
(FADs*(1-r)+r)*(Prey(randperm(Rs),:)-Prey(randperm(Rs),:));
Prey
=
Prey+stepsize;
end
Iter
=
Iter+1;
Convergence_curve(Iter)
=
Top_predator_fit;
end
3 仿真结果
4 参考文献
[1]郁智博. 基于模糊神经网络和ELM的分类算法的研究[D]. 东北大学, 2013.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
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
