文章目录
-
- 1.RFO 算法简介
-
- 1.1 初始化
- 1.2 白天搜索猎物
- 1.3 夜间搜索猎物
- 1.4 利用嗅觉定位猎物
- 1.5 向最优狐狸移动
- 1.6 最差情况下的动物行为
- 2.算法结果
- 3.Matlab&&Python
- 4.参考文献
1.RFO 算法简介
Rüppell’s Fox Optimizer (RFO) 是一种新的基于种群、受自然启发的元启发式方法,旨在解决全局优化问题。该算法的灵感来源于 Rüppell’s 狐狸在白天和夜晚的智能群体觅食行为。RFO 算法通过数学方式模拟了 Rüppell’s 狐狸利用其敏锐的视觉、听觉和嗅觉进行狩猎的多种主要觅食活动,以在整个优化过程中兼顾探索和利用两个方面。该算法模拟了 Rüppell’s 狐狸眼睛可旋转至约
260
∘
260^\\circ
260∘ 视野的特性,以及耳朵可旋转至约
150
∘
150^\\circ
150∘ 听域的特性。通过对 Rüppell’s 狐狸动态模式和活动的数学建模,研究者创建了一个高效的全局优化器,用于解决优化问题并最终产生可行的解决方案。
1.1 初始化
作为一个基于种群的算法,RFO 通过随机创建一组初始解来开始优化过程。初始种群在搜索域内使用均匀随机初始化生成,公式如下:
y
j
i
=
l
j
+
r
×
(
u
j
−
l
j
)
(2)
y_j^i = l_j + r \\times (u_j – l_j) \\tag{2}
yji=lj+r×(uj−lj)(2) 其中
y
j
i
y_j^i
yji 是第i只 Rüppell’s 狐狸在维度j的初始向量,
u
j
u_j
uj 和
l
j
l_j
lj 分别是搜索域在维度j的上界和下界,
r
r
r 是在
[
0
,
1
]
[0,1]
[0,1]范围内生成的随机值。
1.2 白天搜索猎物
在白天,Rüppell’s 狐狸更多利用视觉而非听觉来定位猎物。当它们利用视觉进行搜索时,其位置根据与猎物位置相关的运动活动而改变,该行为的模型如下:
y
k
+
1
i
=
x
k
i
+
r
_
i
n
d
e
x
×
(
x
_
r
a
n
d
−
x
k
i
)
+
r
_
i
n
d
e
x
×
(
f
b
e
s
t
k
−
x
k
i
)
(3)
y_{k+1}^i = x_k^i + r\\_index \\times (x\\_rand – x_k^i) + r\\_index \\times (fbest_k – x_k^i) \\tag{3}
yk+1i=xki+r_index×(x_rand−xki)+r_index×(fbestk−xki)(3) 此公式在
(
p
−
0.5
)
≥
0
,
s
≥
h
,
r
a
n
d
≥
0.25
(p – 0.5) \\ge 0,\\ s \\ge h,\\ rand \\ge 0.25
(p−0.5)≥0, s≥h, rand≥0.25 时适用。其中,
y
k
+
1
i
y_{k+1}^i
yk+1i 是第i只狐狸在第
(
k
+
1
)
(k + 1)
(k+1) 次迭代的位置,
f
b
e
s
t
k
fbest_k
fbestk 是全局最优位置向量,
x
k
i
x_k^i
xki 是当前位置向量。
p
p
p 是一个在
[
0
,
1
]
[0, 1]
[0,1] 范围内的随机值,
s
s
s 和
h
h
h 分别代表视觉和听觉的力量。由于 Rüppell’s 狐狸眼睛可旋转至
260
∘
260^\\circ
260∘,当它们利用眼睛的旋转特性进行搜索时,行为由以下公式模拟:
y
k
+
1
i
=
y
r
o
t
a
t
e
i
+
β
×
r
a
n
d
n
(
1
,
d
)
×
f
l
a
g
(9)
y_{k+1}^i = y_{rotate}^i + \\beta \\times randn(1,d) \\times flag \\tag{9}
yk+1i=yrotatei+β×randn(1,d)×flag(9) 此公式在
(
p
−
0.5
)
≥
0
,
s
≥
h
,
r
a
n
d
<
0.25
(p – 0.5) \\ge 0,\\ s \\ge h,\\ rand < 0.25
(p−0.5)≥0, s≥h, rand<0.25 时适用。这里
y
r
o
t
a
t
e
i
y_{rotate}^i
yrotatei 是旋转后的位置,
β
\\beta
β 是随机游走的步长限制,旋转角度
θ
e
\\theta_e
θe 由
r
a
n
d
×
(
2
×
260
∘
×
π
/
360
∘
)
rand \\times (2 \\times 260^\\circ \\times \\pi / 360^\\circ)
rand×(2×260∘×π/360∘) 确定。在白天,狐狸也会利用听觉,其搜索行为由以下公式描述:
y
k
+
1
i
=
x
k
i
+
r
_
i
n
d
e
x
×
(
x
_
r
_
r
a
n
d
−
x
k
i
)
+
r
_
i
n
d
e
x
×
(
f
b
e
s
t
k
−
x
k
i
)
(19)
y_{k+1}^i = x_k^i + r\\_index \\times (x\\_r\\_rand – x_k^i) + r\\_index \\times (fbest_k – x_k^i) \\tag{19}
yk+1i=xki+r_index×(x_r_rand−xki)+r_index×(fbestk−xki)(19) 此公式在
(
p
−
0.5
)
≥
0
(p – 0.5) \\ge 0
(p−0.5)≥0 且
r
a
n
d
≥
0.75
rand \\ge 0.75
rand≥0.75 时适用。此外,利用耳朵可旋转
150
∘
150^\\circ
150∘ 的特性,狐狸可以在最佳解周围的圆形轨迹中发现猎物,这种行为由以下公式模拟:
y
k
+
1
i
=
y
r
o
t
a
t
e
i
+
β
×
r
a
n
d
n
(
1
,
d
)
×
f
l
a
g
(20)
y_{k+1}^i = y_{rotate}^i + \\beta \\times randn(1,d) \\times flag \\tag{20}
yk+1i=yrotatei+β×randn(1,d)×flag(20) 此公式在
(
p
−
0.5
)
≥
0
,
s
<
h
,
r
a
n
d
<
0.75
(p – 0.5) \\ge 0,\\ s < h,\\ rand < 0.75
(p−0.5)≥0, s<h, rand<0.75 时适用,其旋转角度
θ
c
\\theta_c
θc 由
r
a
n
d
×
(
150
∘
×
π
/
360
∘
)
rand \\times (150^\\circ \\times \\pi / 360^\\circ)
rand×(150∘×π/360∘) 确定。
1.3 夜间搜索猎物
在夜间,Rüppell’s 狐狸更多依赖听觉而非视觉来寻找猎物。当它们利用听觉进行搜索时,位置更新模型如下:
y
k
+
1
i
=
x
k
i
+
r
_
i
n
d
e
x
×
(
y
_
r
a
n
d
−
x
k
i
)
+
r
_
i
n
d
e
x
×
(
f
b
e
s
t
k
−
x
k
i
)
(23)
y_{k+1}^i = x_k^i + r\\_index \\times (y\\_rand – x_k^i) + r\\_index \\times (fbest_k – x_k^i) \\tag{23}
yk+1i=xki+r_index×(y_rand−xki)+r_index×(fbestk−xki)(23) 此公式在
(
p
−
0.5
)
<
0
,
h
≥
s
,
r
a
n
d
≥
0.25
(p – 0.5) < 0,\\ h \\ge s,\\ rand \\ge 0.25
(p−0.5)<0, h≥s, rand≥0.25 时适用。这里的参数与白天搜索模型中的类似,但
y
_
r
a
n
d
y\\_rand
y_rand 表示狐狸随机选择其最优位置。与白天类似,夜间搜索也包括利用耳朵和眼睛的旋转特性进行随机定位。当利用耳朵旋转进行搜索时,位置更新遵循以下公式:
y
k
+
1
i
=
y
r
o
t
a
t
e
i
+
β
×
r
a
n
d
n
(
1
,
d
)
×
f
l
a
g
(26)
y_{k+1}^i = y_{rotate}^i + \\beta \\times randn(1,d) \\times flag \\tag{26}
yk+1i=yrotatei+β×randn(1,d)×flag(26) 此公式在
(
p
−
0.5
)
<
0
,
h
≥
s
,
r
a
n
d
<
0.25
(p – 0.5) < 0,\\ h \\ge s,\\ rand < 0.25
(p−0.5)<0, h≥s, rand<0.25 时适用。当利用视觉搜索时,位置更新遵循以下公式:
y
k
+
1
i
=
x
k
i
+
r
_
i
n
d
e
x
×
(
x
r
a
n
d
−
x
k
i
)
+
r
_
i
n
d
e
x
×
(
f
b
e
s
t
k
−
x
k
i
)
(27)
y_{k+1}^i = x_k^i + r\\_index \\times (x_rand – x_k^i) + r\\_index \\times (fbest_k – x_k^i) \\tag{27}
yk+1i=xki+r_index×(xrand−xki)+r_index×(fbestk−xki)(27) 此公式在
(
p
−
0.5
)
<
0
,
s
>
h
,
r
a
n
d
≥
0.75
(p – 0.5) < 0,\\ s > h,\\ rand \\ge 0.75
(p−0.5)<0, s>h, rand≥0.75 时适用。当利用眼睛旋转特性时,则遵循以下公式:
y
k
+
1
i
=
y
r
o
t
a
t
e
i
+
β
×
r
a
n
d
n
(
1
,
d
)
×
f
l
a
g
(28)
y_{k+1}^i = y_{rotate}^i + \\beta \\times randn(1,d) \\times flag \\tag{28}
yk+1i=yrotatei+β×randn(1,d)×flag(28) 此公式在
(
p
−
0.5
)
<
0
,
s
>
h
,
r
a
n
d
<
0.75
(p – 0.5) < 0,\\ s > h,\\ rand < 0.75
(p−0.5)<0, s>h, rand<0.75 时适用。
1.4 利用嗅觉定位猎物
除了敏锐的听觉和视觉,Rüppell’s 狐狸还利用其非凡的嗅觉在白天和夜晚寻找猎物。当狐狸无法通过视觉或听觉定位猎物时,它们被迫在随机区域和方向上搜寻。这种行为的数学模拟如下:
γ
k
+
1
i
=
{
x
k
i
+
ρ
×
(
x
_
r
a
n
d
1
−
x
k
i
)
×
r
2
+
ρ
×
(
f
b
e
s
t
k
−
x
k
i
)
×
r
3
r
1
≥
s
m
e
l
x
_
r
a
n
d
1
+
β
×
r
a
n
d
n
(
1
,
d
)
r
1
<
s
m
e
l
\\gamma_{k+1}^i = \\begin{cases} x_k^i + \\rho \\times (x\\_rand1 – x_k^i) \\times r_2 + \\rho \\times (fbest_k – x_k^i) \\times r_3 & r_1 \\ge smel \\\\ x\\_rand1 + \\beta \\times randn(1,d) & r_1 < smel \\end{cases}
γk+1i={xki+ρ×(x_rand1−xki)×r2+ρ×(fbestk−xki)×r3x_rand1+β×randn(1,d)r1≥smelr1<smel 其中
r
1
,
r
2
,
r_1, r_2,
r1,r2, 和
r
3
r_3
r3 是在
[
0
,
1
]
[0, 1]
[0,1] 范围内的随机值,
x
_
r
a
n
d
1
x\\_rand1
x_rand1 是一个随机选择的已知最优位置向量。
ρ
\\rho
ρ 是一个均匀分布的随机值,而
s
m
e
l
smel
smel 是一个随迭代次数变化的函数,用于模拟狐狸的嗅觉能力。公式的第一部分表示狐狸根据气味追踪猎物,而第二部分表示当气味追踪失败时,它会随机搜索附近的位置。
1.5 向最优狐狸移动
Rüppell’s 狐狸在觅食时表现出集体行为,它们会朝向群体中位置最好的狐狸移动,因为这只狐狸最接近猎物。为了模拟这种行为,开发了以下公式:
y
k
+
1
i
=
{
x
˙
k
i
+
c
0
×
(
x
_
r
a
n
d
−
x
˙
k
i
)
×
r
1
+
c
1
×
(
f
b
e
s
t
k
−
x
˙
k
i
)
×
r
2
r
a
n
d
≥
0.
(
x
˙
k
i
+
x
k
i
)
/
2
r
a
n
d
<
0.
y_{k+1}^i = \\begin{cases} \\dot{x}_k^i + c_0 \\times (x\\_rand – \\dot{x}_k^i) \\times r_1 + c_1 \\times (fbest_k – \\dot{x}_k^i) \\times r_2 & rand \\ge 0. \\\\ (\\dot{x}_k^i + x_k^i)/2 & rand < 0. \\end{cases}
yk+1i={x˙ki+c0×(x_rand−x˙ki)×r1+c1×(fbestk−x˙ki)×r2(x˙ki+xki)/2rand≥0.rand<0. 其中
c
0
c_0
c0 和
c
1
c_1
c1 是正常数,
x
˙
k
i
\\dot{x}_k^i
x˙ki 是第i只狐狸相对于猎物位置更新后的位置,该位置的计算考虑了全局最优解和局部最优解的影响,其公式如下:
x
˙
k
i
=
x
k
i
+
a
0
×
(
f
b
e
s
t
k
−
x
k
i
)
×
r
a
n
d
+
a
1
×
(
l
b
e
s
t
k
i
(
F
)
−
l
b
e
s
t
k
i
)
×
r
a
n
d
(35)
\\dot{x}_k^i = x_k^i + a_0 \\times (fbest_k – x_k^i) \\times rand + a_1 \\times (lbest_k^i(F) – lbest_k^i) \\times rand \\tag{35}
x˙ki=xki+a0×(fbestk−xki)×rand+a1×(lbestki(F)−lbestki)×rand(35) 这里
a
0
a_0
a0 和
a
1
a_1
a1 是正常数,
F
F
F 是一组随机值。这个模型模仿了狐狸群的集体行为,扩大了进一步探索和利用的可能性。
1.6 最差情况下的动物行为
在最差情况下,如果 Rüppell’s 狐狸在邻近区域找不到猎物,它们会深入搜索区域,并试图移动到有希望的区域,远离最差的区域。为了在数学上模拟这种深入搜索,开发了以下公式:
y
k
+
1
w
o
r
s
t
=
y
k
w
o
r
s
t
+
β
×
r
a
n
d
n
(
1
,
d
)
f
l
a
g
=
1
(37)
y_{k+1}^{worst} = y_k^{worst} + \\beta \\times randn(1,d) \\quad flag = 1 \\tag{37}
yk+1worst=ykworst+β×randn(1,d)flag=1(37) 该公式描述了 RFO 算法为进一步探索搜索空间而采取的集体行为。具体来说,它揭示了如果附近没有可以听到、闻到或看到的猎物,Rüppell’s 狐狸会在搜索空间内随机寻找猎物。
2.算法结果

3.Matlab&&Python
4.参考文献
[1]Braik, M., Al-Hiary, H. Rüppell’s fox optimizer: A novel meta-heuristic approach for solving global optimization problems. Cluster Comput 28, 292 (2025). https://doi.org/10.1007/s10586-024-04950-1.

![打卡信奥刷题(3676)用C++实现信奥题 P12271 [蓝桥杯 2024 国 Python B] 括号与字母-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261107050125-6aeeb0a5a5ade-220x150.png)