1 内容介绍
在这项工作中提出了一种新的仿生优化算法,称为人工蜂鸟算法(AHA)来解决优化问题。 AHA算法模拟自然界中蜂鸟的特殊飞行技能和智能觅食策略。模拟了觅食策略中使用的三种飞行技能,包括轴向、对角线和全向飞行。此外,实施了引导觅食、领地觅食和迁徙觅食,并构建了访问表来模拟蜂鸟对食物来源的记忆功能。 AHA 使用两组数值测试函数进行验证,并将结果与从各种算法获得的结果进行比较。比较表明,AHA 比其他元启发式算法更具竞争力,并且可以用更少的控制参数确定高质量的解决方案。此外,AHA 的性能在十个具有挑战性的工程设计案例研究中得到验证。结果表明,与文献中现有的优化技术相比,AHA 在计算负担和求解精度方面的优越性。
2 仿真代码
%-------------------------------------------------------------------%
% Multi-Objective artificial hummingbird algorithm (MOAHA) %
% Source codes demo version 1.0 %
%-------------------------------------------------------------------%
% I acknowledge that this version of MOAHA has been written using
% a portion of the following code:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB Code for %
% %
% Multi-Objective Particle Swarm Optimization (MOPSO) %
% Version 1.0 - Feb. 2011 %
% %
% According to: %
% Carlos A. Coello Coello et al., %
% "Handling Multiple Objectives with Particle Swarm Optimization," %
% IEEE Transactions on Evolutionary Computation, Vol. 8, No. 3, %
% pp. 256-279, June 2004. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dom=Dominates(x,y)
dom=all(x<=y) && any(x<y);
end
%-------------------------------------------------------------------%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [pop, F]=NonDominatedSorting(pop)
nPop=numel(pop);
for i=1:nPop
pop(i).DominationSet=[];
pop(i).DominatedCount=0;
end
F{1}=[];
for i=1:nPop
for j=i+1:nPop
p=pop(i);
q=pop(j);
if Dominates(p.Cost,q.Cost)
p.DominationSet=[p.DominationSet j];
q.DominatedCount=q.DominatedCount+1;
end
if Dominates(q.Cost,p.Cost)
q.DominationSet=[q.DominationSet i];
p.DominatedCount=p.DominatedCount+1;
end
pop(i)=p;
pop(j)=q;
end
if pop(i).DominatedCount==0
F{1}=[F{1} i];
pop(i).Rank=1;
end
end
k=1;
while true
Q=[];
for i=F{k}
p=pop(i);
for j=p.DominationSet
q=pop(j);
q.DominatedCount=q.DominatedCount-1;
if q.DominatedCount==0
Q=[Q j];
q.Rank=k+1;
end
pop(j)=q;
end
end
if isempty(Q)
break;
end
F{k+1}=Q;
k=k+1;
end
end
%--------------------------------------------------------------------------%
% Multi-Objective artificial hummingbird algorithm (MOAHA) %
% Source codes demo version 1.0 %
------------------------------------------------------------%
% FunIndex = 1: ZDT1
% FunIndex = 2: ZDT2
% FunIndex = 3: ZDT3
% FunIndex = 4: ZDT4
% FunIndex = 5: ZDT6
clc;
clear;
MaxIt=300;
nPop=100;
Dim=30;
ArchiveSize=100;
FunIndex=1;% ZDT1
[ArchiveFit]=MOAHA(FunIndex,MaxIt,nPop,ArchiveSize);
figure;
plot(ArchiveFit(1,:),ArchiveFit(2,:),'r.');
if FunIndex==5
title(['ZDT',num2str(FunIndex+1)]);
else
title(['ZDT',num2str(FunIndex)]);
end
xlabel('f1');
ylabel('f2');
box on
legend('PF');
3 运行结果
4 参考文献
[1]刘明辉. 改进的多目标人工蜂群算法及其在特征选择中的应用[D]. 安徽大学, 2018.
[2] Zhao W , Wang L , Mirjalili S . Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications[J]. Computer Methods in Applied Mechanics and Engineering, 2022, 388:114194-.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。