智能优化算法:蝠鲼觅食优化算法
摘要:蝠鲼觅食优化 (Manta ray foraging optimization,
MRFO)是由 Zhao 等,在 2019 年提出的新型智能仿生群体算法。具有寻优能力强,收敛快的特点。
1.算法原理
该算法是模仿蝠鲼在海洋中的觅食过程,针对不同捕食策略进行数学建模,对蝠鲼个体位置更新的方式进行数学描述,从而实现在复杂解空间中对最优解的搜索。由于位置更新方式的独特性,MRFO 的求解精度与鲁棒性相比于传统群体智能仿生算法也有显著的提升。MRFO 可描述为 3 种觅食行为,包括链式觅食、螺旋觅食以及翻滚觅食。
1.1 链式觅食
链式捕食过程中,蝠鲼种群从头到尾排成一条捕食链。蝠鲼个体下一位置的移动方向与步长是由当前最优解与前一个体位置共同决定。该种位置更新方式数学模型如下:
x
i
d
(
t
+
1
)
=
{
x
i
d
(
t
)
+
r
(
x
b
e
s
t
d
(
t
)
−
x
i
d
(
t
)
)
+
α
(
x
b
e
s
t
d
−
x
i
d
(
t
)
)
,
i
=
1
x
i
d
(
t
)
+
r
(
x
i
−
1
d
(
t
)
−
x
i
d
(
t
)
)
+
α
(
x
b
e
s
t
d
−
x
i
d
(
t
)
)
,
i
=
2
,
3
,
.
.
.
,
N
(1)
x_i^d(t+1)=\begin{cases} x_i^d(t) + r(x_{best}^d(t)-x_i^d(t))+\alpha(x_{best}^d - x_i^d(t)),i=1\\ x_i^d(t) + r(x_{i-1}^d(t)-x_i^d(t))+\alpha(x_{best}^d - x_i^d(t)),i=2,3,...,N \end{cases}\tag{1}
xid(t+1)={xid(t)+r(xbestd(t)−xid(t))+α(xbestd−xid(t)),i=1xid(t)+r(xi−1d(t)−xid(t))+α(xbestd−xid(t)),i=2,3,...,N(1)
α = 2 r ∣ l o g ( r ) ∣ (2) \alpha = 2r\sqrt{|log(r)|}\tag{2} α=2r∣log(r)∣(2)
式中, x i d ( t ) x_i^d(t) xid(t)表示第 t t t 代、第 i i i 个个体在 d d d 维上的位置;r表示在[0,1]上均匀分布的随机数; x b e s t d ( t ) x_{best}^d(t) xbestd(t)表示第 t t t 代最优个体在第 d d d 维上的位置; N N N表示个体数量。
1.2 螺旋觅食
当蝠鲼个体发现某猎物之后,其会采用螺旋的方式向其靠近。MRFO 中蝠鲼个体由于链式捕食方式的存在,其在向当前解螺旋移动的过程中,同样还受到前一个个体的影响。该种位置更新方式数学模型如下:
当
t
/
T
>
r
a
n
d
t/T>rand
t/T>rand,描述蝠鲼螺旋状运动的数学方程可以定义为:
x
i
d
(
t
+
1
)
=
{
x
b
e
s
t
d
(
t
)
+
r
(
x
b
e
s
t
d
(
t
)
−
x
i
d
(
t
)
)
+
β
(
x
b
e
s
t
d
−
x
i
d
(
t
)
)
,
i
=
1
x
b
e
s
t
d
(
t
)
+
r
(
x
i
−
1
d
(
t
)
−
x
i
d
(
t
)
)
+
β
(
x
b
e
s
t
d
−
x
i
d
(
t
)
)
,
i
=
2
,
3
,
.
.
.
,
N
(3)
x_i^d(t+1)=\begin{cases} x_{best}^d(t) + r(x_{best}^d(t)-x_i^d(t))+\beta(x_{best}^d - x_i^d(t)),i=1\\ x_{best}^d(t) + r(x_{i-1}^d(t)-x_i^d(t))+\beta(x_{best}^d - x_i^d(t)),i=2,3,...,N \end{cases} \tag{3}
xid(t+1)={xbestd(t)+r(xbestd(t)−xid(t))+β(xbestd−xid(t)),i=1xbestd(t)+r(xi−1d(t)−xid(t))+β(xbestd−xid(t)),i=2,3,...,N(3)
β = 2 e r 1 T − i + 1 T s i n ( 2 π r 1 ) (4) \beta = 2e^{r_1\frac{T-i+1}{T}}sin(2\pi r_1)\tag{4} β=2er1TT−i+1sin(2πr1)(4)
中,
T
T
T 为迭代总次数;
r
1
r_1
r1 在[0,1]上均匀分布随机数。当
t
/
T
≤
r
a
n
d
t/T\leq rand
t/T≤rand,描述蝠鲼螺旋状运动的数学方程可以定义为:
x
i
d
(
t
+
1
)
=
{
x
r
a
n
d
d
(
t
)
+
r
(
x
r
a
n
d
d
(
t
)
−
x
i
d
(
t
)
)
+
β
(
x
r
a
n
d
d
−
x
i
d
(
t
)
)
,
i
=
1
x
r
a
n
d
d
(
t
)
+
r
(
x
i
−
1
d
(
t
)
−
x
i
d
(
t
)
)
+
β
(
x
r
a
n
d
d
−
x
i
d
(
t
)
)
,
i
=
2
,
3
,
.
.
.
,
N
(5)
x_i^d(t+1)=\begin{cases} x_{rand}^d(t) + r(x_{rand}^d(t)-x_i^d(t))+\beta(x_{rand}^d - x_i^d(t)),i=1\\ x_{rand}^d(t) + r(x_{i-1}^d(t)-x_i^d(t))+\beta(x_{rand}^d - x_i^d(t)),i=2,3,...,N \end{cases} \tag{5}
xid(t+1)={xrandd(t)+r(xrandd(t)−xid(t))+β(xrandd−xid(t)),i=1xrandd(t)+r(xi−1d(t)−xid(t))+β(xrandd−xid(t)),i=2,3,...,N(5)
x r a n d d = L b d + r ( U b d − L b d ) (6) x_{rand}^d = Lb^d+r(Ub^d-Lb^d)\tag{6} xrandd=Lbd+r(Ubd−Lbd)(6)
x r a n d d ( t ) x_{rand}^d(t) xrandd(t)表示第 t t t代、第 d d d维的随机位置。 U b d , L b d Ub^d,Lb^d Ubd,Lbd表示变量取值上、下界。
1.3 翻滚觅食
在翻滚捕食中,蝠鲼个体以当前最优解作为翻滚支点,翻滚至与其当前位置成镜像关系的另一侧。其数学模型表达如下:
x
i
d
(
t
+
1
)
=
x
i
d
(
t
)
+
S
(
r
2
x
b
e
s
t
d
−
r
3
x
i
d
(
t
)
)
,
i
=
1
,
2
,
.
.
.
,
N
(7)
x_i^d(t+1) = x_i^d(t)+S(r_2x_{best}^d-r_3x_i^d(t)),i=1,2,...,N \tag{7}
xid(t+1)=xid(t)+S(r2xbestd−r3xid(t)),i=1,2,...,N(7)
S = 2 (7) S = 2\tag{7} S=2(7)
中, r 2 r_2 r2 和 r 3 r_3 r3都是在[0,1]上均匀分布的随机数。
算法流程
step1.设定算参数,初始化种群
step2. 计算适应度值
step3.判断rand<0.5。如果成立,则执行螺旋觅食。如果不成立则执行链式觅食。
step4.计算适应度值,更新最优位置
step5.执行翻滚觅食,更新位置
step6.计算适应度值,更新最优位置
step7.判断是否满足结束条件,如果满足则输出最优值,否则重复执行step2-step7.
2.实验结果
3.参考文献
[1]李璟楠,乐美龙.多种群蝠鲼觅食优化求解多跑道机场航班排序[J].航空计算技术,2020,50(06):47-51.
[1]Zhao Weiguo,Zhang Zhenxing,Wang Liying. Manta Ray Foraging Optimization:An Effective Bio-inspired Optimizer for Engineering Applications[J]. Engineering Applications of Artificial Intelligence,2020,87:103300.
4.Matlab代码
个人资料介绍