智能优化算法:蜉蝣算法 - 附代码

时间:2024-06-01 09:54:45

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(pbestijxijt)+a2eβrg2(gbestjxijt)(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} xiXi=j=1n(xijXij)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+dr(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(xijtyijt),iff(yi)>f(xi)vijt+flriff(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=Lmale+(1L)femaleoffspring2=L.female+(1L)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代码

https://mianbaoduo.com/o/bread/aZiZm5o=