【群智能算法】猎人猎物优化算法 HPO算法【Matlab代码#48】


获取资源请见文章第4节:资源获取】


1. 猎人猎物优化算法(HPO)

猎人猎物优化算法(Hunter-Prey Optimization, HPO)是2022年Naruei等人提出的一种新型智能优化算法。该算法的思想来自于对动物狩猎过程的模拟,它具有收敛速度快、寻优能力强等优点。

HPO算法首先会随机初始化种群在解空间中的位置,种群初始化公式如下所示:
在这里插入图片描述
其中, x i x_{i} xi表示第 i i i个猎人或者猎物的位置, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N N N N表示种群数量; l b lb lb u b ub ub分别表示搜索空间的上下限; r a n d ( 1 , d ) rand(1,d) rand(1,d)表示0-1之间的随机数, d = 1 , 2 , . . . , D d=1,2,...,D d=1,2,...,D D D D表示搜索空间的维数。

猎人通过如下公式来进行位置更新:
在这里插入图片描述
其中, x ( t ) x(t) x(t) x ( t + 1 ) x(t+1) x(t+1)表示猎人当前迭代和下一次迭代的位置; P p o s P_{pos} Ppos表示猎物的位置; μ \mu μ表示所有位置的平均值; Z Z Z是一个自适应参数,公式如下:
在这里插入图片描述
其中, r 1 r_{1} r1 r 3 r_{3} r3是0-1之间的随机数构成的向量; P P P为0或者1构成的向量; r 2 r_{2} r2表示0-1之间的随机数; I D X IDX IDX表示向量 r 1 r_{1} r1中满足条件 P = = 0 P==0 P==0的索引值构成的向量; C C C为平衡算法开发和探索行为的参数,它的值在迭代过程中由1递减到0.02。

距离平均位置 μ \mu μ最远的个体被视为猎物 P p o s P_{pos} Ppos
在这里插入图片描述
在实际捕猎过程中,如果猎人捕获到了猎物,猎人会移动到新的猎物位置。这种机制可以被描述如下:
在这里插入图片描述
n n n表示种群的数量。在算法的初始阶段, k b e s t = N kbest=N kbest=N。在算法的迭代过程中,猎人会选择离平均位置最远的个体作为猎物然后攻击它, k b e s t kbest kbest会逐渐下降。在算法的末了阶段, k b e s t kbest kbest会等于距离最短的第一个个体。
在这里插入图片描述
当猎物被攻击时,它会试图逃离局部最优位置,它可能会有较大的逃生机会,此时猎人会选择其他猎物。猎物的更新公式如下:
在这里插入图片描述
其中, x ( t ) x(t) x(t) x ( t + 1 ) x(t+1) x(t+1)分别表示当前迭代和下一次迭代中猎物的位置; T p o s 是全局最优位置 T_{pos}是全局最优位置 Tpos是全局最优位置 r 4 r_{4} r4是-1到1之间的随机数。

综合上面的公式,猎人或者猎物的更新公式可以被描述为:
在这里插入图片描述
其中, r 5 r_{5} r5是0-1之间的随机数。

2. 部分代码展示

clear;clc;close all

Search_no=30;   % Number of search agent
F_name='F12';    % Name of the test function F1-f23
M_Iter=1000;    % Maximum number of iterations
 
[lb,ub,dim,fobj]=Get_F(F_name); %Give details of the underlying benchmark function

[Best_FF,Best_P,Conv_curve]=HPO(Search_no,M_Iter,lb,ub,dim,fobj); % Call the AOA 

figure('Position',[454   445   694   297]);
subplot(1,2,1);
func_plot(F_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])

subplot(1,2,2);
semilogy(Conv_curve,'Color','r','LineWidth',2)
title('Convergence curve')
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('HPO')

display(['The best-obtained solution by HPO is : ', num2str(Best_P)]);
display(['The best optimal value of the objective funciton found by HPO is : ', num2str(Best_FF)]);

3. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 资源获取说明

可以获取完整代码资源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天`南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值