基于帝王蝶优化算法的函数寻优算法

一、理论基础

1、帝王蝶优化算法

受美国帝王蝶迁徙行为的影响,王改革等提出帝王蝶优化算法(Monarch Butterfly Optimization, MBO)。MBO有2个算子:具有局部搜索能力的迁移算子和具有全局搜索能力的调整算子。

(1)迁移算子

迁移算子的目标是从区域1( L a n d 1 {Land}_1 Land1)或区域2( L a n d 2 {Land}_2 Land2)的帝王蝶中培育新的帝王蝶。在整个帝王蝶种群中, L a n d 1 Land_1 Land1中的帝王蝶表示种群1, L a n d 2 Land_2 Land2中的帝王蝶表示种群2。因此,帝王蝶在2个区域的个体总数为 N P NP NP,在种群1中的数量设置为 N P 1 = c e i l ( p ⋅ N P ) (1) {NP}_1=ceil(p\cdot NP)\tag{1} NP1=ceil(pNP)(1)在种群2中的数量设置为 N P 2 = N P − N P 1 (2) {NP}_2=NP-{NP}_1\tag{2} NP2=NPNP1(2)其中, p p p为种群1和种群2中帝王蝶的比例(迁移率),在MBO中设置迁移率 p = 5 12 p=\displaystyle\frac{5}{12} p=125 c e i l ( x ) ceil(x) ceil(x)为舍入到大于或等于 x x x的最接近的整数。
L a n d 1 {Land}_1 Land1 L a n d 2 {Land}_2 Land2的子群分别记为 S u b p o p u l a t i o n 1 Subpopulation_1 Subpopulation1 S u b p o p u l a t i o n 2 Subpopulation_2 Subpopulation2,因此,可将迁移算子描述为 x i , k t + 1 = x r 1 , k t (3) x_{i,k}^{t+1}=x_{r_1,k}^t\tag{3} xi,kt+1=xr1,kt(3) x i , k t + 1 = x r 2 , k t (4) x_{i,k}^{t+1}=x_{r_2,k}^t\tag{4} xi,kt+1=xr2,kt(4)其中, x i , k t + 1 x_{i,k}^{t+1} xi,kt+1表示在第 t + 1 t+1 t+1次迭代 x i x_i xi的第 k k k维,以此确定帝王蝶 i i i的位置; x r 1 , k t x_{r_1,k}^t xr1,kt表示在第 t t t次迭代 x i x_i xi的第 k k k维,即帝王蝶 r 1 r_1 r1的新位置; t t t表示当前迭代次数。此外,帝王蝶 r 1 r_1 r1 r 2 r_2 r2分别从 S u b p o p u l a t i o n 1 Subpopulation_1 Subpopulation1 S u b p o p u l a t i o n 2 Subpopulation_2 Subpopulation2中随机选出。如果 r ≤ p r\leq p rp,利用式(1)生成新的帝王蝶的第 k k k个元素;反之,如果 r > p r>p r>p,利用式(2)生成新生成的帝王蝶的第 k k k个元素。在这个方程中, r = r a n d ⋅ p e r i (5) r=rand\cdot peri\tag{5} r=randperi(5)其中, p e r i peri peri表示迁移周期,在MBO中设置为 1.2 1.2 1.2 r a n d rand rand为从均匀分布 [ 0 , 1 ] [0,1] [0,1]中产生的随机数。

(2)调整算子

调整算子的目标是更新 S u b p o p u l a t i o n 2 Subpopulation_2 Subpopulation2中帝王蝶个体的位置.在所有帝王蝶 j j j中,如果 r a n d ≤ p rand\leq p randp,位置可更新为 x j , k t + 1 = x b e s t , k t (6) x_{j,k}^{t+1}=x_{best,k}^t\tag{6} xj,kt+1=xbest,kt(6)其中,表示在 t + 1 t+1 t+1时刻 x j x_j xj的第 k k k维,即帝王蝶 j j j的位置; x b e s t , k t x_{best,k}^t xbest,kt表示在 t t t时刻 x b e s t x_{best} xbest的第 k k k维,此时在 L a n d 1 Land_1 Land1 L a n d 2 Land_2 Land2当中最好个体的位置; t t t表示当前迭代次数。如果 r a n d > p rand>p rand>p,帝王蝶的位置可更新为 x j , k t + 1 = x r 3 , k t (7) x_{j,k}^{t+1}=x_{r_3,k}^t\tag{7} xj,kt+1=xr3,kt(7)其中, x r 3 , k t x_{r_3,k}^t xr3,kt表示从 S u b p o p u l a t i o n 2 Subpopulation_2 Subpopulation2中随机选取的第 t t t代帝王蝶 x r 3 x_{r_3} xr3的第 k k k维。在此条件下,如果 r a n d > B A R rand>BAR rand>BAR,新生成的帝王蝶的位置可进一步更新为 x j , k t + 1 = x j , k t + 1 + α ( d x k − 0.5 ) (8) x_{j,k}^{t+1}=x_{j,k}^{t+1}+\alpha(dx_k-0.5)\tag{8} xj,kt+1=xj,kt+1+α(dxk0.5)(8)其中, B A R BAR BAR表示调整率,在MBO中 B A R = p BAR = p BAR=p;随机步长 d x = L e v y ( x j t ) (9) dx=Levy(x_j^t)\tag{9} dx=Levy(xjt)(9)可通过莱维飞行计算;权重因子 α = S max ⁡ t 2 (10) \alpha=\frac{S_{\max}}{t^2}\tag{10} α=t2Smax(10)其中, S max ⁡ S_{\max} Smax表示帝王蝶的最大步长, t t t表示当前迭代次数。

2、MBO算法伪代码

MBO算法的伪代码如下图所示。
在这里插入图片描述

二、仿真实验与分析

以Sphere函数(30维)为例,设置种群规模为50,最大迭代次数为1000,结果如下:
在这里插入图片描述

The optimal solution of F1 is : 7.99343     -2.33808     -2.67286      -12.035     -1.74096     -19.5885      2.24095      8.13479      28.5086      2.81635     -14.2082     0.514896     -16.9442      -2.2778       21.616      17.2529      21.2782      2.65153     -20.5722     -12.5978     -8.15434      9.92998     -2.69905     -15.5969     -13.4663     -6.59538     -2.46717     -5.15232       16.567       3.1069
The optimal value of F1 is : 4758.2551

可以看出:MBO算法可以很好地进行寻优。
代码下载链接:https://download.csdn.net/download/weixin_43821559/85226425

三、参考文献

[1] Feng Y, Wang G, Deb S, et al. Monarch butterfly optimization[J]. Neural Computing and Applications, 2019, 31: 1995-2014.
[2] 孙林, 赵婧, 徐久成, 等. 基于改进帝王蝶优化算法的特征选择方法[J]. 模式识别与人工智能, 2020, 33(11): 981-994.

猜你喜欢

转载自blog.csdn.net/weixin_43821559/article/details/124430379