增强的藤壶交配优化算法(enhanced Barnacle Mating optimization algorithm,EBMO)是期刊“MULTIMEDIA TOOLS AND APPLICATIONS”的智能优化算法.
01.引言
增强的藤壶交配优化算法(EBMO)是通过最大化适应度函数来获得合适的阈值。对基本藤壶交配优化的增强是通过结合额外的高斯突变策略和原始算法向最佳求解步骤的随机流来实现的。这些附加步骤的参与有助于算法通过提高其探索能力来防止其停滞在局部最小值。
02.优化算法的流程
在对藤壶交配优化(BMO)进行详细研究后,观察到种群缺乏多样性,这影响了算法达到最优解的准确性。这导致了通过增强BMO的探索能力来开发增强型藤壶交配优化(EBMO)算法。所提出的EBMO算法包括两种不同的策略来执行这项任务:第一种是使用高斯突变,它允许藤壶探索搜索空间中的最大区域,第二种策略是遵循随机移动方法,朝向当前的最佳解决方案,该方法为每一代中的最佳候选者提供所需的探索。这些双突变策略在算法中的影响是快速收敛,而不会被困在任何局部最小值中。
03.部分代码
function [Destination_fitness,bestPositions,Convergence_curve]=EBMO(NP,itermax,lb,ub,dim,fobj)
%%
AllPositionsBest=zeros(1,dim,itermax);
AllPositions=zeros(NP,dim,itermax);
%%
for i=1:NP
P(i,:)=lb+rand(1,dim).*(ub-lb); % Random initial position
FT(i)=fobj(P(i,:)); % Fitness
end
[V,Ix]=sort(FT); % Sorting the fitness value
PS=P(Ix,:); % Sorting the position
FT1=V; % Sorted fitness value
pbest=PS(1,:); % Best position
G=V(1); % Best fitness
pl=7; %Penis length
%rdx=rand;
%%
AllPositions(:,:,1)=PS;
AllPositionsBest(:,:,1)=pbest;
%%
for itr=2:itermax
d=randperm(NP);
m=randperm(NP);
for i=1:NP
if abs(d(i)-m(i))<=pl
prd=randn(1,dim);
qrd=1-prd;
Q(i,:)=prd.*PS(d(i),:)+qrd.*PS(m(i),:);
else
Q(i,:)=rand*PS(m(i),:);
end
Q(i,:)=min(Q(i,:),ub);
Q(i,:)=max(Q(i,:),lb);
T=Q(i,:);
FT2(i)=fobj(T);
end
[V,ix]=sort(FT2);
X1=Q(ix,:);
S1=X1(1:NP/3,:);
S2=[];
S3=[];
lb1=ones(1,dim).*lb; % lower boundary
ub1=ones(1,dim).*ub; % upper boundary
for i=1:NP/3
S2(i,:)=S1(i,:).*(1+randn(1,1));
S3(i,:)=pbest-mean(S1,1)+rand*(lb1+rand*(ub1-lb1));
end
X1(NP/3+1:end,:)=[S2;S3];
Q=X1;
for i=1:NP
FT2(i)=fobj(Q(i,:));
end
FT=[FT1 FT2];
PQ=[PS;Q];
[V,Ix]=sort(FT);
PS=PQ(Ix(1:NP),:);
FT1=V(1:NP);
FT2=[];
Q=[];
if V(1)<G(itr-1)
G(itr)=V(1);
pbest=PS(1,:);
else
G(itr)=G(itr-1);
end
%%
AllPositions(:,:,itr)=PS;
AllPositionsBest(:,:,itr)=pbest;
end
Convergence_curve=G;
Destination_fitness=G(end);
bestPositions=pbest;
获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。