国外对企业网站开发的研究,wordpress 首页定制,teahouse wordpress主题,旅行网站排名目录
1 算法简介
2 算法数学模型
2.1.全局探索阶段
2.2 过渡阶段 2.3.局部开采阶段
3 求解步骤与程序框图
3.1 步骤
3.2 程序框图
4 matlab代码及结果
4.1 代码
4.2 结果 1 算法简介
哈里斯鹰算法(Harris Hawks Optimization#xff0c;HHO)#xff0c;是由Ali As…目录
1 算法简介
2 算法数学模型
2.1.全局探索阶段
2.2 过渡阶段 2.3.局部开采阶段
3 求解步骤与程序框图
3.1 步骤
3.2 程序框图
4 matlab代码及结果
4.1 代码
4.2 结果 1 算法简介
哈里斯鹰算法(Harris Hawks OptimizationHHO)是由Ali Asghar Heidari和Seyedali Mrjaili于2019年提出的一种新型仿生智能优化算法。该算法模仿哈里斯鹰捕食特点结合Levy飞行(Levy Flights实现对复杂多维问题求解。研究表明该新型算法具有良好的性能。在HHO中哈里斯鹰是候选解猎物随迭代逼近最优解HHO算法包括两个阶段:全局探索阶段、局部开采阶段.
2 算法数学模型
2.1.全局探索阶段
在这一阶段中哈里斯鹰处于等待状态。仔细检查和监控搜索空间[b , ub]以发现猎物。根据两种策略在随机的地方寻找猎物迭代时以概率q进行位置更新。数学表达式如下: 式中 和 编辑分别为哈里斯鹰第t1次和第t次迭代时的位置Xrabbitt表示猎物第t次迭代时的位置q和r1r2r3r4是区间(0,1)内的随机数字lb是搜索空间的下界ub是搜索空间的上界Xrandt表示第t次迭代时哈里斯鹰的随机位置Xmt表示第t次迭代时哈里斯鹰的平均位置公式如下: 2.2 过渡阶段
该阶段用于保持探索和开采之间适当的平衡。HHO通过猎物的能量方程实现从探索到开采的过渡。 式中E表示猎物逃跑的能量 是猎物能量的初始状态公式为E0 2*rand - 1rand是(01)之间的随机数字,T为最大迭代次数t为当前迭代次数.当E≥1时哈里斯鹰算法将执行全局探索;否则HHO算法进入局部开采。 2.3.局部开采阶段
根据猎物的逃跑行为和哈里斯鹰的追逐策略HHO算法提出了四种可能的策略来模拟攻击行为用N表示猎物成功逃脱的概率。
(1)软围攻.当E≥0.5A≥0.5时猎物有足够的能量且以跳跃的方式逃脱围捕而哈里斯鹰会逐渐消耗猎物的能量然后选择最佳的位置突袭俯冲逮捕猎物更新位置的方程如下: 式中Xt是迭代时猎物与哈里斯鹰的位置之差J2(1-r5表示猎物逃跑过程中的随机跳跃r5是介于0到1之间的随机数字. (2)硬围攻当E0.5入≥0.5时猎物筋疲力尽哈里斯鹰选择迅速突袭位置更新如下 3)累速俯冲式软围攻.当E0.5入0.5时猎物有足够的能量E逃跑哈里斯鹰在突袭之前会建立一个软围攻.为了模拟猎物的逃跑模式和跳跃动作将levy函数LF集成在HHO算法中更新位置的策略为: 式中D为问题维度S为D维随机行向量.
(4)累速俯冲式硬围攻.当E0.5入0.5时猎物能量E低哈里斯鹰在突袭前构建硬围攻捕捉猎物位置更新如: Levy飞行函数公式如下: 式中u、v是(0,1)之间的随机数β取常值1.5。
HHO算法用猎物能量E和因子入调节哈里斯鹰和猎物兔子)之间的四种围捕机制来实现优化求解问题.
3 求解步骤与程序框图
3.1 步骤 HHO算法的规则描述如下: 1)每次迭代前判断是否越界并调整更新猎物位置与适应度值; 2)在搜索阶段哈里斯鹰拥有两种不同搜索方式分别针对发现和未发现猎物; 3)野兔的逃逸能量会随着迭代次数增加而自适应减小; 4)当野兔能量降低到某一阈值将被哈里斯鹰群发现狩猎从搜索阶段转为围捕突袭阶段; 5)每一次突袭前兔子都有一定的概率从包围中逃脱; 6)针对兔子的体力以及是否逃脱包围圈哈里斯鹰有四种不同的围捕策略; 7每次围捕最终兔子将会捕获每次迭代会产生一个新的猎物该位置将由新一代种群中适应度值最优者占据。 实现步骤 Step1:初始化种群:包括搜索空间的上限和下限算法的最大迭代次数T。随机初始化种群位置. Step2:根据适应度函数计算每个个体的适应度值保存种群最优个体. Step3:更新猎物逃逸能量E. Step4:比较E的大小按位置更新公式或四种策略追捕猎物更新位置.Step5:对每个个体计算适应度更新种群最优的适应度值. Step6:判断搜索到的结果是否满足停止条件(达到最大迭代次数或满足精度要求)若满足停止条件则输出最优值否则转到Step3继续运行直到满足条件为止. 3.2 程序框图 4 matlab代码及结果
4.1 代码 %% 智能优化算法——哈里鹰算法Matlab实现
clear
close all
clcSearchAgents_no 30 ; % 种群规模
dim 10 ; % 粒子维度
Max_iter 1000 ; % 迭代次数
ub 5 ;
lb -5 ;
%% 初始化猎物位置和逃逸能量
Rabbit_Locationzeros(1,dim);
Rabbit_Energyinf;%% 初始化种群的位置
Positions lb rand(SearchAgents_no,dim).*(ub-lb) ;Convergence_curve zeros(Max_iter,1);%% 开始循环
for t1:Max_iterfor i1:size(Positions,1)% Check boundriesFUPositions(i,:)ub;FLPositions(i,:)lb;Positions(i,:)(Positions(i,:).*(~(FUFL)))ub.*FUlb.*FL;% fitness of locationsfitnesssum(Positions(i,:).^2);% Update the location of Rabbitif fitnessRabbit_EnergyRabbit_Energyfitness;Rabbit_LocationPositions(i,:);endendE12*(1-(t/Max_iter)); % factor to show the decreaing energy of rabbit%% Update the location of Harris hawksfor i1:size(Positions,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(SearchAgents_no*rand()1);X_rand Positions(rand_Hawk_index, :);if q0.5% perch based on other family membersPositions(i,:)X_rand-rand()*abs(X_rand-2*rand()*Positions(i,:));elseif q0.5% perch on a random tall tree (random site inside groups home range)Positions(i,:)(Rabbit_Location(1,:)-mean(Positions))-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 besiegePositions(i,:)(Rabbit_Location)-Escaping_Energy*abs(Rabbit_Location-Positions(i,:));endif r0.5 abs(Escaping_Energy)0.5 % Soft besiegeJump_strength2*(1-rand()); % random jump strength of the rabbitPositions(i,:)(Rabbit_Location-Positions(i,:))-Escaping_Energy*abs(Jump_strength*Rabbit_Location-Positions(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-Positions(i,:));if sum(X1.^2)sum(Positions(i,:).^2) % improved movePositions(i,:)X1;else % hawks perform levy-based short rapid dives around the rabbit%Levy flightbeta1.5;sigma(gamma(1beta)*sin(pi*beta/2)/(gamma((1beta)/2)*beta*2^((beta-1)/2)))^(1/beta);urandn(1,dim)*sigma;vrandn(1,dim);stepu./abs(v).^(1/beta);o10.01*step;X2Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-Positions(i,:))rand(1,dim).*o1;if (sum(X2.^2)sum(Positions(i,:).^2))% improved movePositions(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(Positions));if sum(X1.^2)sum(Positions(i,:).^2) % improved movePositions(i,:)X1;else % Perform levy-based short rapid dives around the rabbit%Levy flightbeta1.5;sigma(gamma(1beta)*sin(pi*beta/2)/(gamma((1beta)/2)*beta*2^((beta-1)/2)))^(1/beta);urandn(1,dim)*sigma;vrandn(1,dim);stepu./abs(v).^(1/beta);o20.01*step;X2Rabbit_Location-Escaping_Energy*abs(Jump_strength*Rabbit_Location-mean(Positions))rand(1,dim).*o2;if (sum(X2.^2)sum(Positions(i,:).^2))% improved movePositions(i,:)X2;endendend%%endendConvergence_curve(t)Rabbit_Energy;% Print the progress every 100 iterationsif mod(t,50)0display([At iteration , num2str(t), the best fitness is , num2str(Rabbit_Energy)]);end
end
figure(unit,normalize,Position,[0.3,0.35,0.4,0.35],color,[1 1 1],toolbar,none)
subplot(1,2,1);
x -5:0.1:5;yx;
Llength(x);
fzeros(L,L);
for i1:Lfor j1:Lf(i,j) x(i)^2y(j)^2;end
end
surfc(x,y,f,LineStyle,none);
xlabel(x_1);
ylabel(x_2);
zlabel(F)
title(Objective space)subplot(1,2,2);
semilogy(Convergence_curve,Color,r,linewidth,1.5)
title(Convergence_curve)
xlabel(Iteration);
ylabel(Best score obtained so far);axis tight
grid on
box on
legend(HHO)
display([The best solution obtained by HHO is : , num2str(Rabbit_Location)]);
display([The best optimal value of the objective funciton found by HHO is : , num2str(Rabbit_Energy)]); 4.2 结果