1.背景
2023年,H Mohammed等人受到狐狸猎食过程启发,提出了狐狸优化算法(Fox Optimizer, FOX)。
2.算法原理
2.1算法思想
FOX模仿了狐狸潜入雪中捕猎猎物的行为,具体步骤:
- 当地面被雪覆盖时,雪会阻挡猎物的视线,狐狸会尝试随机搜索猎物
- 狐狸通过听到猎物发出的超声波来找到猎物,它需要一些时间来接近猎物
- 通过听到猎物的声音和时间差,狐狸可以确定自己与猎物之间的距离
- 确定距离后,狐狸估计需要跳跃来捕捉猎物
- 根据最小时间和最佳位置,狐狸随机行走
2.2算法过程
开发阶段:
考虑到了捕杀猎物的机会,若随机数p大于0.18,则需要狐狸找到新的位置。为了确定新位置,需要计算声音传播距离:
D
i
s
t
_
S
_
T
i
t
=
S
p
_
S
∗
T
i
m
e
_
S
_
T
i
t
(1)
Dist\_S\_T_{it}=Sp\_S*Time\_S\_T_{it}\tag{1}
Dist_S_Tit=Sp_S∗Time_S_Tit(1)
最佳位置找到声音速度𝑆𝑝_𝑆:
S
p
−
S
=
B
e
s
t
P
o
s
i
t
i
o
n
i
t
T
i
m
e
−
S
−
T
i
t
(2)
Sp_{-}S=\frac{BestPosition_{it}}{Time_{-}S_{-}T_{it}}\tag{2}
Sp−S=Time−S−TitBestPositionit(2)
在物理学中计算传感器与物体之间的距离时,声音传播的距离除以2,因为传感器与物体之间的距离是通过声波找到的距离的一半:
D
i
s
t
_
F
o
x
_
P
r
e
y
i
t
=
D
i
s
t
_
S
_
T
i
t
∗
0.5
(3)
Dist\_Fox\_Prey_{it}=Dist\_S\_T_{it}*0.5\tag{3}
Dist_Fox_Preyit=Dist_S_Tit∗0.5(3)
在找到狐狸和猎物之间的距离后,需要找到一个新位置,以便狐狸要跳跃来捕捉猎物。狐狸需要计算跳跃高度𝐽𝑢𝑚𝑝𝑖𝑡:
J
u
m
p
i
t
=
0.5
∗
9.81
∗
t
2
(4)
Jump_{it}=0.5*9.81*t^{2}\tag{4}
Jumpit=0.5∗9.81∗t2(4)
c1,c2 的值分别为 0.18 和 0.82,如果 p 值大于 0.18,则表示红狐向东北方向跳跃。𝐷𝑖𝑠𝑡_𝐹𝑜𝑥_𝑃𝑟𝑒𝑦𝑖𝑡 和 𝐽𝑢𝑚𝑝𝑖𝑡 都将乘以 c1。此时利用新位置的机会很大,狐狸向全局最优解前进。如果 p 值小于 0.18,则狐狸向相反方向跳跃,这意味着捕杀猎物的机会很低,𝐷𝑖𝑠𝑡_𝐹𝑜𝑥_𝑃𝑟𝑒𝑦𝑖𝑡 和 𝐽𝑢𝑚𝑝𝑖𝑡 都将乘以c2。
X
(
i
t
+
1
)
=
D
i
s
t
_
F
o
x
_
P
r
e
y
i
t
∗
J
u
m
p
i
t
∗
c
1
X
(
i
t
+
1
)
=
D
i
s
t
_
F
o
x
_
P
r
e
y
i
t
∗
J
u
m
p
i
t
∗
c
2
(5)
X_{(it+1)}=Dist\_Fox\_Prey_{it}{}^{*}Jump_{it}{}^{*}c_{1}\\ X_{(it+1)}=Dist\_Fox\_Prey_{it}{}^{*}Jump_{it}{}^{*}c_{2}\tag{5}
X(it+1)=Dist_Fox_Preyit∗Jumpit∗c1X(it+1)=Dist_Fox_Preyit∗Jumpit∗c2(5)
探索阶段:
为了控制随机行走,在这个阶段,狐狸根据迄今为止找到的最佳位置随机搜索。在这个阶段,狐狸没有跳跃技术,因为它必须随机行走以探索搜索区域中的猎物。为了确保狐狸朝着最佳位置随机行走,使用了最小时间变量 𝑀𝑖𝑛𝑇 和变量 a 来控制搜索:
t
t
=
s
u
m
(
T
i
m
e
S
T
i
t
(
i
,
:
)
)
d
i
m
e
n
s
i
o
n
,
M
i
n
T
=
M
i
n
(
t
t
)
(6)
tt=\frac{sum\left(Time_{S_{Tit}}\left(i,:\right)\right)}{dimension},\quad MinT=Min(tt)\tag{6}
tt=dimensionsum(TimeSTit(i,:)),MinT=Min(tt)(6)
参数a表述为:
a
=
2
∗
(
i
t
−
(
1
M
a
x
i
t
)
)
(7)
a=2*(it-\Big(\frac{1}{Max_{it}}\Big))\tag{7}
a=2∗(it−(Maxit1))(7)
狐狸位置更新为:
X
(
i
t
+
1
)
=
B
e
s
t
X
i
t
∗
r
a
n
d
(
1
,
d
i
m
e
n
s
i
o
n
)
∗
M
i
n
T
∗
a
(8)
X_{(it+1)}=BestX_{it}*rand(1,dimension)*MinT*a\tag{8}
X(it+1)=BestXit∗rand(1,dimension)∗MinT∗a(8)
伪代码:
3.结果展示
4.参考文献
[1] Mohammed H, Rashid T. FOX: a FOX-inspired optimization algorithm[J]. Applied Intelligence, 2023, 53(1): 1030-1050.