首页 > 行业资讯 > 【ElM分类】基于海洋捕食者算法优化ElM神经网络实现数据分类附matlab代码

【ElM分类】基于海洋捕食者算法优化ElM神经网络实现数据分类附matlab代码

时间:2022-05-04 来源: 浏览:

【ElM分类】基于海洋捕食者算法优化ElM神经网络实现数据分类附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #神经网络预测matlab源码 260个

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代码问题可私信交流。

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐