文章目录
- 【`获取资源`请见文章第4节:资源获取】
- 1. 猎人猎物优化算法(HPO)
- 2. 部分代码展示
- 3. 仿真结果展示
- 4. 资源获取说明
【获取资源
请见文章第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. 资源获取说明
可以获取完整代码资源。