💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥



🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。



⛳️座右铭:行百里者,半于九十。

目录

​​💥1 概述​​

​​📚2 运行结果​​

​​🎉3 参考文献​​

​​🌈4 Matlab代码实现​​

💥1 概述

元启发式在解决优化问题方面发挥着关键作用,其中大多数都受到自然界中自然生物集体智慧的启发。本文提出了一种新的元启发式算法,其灵感来自自然界大猩猩部队的社会智能,称为人工大猩猩部队优化器(GTO)。在这个算法中,大猩猩的集体生活被数学公式化,并设计了新的机制来进行探索和开发。为了评估 GTO,我们将其应用于 52 个标准基准函数和 7 个工程问题。弗里德曼检验和威尔科克森秩和统计检验将所提出的方法与几种现有的元启发式方法进行了统计比较。结果表明,GTO在大多数基准函数上的表现优于比较算法,特别是在高维问题上。结果表明,与其他元启发式方法相比,GTO可以提供更好的结果。

大猩猩优化算法(Matlab代码实现)_开发语言

📚2 运行结果

大猩猩优化算法(Matlab代码实现)_算法_02

部分代码:
function [Silverback_Score,Silverback,convergence_curve]=GTO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj)
% initialize Silverback
Silverback=[];
Silverback_Score=inf;%Initialize the first random population of Gorilla
X=initialization(pop_size,variables_no,upper_bound,lower_bound); convergence_curve=zeros(max_iter,1);
for i=1:pop_size
Pop_Fit(i)=fobj(X(i,:));%#ok
if Pop_Fit(i)<Silverback_Score
Silverback_Score=Pop_Fit(i);
Silverback=X(i,:);
end
end GX=X(:,:);
lb=ones(1,variables_no).*lower_bound;
ub=ones(1,variables_no).*upper_bound; %% Controlling parameter
p=0.03;
Beta=3;
w=0.8;%%Main loop
for It=1:max_iter

a=(cos(2*rand)+1)*(1-It/max_iter);
C=a*(2*rand-1); %% Exploration:
for i=1:pop_size
if rand<p
GX(i,:) =(ub-lb)*rand+lb;
else
if rand>=0.5
Z = unifrnd(-a,a,1,variables_no);
H=Z.*X(i,:);
GX(i,:)=(rand-a)*X(randi([1,pop_size]),:)+C.*H;
else
GX(i,:)=X(i,:)-C.*(C*(X(i,:)- GX(randi([1,pop_size]),:))+rand*(X(i,:)-GX(randi([1,pop_size]),:))); %ok ok end
end
end

GX = boundaryCheck(GX, lower_bound, upper_bound);

% Group formation operation
for i=1:pop_size
New_Fit= fobj(GX(i,:));
if New_Fit<Pop_Fit(i)
Pop_Fit(i)=New_Fit;
X(i,:)=GX(i,:);
end
if New_Fit<Silverback_Score
Silverback_Score=New_Fit;
Silverback=GX(i,:);
end
end

%% Exploitation:
for i=1:pop_size
if a>=w
g=2^C;
delta= (abs(mean(GX)).^g).^(1/g);
GX(i,:)=C*delta.*(X(i,:)-Silverback)+X(i,:);
else

if rand>=0.5
h=randn(1,variables_no);
else
h=randn(1,1);
end
r1=rand;
GX(i,:)= Silverback-(Silverback*(2*r1-1)-X(i,:)*(2*r1-1)).*(Beta*h);

end
end

GX = boundaryCheck(GX, lower_bound, upper_bound);

% Group formation operation
for i=1:pop_size
New_Fit= fobj(GX(i,:));
if New_Fit<Pop_Fit(i)
Pop_Fit(i)=New_Fit;
X(i,:)=GX(i,:);
end
if New_Fit<Silverback_Score
Silverback_Score=New_Fit;
Silverback=GX(i,:);
end
end

convergence_curve(It)=Silverback_Score;
fprintf("In Iteration %d, best estimation of the global optimum is %4.4f \n ", It,Silverback_Score );

end


 

🎉3 参考文献

大猩猩优化算法(Matlab代码实现)_开发语言

​🌈​​4 Matlab代码实现