
1 简介针对哈里斯鹰优化(HHO)算法存在的收敛精度低,收敛速度慢,易于陷入局部最优的不足,提出了一种混沌精英哈里斯鹰优化(CEHHO)算法.首先,引入精英等级制度策略,以充分利用优势种群来增强种群多样性以及提升算法收敛速度和精度;其次,利用Tent混沌映射调整算法关键参数;然后,使用一种非线性能量因子调节策略来平衡算法的开发与探索;最后,使用高斯随机游走策略对最优个体施加扰动,并在算法停滞时,利用随机游走策略使算法有效跳出局部最优.通过对20个基准测试函数在不同维度下进行仿真实验,来评估算法的寻优能力.实验结果表明,改进算法的表现优于鲸鱼优化算法(WOA),灰狼优化(GWO)算法,粒子群优化(PSO)算法和生物地理优化(BBO)算法,性能较原始HHO算法有明显提升,验证了改进算法的有效性.2 部分代码%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Harriss hawk optimizer: In this algorithm, Harris hawks try to catch the rabbit.% T: maximum iterations, N: populatoin size, CNVG: Convergence curve% To run HHO: [Rabbit_Energy,Rabbit_Location,CNVG]HHO(N,T,lb,ub,dim,fobj)function [Rabbit_Energy,Rabbit_Location,CNVG]HHO(N,T,lb,ub,dim,fobj)disp(HHO is now tackling your problem)tic% initialize the location and Energy of the rabbitRabbit_Locationzeros(1,dim);Rabbit_Energyinf;%Initialize the locations of Harris hawksXinitialization(N,dim,ub,lb);CNVGzeros(1,T);t0; % Loop counterwhile tTfor i1:size(X,1)% Check boundriesFUX(i,:)ub;FLX(i,:)lb;X(i,:)(X(i,:).*(~(FUFL)))ub.*FUlb.*FL;% fitness of locationsfitnessfobj(X(i,:));% Update the location of Rabbitif fitnessRabbit_EnergyRabbit_Energyfitness;Rabbit_LocationX(i,:);endendE12*(1-(t/T)); % factor to show the decreaing energy of rabbit% Update the location of Harris hawksfor i1:size(X,1)E02*rand()-1; %-1E01Escaping_EnergyE1*(E0); % escaping energy of rabbitif abs(Escaping_Energy)1%% Exploration:% Harris hawks perch randomly based on 2 strategy:qrand();rand_Hawk_index floor(N*rand()1);X_rand X(rand_Hawk_index, :);if q0.5% perch based on other family membersX(i,:)X_rand-rand()*abs(X_rand-2*rand()*X(i,:));elseif q0.5% perch on a random tall tree (random site inside groups home range)X(i,:)(Rabbit_Location(1,:)-mean(X))-rand()*((ub-lb)*randlb);endelseif abs(Escaping_Energy)1%% Exploitation:% Attacking the rabbit using 4 strategies regarding the behavior of the rabbit%% phase 1: surprise pounce (seven kills)% surprise pounce (seven kills): multiple, short rapid dives by different hawksrrand(); % probablity of each eventif r0.5 abs(Escaping_Energy)0.5 % Hard besiegeX(i,:)(Rabbit_Location)-Escaping_Energy*abs(Rabbit_Location-X(i,:));endif r0.5 abs(Escaping_Energy)0.5 % Soft besiegeJump_strength2*(1-rand()); % random jump strength of the rabbitX(i,:)(Rabbit_Location-X(i,:))-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:));end%% phase 2: performing team rapid dives (leapfrog movements)if r0.5 abs(Escaping_Energy)0.5, % Soft besiege % rabbit try to escape by many zigzag deceptive motionsJump_strength2*(1-rand());X1Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:));if fobj(X1)fobj(X(i,:)) % improved move?X(i,:)X1;else % hawks perform levy-based short rapid dives around the rabbitX2Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-X(i,:))rand(1,dim).*Levy(dim);if (fobj(X2)fobj(X(i,:))), % improved move?X(i,:)X2;endendendif r0.5 abs(Escaping_Energy)0.5, % Hard besiege % rabbit try to escape by many zigzag deceptive motions% hawks try to decrease their average location with the rabbitJump_strength2*(1-rand());X1Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(X));if fobj(X1)fobj(X(i,:)) % improved move?X(i,:)X1;else % Perform levy-based short rapid dives around the rabbitX2Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(X))rand(1,dim).*Levy(dim);if (fobj(X2)fobj(X(i,:))), % improved move?X(i,:)X2;endendend%%endendtt1;CNVG(t)Rabbit_Energy;% Print the progress every 100 iterations% if mod(t,100)0% display([At iteration , num2str(t), the best fitness is , num2str(Rabbit_Energy)]);% endendtocend% ___________________________________function oLevy(d)beta1.5;sigma(gamma(1beta)*sin(pi*beta/2)/(gamma((1beta)/2)*beta*2^((beta-1)/2)))^(1/beta);urandn(1,d)*sigma;vrandn(1,d);stepu./abs(v).^(1/beta);ostep;end3 仿真结果4 参考文献[1]汤安迪, 韩统, 徐登武,等. 混沌精英哈里斯鹰优化算法[J]. 计算机应用, 2021, 41(8):8.博主简介擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真相关matlab代码问题可私信交流。部分理论引用网络文献若有侵权联系博主删除。