👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
瞪羚优化算法(GOA)的灵感来自瞪羚在捕食者主导的环境中的生存能力。每天,瞪羚都知道,如果它不能超越和智取它的捕食者,它就会变成一天的肉,为了生存,瞪羚必须不断逃离它们的捕食者。这些信息对于提出一种新的元启发式算法至关重要,该算法利用瞪羚的生存能力来解决现实世界的优化问题。该算法的开发阶段模拟瞪羚在没有捕食者或捕食者跟踪它时和平放牧。一旦发现捕食者,GOA就会进入探索阶段。探索阶段包括瞪羚超越和超越捕食者到安全的避风港。根据终止标准,反复重复这两个阶段,并找到优化问题的最佳解决方案。使用基准优化测试函数和选定的工程设计问题(15 个经典问题、10 个复合函数和 4 个机械工程设计问题)测试了开发算法作为优化工具的鲁棒性和效率。将GOA的结果与其他九种最先进的算法进行比较。仿真结果证实了GOA算法优于文献中现有的九种最新算法的优越性和竞争力。此外,对结果进行的标准统计分析测试进一步证实了GOA为所选优化问题找到解决方案的能力。它还表明,GOA表现更好,或者在某些情况下,与一些最先进的算法非常有竞争力。此外,结果表明GOA是一种有效的优化工具,可以适应解决不同优化域中的问题。
📚2 运行结果
部分代码:
function [Top_gazelle_fit,Top_gazelle_pos,Convergence_curve]=GOA2(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
Top_gazelle_pos=zeros(1,dim);
Top_gazelle_fit=inf;
Convergence_curve=zeros(1,Max_iter);
stepsize=zeros(SearchAgents_no,dim);
fitness=inf(SearchAgents_no,1);
gazelle=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;
PSRs=0.34;
S=0.88;
s=rand();
while Iter<Max_iter
%------------------- Evaluating top gazelle -----------------
for i=1:size(gazelle,1)
Flag4ub=gazelle(i,:)>ub;
Flag4lb=gazelle(i,:)<lb;
gazelle(i,:)=(gazelle(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
fitness(i,1)=fobj(gazelle(i,:));
if fitness(i,1)<Top_gazelle_fit
Top_gazelle_fit=fitness(i,1);
Top_gazelle_pos=gazelle(i,:);
end
end
%------------------- Keeping tract of fitness values-------------------
if Iter==0
fit_old=fitness; Prey_old=gazelle;
end
Inx=(fit_old<fitness);
Indx=repmat(Inx,1,dim);
gazelle=Indx.*Prey_old+~Indx.*gazelle;
fitness=Inx.*fit_old+~Inx.*fitness;
fit_old=fitness; Prey_old=gazelle;
%------------------------------------------------------------
Elite=repmat(Top_gazelle_pos,SearchAgents_no,1); %(Eq. 3)
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(gazelle,1)
for j=1:size(gazelle,2)
R=rand();
r=rand();
if mod(Iter,2)==0
mu=-1;
else
mu=1;
end
%------------------ Exploitation -------------------
if r>0.5
stepsize(i,j)=RB(i,j)*(Elite(i,j)-RB(i,j)*gazelle(i,j));
gazelle(i,j)=gazelle(i,j)+s*R*stepsize(i,j);
%--------------- Exploration----------------
else
if i>size(gazelle,1)/2
stepsize(i,j)=RB(i,j)*(RL(i,j)*Elite(i,j)-gazelle(i,j));
gazelle(i,j)=Elite(i,j)+S*mu*CF*stepsize(i,j);
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Absalom Ezugwu (2022). Gazelle optimization algorithm
[2]Agushaka, J.O., Ezugwu, A.E. & Abualigah, L. Gazelle optimization algorithm: a novel nature-inspired metaheuristic optimizer. Neural Comput & Applic (2022). https://doi.org/10.1007/s00521-022-07854-6