2020 智能优化算法:蜉蝣算法 - 附代码
摘要:蜉蝣算法(mayfly algorithm,MA)是于2020年提出的新型之智能优化算法。该算法具有寻优能力强等优点,具有较强的研究价值。
1.算法原理
蜉蝣是属于蜉蝣目的昆虫,是古翅目昆虫的一部分。据估计,全世界有超过3000种蜉蝣。它们的名字来源于它们主要出现在英国的五月。从卵中孵化出来后,肉眼可以看到未成熟的蜉蝣,它们花了几年时间成长为水生若虫,直到它们准备好成年后上升到水面。一只成年蜉蝣只存活几天,直到它完成繁殖的最终目标。为了吸引雌性,大多数雄性成虫成群结队地聚集在水面上几米的地方,通过特有的上下运动模式,表演一场婚礼舞蹈。雌鸟飞入这些蜂群,为了与空中的雄性交配。交配可能只持续几秒钟,当交配完成后,雌鸟将卵落在水面上,它们的生命周期就结束了。
它的灵感来源于蜉蝣的社会行为,特别是它们的交配过程。我们假设蜉蝣从卵中孵化出来后,已经是成虫了,而最适合的蜉蝣存活下来,而不管它们活多久。每个蜉蝣在搜索空间中的位置代表了问题的潜在解决方案。算法的工作原理如下。最初,随机产生两组蜉蝣,分别代表雄性和雌性种群。也就是说,每个蜉蝣被随机放置在问题空间中,作为由d维向量表示的候选解 x = ( x 1 , . . . , x d ) x = (x_1,...,x_d) x=(x1,...,xd),并根据预先确定的目标函数 f ( x ) f(x) f(x)对其性能进行评价。蜉蝣的速度 v = ( v 1 , . . . , v d ) v = (v_1,...,v_d) v=(v1,...,vd)定义为其位置的变化,每个蜉蝣的飞行方向是个体和社会飞行经验的动态交互作用。特别是,每个蜉蝣都会调整自己的轨迹,使其朝向目前为止的个人最佳位置( p b e s t pbest pbest),以及迄今为止群中任何蜉蝣所获得的最佳位置( g b e s t gbest gbest)。
1.1 雄性蜉蝣的运动
雄性蜉蝣成群的聚集,意味着每只雄性蜉蝣的位置都是根据自己和邻居的经验来调整的。假设
x
i
t
x_i^t
xit是时间步长
t
t
t时蜉蝣
i
i
i在搜索空间中的当前位置,通过在当前位置上添加速度
v
i
t
+
1
v_i^{t+1}
vit+1来改变位置。这可以表述为:
x
i
t
+
1
=
x
i
t
+
v
i
t
+
1
(1)
x_i^{t+1}=x_i^t + v_i^{t+1}\tag{1}
xit+1=xit+vit+1(1)
考虑到雄性蜉蝣总是在水面上几米处表演舞蹈,我们假设它们不能发展出很快的速度,而且它们会不断地移动。因此,雄性蜉蝣的速度计算如下:
v
i
j
t
+
1
=
v
i
j
t
+
a
1
e
−
β
r
p
2
(
p
b
e
s
t
i
j
−
x
i
j
t
)
+
a
2
e
−
β
r
g
2
(
g
b
e
s
t
j
−
x
i
j
t
)
(2)
v_{ij}^{t+1}=v_{ij}^{t} + a_1e^{-\beta r_p^2}(pbest_{ij} - x_{ij}^t)+a_2e^{-\beta r_g^2}(gbest_j - x_{ij}^t) \tag{2}
vijt+1=vijt+a1e−βrp2(pbestij−xijt)+a2e−βrg2(gbestj−xijt)(2)
其中
v
i
j
t
v_{ij}^t
vijt是蜉蝣
i
i
i在
j
j
j维度
t
t
t时刻的速度。
x
i
j
t
x_{ij}^t
xijt代表t时刻的位置。a1和a2是社会作用正吸引系数。pbest代码蜉蝣历史最有位置。gbest代表最佳蜉蝣位置。
β
\beta
β是蜉蝣的能见度系数,控制蜉蝣的能见范围。rp代表当前位置与pbest的距离。rg代表当前位置与gbest的距离。距离的计算如下:
∣
∣
x
i
−
X
i
∣
∣
=
∑
j
=
1
n
(
x
i
j
−
X
i
j
)
2
(3)
||x_i - X_i||=\sqrt{\sum_{j=1}^n(x_{ij}-X_{ij})^2} \tag{3}
∣∣xi−Xi∣∣=j=1∑n(xij−Xij)2(3)
对于算法的运行来说,群中最好的蜉蝣继续表演他们特有的上下舞蹈是很重要的。因此,最好的蜉蝣必须不断地改变它们的速度,在这种情况下,计算如下:
v
i
j
t
+
1
=
v
i
j
t
+
d
∗
r
(4)
v_{ij}^{t+1}=v_{ij}^t + d*r \tag{4}
vijt+1=vijt+d∗r(4)
其中d是舞蹈系数,r为[-1,1]之间的随机数。这种上下移动在算法中引入了一个随机元素。
1.2 雌性蜉蝣的运动
与雄性不同,雌性蜉蝣不会成群聚集。它们会飞到雄性来繁殖。假设
y
i
t
y_i^t
yit为在时刻t时的蜉蝣i,它的位置的更新通过增加速度来更新:
y
i
t
+
1
=
y
i
t
+
v
i
t
+
1
(5)
y_i^{t+1} = y_i^{t} + v_i^{t+1}\tag{5}
yit+1=yit+vit+1(5)
鉴于吸引过程是随机的,我们决定将其建模为一个确定性过程。也就是说,根据它们的健状属性,最好的雌性应该被最好的雄性吸引,第二好的雌性应该被第二好的雄性吸引,等等。因此,考虑到极小化问题,速度的计算如下:
v
i
j
t
+
1
=
{
v
i
j
t
+
a
2
e
−
β
r
m
f
2
(
x
i
j
t
−
y
i
j
t
)
,
i
f
f
(
y
i
)
>
f
(
x
i
)
v
i
j
t
+
f
l
∗
r
i
f
f
(
y
i
)
≤
f
(
x
i
)
(6)
v_{ij}^{t+1} = \begin{cases} v_{ij}^{t} + a_2e^{-\beta r_{mf}^2}(x_{ij}^t - y_{ij}^t) , if\, f(y_i)>f(x_i)\\ v_{ij}^t + fl*r if \, f(y_i)\leq f(x_i) \end{cases}\tag{6}
vijt+1={vijt+a2e−βrmf2(xijt−yijt),iff(yi)>f(xi)vijt+fl∗riff(yi)≤f(xi)(6)
其中
v
i
j
t
v_{ij}^t
vijt代表速度。
y
i
j
t
y_{ij}^t
yijt代表蜉蝣的位置。
a
2
a_2
a2是一个正系数。
β
\beta
β是一个固定的能见系数。
r
m
f
r_{mf}
rmf代表雌性蜉蝣距离雄性蜉蝣的距离。
f
l
fl
fl是一个随机游走系数,当雌性没有被雄性攻击时起作用。r是一个在范围[-1,1]的随机数。
1.3 蜉蝣交配
交叉算子代表了两个蜉蝣的交配过程:从雄性种群中选择一个亲本,从雌性种群中选择一个。选择父母的方式与雄性吸引雌性的方式相同。特别是,选择可以是随机的,也可以基于它们的适应度函数。在后者中,最好的雌性与最好的雄性繁殖,次好的雌性与次好的雄性繁殖。交叉的结果是两个后代,其产生如下:
o
f
f
s
p
r
i
n
g
1
=
L
∗
m
a
l
e
+
(
1
−
L
)
∗
f
e
m
a
l
e
o
f
f
s
p
r
i
n
g
2
=
L
.
f
e
m
a
l
e
+
(
1
−
L
)
∗
m
a
l
e
(7)
offspring1 = L*male+(1-L)*female\\ offspring2 = L.female + (1-L)*male \tag{7}
offspring1=L∗male+(1−L)∗femaleoffspring2=L.female+(1−L)∗male(7)
其中male是父本,female是母本。L是一个特定范围的随机数。
蜉蝣算法流程如下:
Step1 . 初始化雌性蜉蝣,雄性蜉蝣,设定参数。
Step2 . 计算适应度值,并且排序,获取pbest和gbest。
Step3.依次跟新雄性蜉蝣,雌性蜉蝣位置,并且交配。
Step4.计算适应度,并更新pbest和gbest
Step5.是否满足停止条件,如果满足则退出,输出结果,否则重复执行Step3-5。
2.算法结果
3.参考文献
[1]Konstantinos Zervoudakis,Stelios Tsafarakis. A mayfly optimization algorithm[J]. Computers & Industrial Engineering,2020,145.
4.Matlab代码
个人资料介绍