请参考这里。
引入余弦相似度衡量最优蝴蝶位置与周围蝴蝶的分布情况,通过构造当前蝴蝶个体位置和最优个体之间的向量,余弦相似度为分布情况的指标,更新余弦相似度较高且适应度较差的蝴蝶个体位置,既加快算法收敛的速度,也保持了种群的多样性。策略具体细节如下:
首先构建 a , b \boldsymbol{a,b} a,b向量: a = x i t − g ∗ b = x j t − g ∗ (1) \begin{aligned}\boldsymbol a=\boldsymbol x_i^t-\boldsymbol g^*\\ \boldsymbol b=\boldsymbol x_j^t-\boldsymbol g^*\end{aligned}\tag{1} a=xit−g∗b=xjt−g∗(1)其中,第 t t t次迭代的当前蝴蝶位置,记为 x i t \boldsymbol x_i^t xit。 x j t \boldsymbol x_j^t xjt表示第 t t t次迭代其他蝴蝶位置中的一个, g ∗ \boldsymbol g^* g∗为第 t t t代中最优蝴蝶的位置。
定义 cos j ( a , b ) \cos_j(\boldsymbol a, \boldsymbol b) cosj(a,b)为两个向量之间的余弦相似度,取值范围为 [ − 1 , 1 ] [-1,1] [−1,1],个体位置之间相似度计算公式为: cos j ( a , b ) = a ⋅ b ∣ a ∣ ∣ b ∣ (2) \cos_j(\boldsymbol a, \boldsymbol b)=\frac{\boldsymbol{a\cdot b}}{|\boldsymbol a||\boldsymbol b|}\tag{2} cosj(a,b)=∣a∣∣b∣a⋅b(2)其中,分子为向量 a , b \boldsymbol a,\boldsymbol b a,b的内积,分母为向量 a , b \boldsymbol a, \boldsymbol b a,b的模之积。
位置更新公式如下: { x j t = g ∗ + α 1 n ∣ ∣ x j t ∣ ∣ 2 R r g ∗ f ( x j t ) ≥ f ( x i t ) x i t = x i t + δ R e x i t o t h e r w i s e (3) \begin{dcases}\boldsymbol x_j^t=\boldsymbol g^*+\alpha\frac{1}{n||\boldsymbol x_j^t||_2}\boldsymbol R_r\boldsymbol g^*\quad f(\boldsymbol x_j^t)≥f(\boldsymbol x_i^t)\\\boldsymbol x_i^t=\boldsymbol x_i^t+\delta\boldsymbol R_e\boldsymbol x_i^t\quad \quad \quad \quad \,\,\,\,otherwise\end{dcases}\tag{3} ⎩⎨⎧xjt=g∗+αn∣∣xjt∣∣21Rrg∗f(xjt)≥f(xit)xit=xit+δRexitotherwise(3)其中 f ( x i t ) f(\boldsymbol x_i^t) f(xit)和 f ( x j t ) f(\boldsymbol x_j^t) f(xjt)分别为蝴蝶个体 x i t \boldsymbol x_i^t xit和 x j t \boldsymbol x_j^t xjt的适应度值, α \alpha α为旋转因子; R r ∈ R n × n \boldsymbol R_r∈\boldsymbol R^{n×n} Rr∈Rn×n是一个其元素取值在 [ − 1 , 1 ] [-1,1] [−1,1]之间均匀分布的随机矩阵, ∣ ∣ ⋅ ∣ ∣ ||\boldsymbol\cdot|| ∣∣⋅∣∣为向量2-范数,理论上能将位置旋转到以半径为 α \alpha α的任何位置。 R e ∈ R n × n R_e∈R^{n×n} Re∈Rn×n是一个其非零元素取值服从高斯分布随机对角矩阵,从理论上看,能将位置伸缩到服从 δ \delta δ的范围内。
本文采用文献[1]所提出的自适应机制来描述切换概率,并且做了改进。如公式(1)所示。 P i t = P m i n + ( l o g ( ∣ f m i n t ∣ ) + ∣ f m i n t ∣ l o g ( ∣ f i t ∣ ) + ∣ f i t ∣ ) × ( P m a x − P m i n ) (4) P_i^t=P_{min}+\left(\frac{log(|f_{min}^t|)+|f_{min}^t|}{log(|f_i^t|)+|f_i^t|}\right)×(P_{max}-P_{min})\tag{4} Pit=Pmin+(log(∣fit∣)+∣fit∣log(∣fmint∣)+∣fmint∣)×(Pmax−Pmin)(4)其中, P i t P_i^t Pit是在第 t t t次迭代中第 i i i只蝴蝶个体位置的切换概率, P m i n P_{min} Pmin和 P m a x P_{max} Pmax分别是切换概率的最小值和最大值, f m i n t f_{min}^t fmint表示第 t t t次迭代的最好适应度, f i t f_i^t fit表示在第 t t t次迭代第 i i i只蝴蝶的适应度。蝴蝶位置对应的适应度接近最优的适应度时,其切换的概率接近大值,更容易进入全局的引导;反之当前个体的适应度与最好的适应度相差较大时,其转换概率接近最小值,更容易进入局部的引导。这样有利于将好的个体引导全局,较差的个体得到更多的机会引导。
为了协调算法的全局和局部搜索能力引入了自适应惯性权重(5)。 w = β × ( 1 − exp ( ∣ f m i n t ∣ ) + ∣ f m i n t ∣ exp ( ∣ f i t ∣ ) + ∣ f i t ∣ ) + K (5) w=\beta×\left(1-\frac{\exp(|f_{min}^t|)+|f_{min}^t|}{\exp(|f_i^t|)+|f_i^t|}\right)+K\tag{5} w=β×(1−exp(∣fit∣)+∣fit∣exp(∣fmint∣)+∣fmint∣)+K(5)其中, K K K为调整过的 s i g m o i d sigmoid sigmoid函数(6)。 K = 1 − 1 / ( 1 + exp ( − ( − 15 t − 7 M a x _ i t e r ) / M a x _ i t e r ) ) (6) K=1-1/(1+\exp(-(-15t-7Max\_iter)/Max\_iter))\tag{6} K=1−1/(1+exp(−(−15t−7Max_iter)/Max_iter))(6) K K K值是调整过的 s i g m o i d sigmoid sigmoid函数,该函数是神经网络中最常用的激活函数之一。该函数在线性和非线性之间展现出极好的平衡性,拥有平滑的上界域和下边界域。在迭代前期参数 K K K能保持较大值,延长初期阶段的全局搜索能力和强度。伸缩的范围较大,保留个体的多样性。中期K值随着迭代次数的增加而减少,从而加快算法的收敛速度。在迭代后期的一段保持一个较小的权重,延长了迭代后期的局部搜索时间,更有利于进行局部搜索,更新后的全局阶段搜索过程用公式(7)表示。 x i t + 1 = w x i t + ( r 2 × g ∗ − x i t ) × f (7) \boldsymbol x_i^{t+1}=w\boldsymbol x_i^t+(\boldsymbol r^2×\boldsymbol g^*-\boldsymbol x_i^t)×f\tag{7} xit+1=wxit+(r2×g∗−xit)×f(7)其中,参数 β \beta β为影响程度因子。蝴蝶个体适应度接近当前最好的适应度时,其权重接近最小值,较小的权重有利于进行局部开发;反之当前个体的适应度与最好的适应度相差较大时,其权重接近最大值,保留当前个体的更多信息,下一次迭代保持较强的全局搜索能力。
多策略改进蝴蝶优化算法(MSBOA)的基本流程如下:
Step 1:初始化。初始化算法参数,随机生成种群位置,计算适应度并择优保存。
Step 2:蝴蝶位置更新阶段。根据式(1)构建向量,并根据式(2)计算蝴蝶个体位置的余弦相似度,设置阈值 C C C将相似度高于阈值的蝴蝶位置通过式(3)进行位置更新。
Step 3: 计算当前个体适应度,并根据式(4)计算 P P P值判断当前迭代当前个体是进行全局搜索还是局部搜索,并通过式(5)计算当前个体的自适应惯性权重,更新蝴蝶位置。
Step 4: 计算位置更新后每只蝴蝶所在位置适应度,并且更新最优位置。
Step 5: 重复Step 2、Step 3和Step 4的更新迭代过程,若达到设置收敛精度要求或规定的最大迭代次数,终止算法并输出最优解。
将MSBOA算法与基于余弦相似度位置更新策略的BOA1算法,结合动态调整概率策略的BOA2算法,增加自适应混合惯性权重的BOA3算法以及基本的BOA算法进行比较,验证不同改进策略的有效性。独立运行30次。以F1~F3为例。
下图为对函数F1的寻优对比曲线。
5种算法的最大值、最小值、平均值及标准差显示如下:
函数:F1
BOA:最大值: 1.4873e-11,最小值:1.1842e-11,平均值1.3085e-11,标准差:7.8596e-13
BOA1:最大值: 1.2976e-12,最小值:4.8647e-14,平均值2.5993e-13,标准差:2.4962e-13
BOA2:最大值: 1.4247e-11,最小值:1.1195e-11,平均值1.2618e-11,标准差:8.3223e-13
BOA3:最大值: 5.7668e-131,最小值:0,平均值1.9223e-132,标准差:1.0529e-131
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
下图为对函数F2的寻优对比曲线。
5种算法的最大值、最小值、平均值及标准差显示如下:
函数:F2
BOA:最大值: 5.7262e-09,最小值:1.999e-09,平均值4.5713e-09,标准差:1.2576e-09
BOA1:最大值: 1.2196e-09,最小值:1.0712e-10,平均值3.6748e-10,标准差:2.2777e-10
BOA2:最大值: 8.7251e-09,最小值:5.2145e-09,平均值6.5784e-09,标准差:8.9912e-10
BOA3:最大值: 8.1849e-282,最小值:0,平均值2.7283e-283,标准差:0
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
下图为对函数F3的寻优对比曲线。
5种算法的最大值、最小值、平均值及标准差显示如下:
函数:F3
BOA:最大值: 1.3987e-11,最小值:1.0692e-11,平均值1.2555e-11,标准差:8.4149e-13
BOA1:最大值: 7.789e-12,最小值:2.1539e-12,平均值5.4507e-12,标准差:1.8653e-12
BOA2:最大值: 1.3196e-11,最小值:8.5686e-12,平均值1.0695e-11,标准差:1.1149e-12
BOA3:最大值: 1.6424e-56,最小值:0,平均值5.4747e-58,标准差:2.9986e-57
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
将MSBOA算法与向量粒子群算法(Phasor Particle Swarm Optimization,PPSO)[2],改进的灰狼优化算法(An improved grey wolf optimization,IGWO)[3],对数惯性权重和高斯差分变异策略的鲸群算法(Whale Optimization Algorithm based on Logarithmic inertia weight and Gaussian difference mutation,IGWOA)[4]以 及 优 选 策 略 的 自 适 应 蚁 狮 优 化 算 法[5](Preferred Strategy Self-adaptive ALO,PSALO),基于折射反向学习与自适应控制因子的改进樽海鞘群算法(Modified SSA Based on Refracted Oppositional Learning and Adaptive Control Factor,RCSSA)[6]。独立运算30次进行比较,验证改进算法的优越性。以F1~F3为例。
下图为对函数F1的寻优对比曲线。
6种算法的最大值、最小值、平均值及标准差显示如下:
函数:F1
PPSO:最大值: 0.1012,最小值:0.00010734,平均值0.022354,标准差:0.024799
IGWO:最大值: 5.7749e-315,最小值:5.8029e-316,平均值2.8935e-315,标准差:0
IGWOA:最大值: 0,最小值:0,平均值0,标准差:0
PSALO:最大值: 1.7605e-09,最小值:2.4675e-11,平均值3.8461e-10,标准差:4.3313e-10
RCSSA:最大值: 0,最小值:0,平均值0,标准差:0
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
下图为对函数F2的寻优对比曲线。
6种算法的最大值、最小值、平均值及标准差显示如下:
函数:F2
PPSO:最大值: 2.3202,最小值:0.011792,平均值0.66735,标准差:0.51065
IGWO:最大值: 3.5055e-158,最小值:9.976e-159,平均值1.9556e-158,标准差:6.525e-159
IGWOA:最大值: 1.5589e-186,最小值:3.886e-198,平均值6.6509e-188,标准差:0
PSALO:最大值: 2.4964e-05,最小值:2.4291e-06,平均值7.7968e-06,标准差:5.0552e-06
RCSSA:最大值: 2.3135e-173,最小值:1.6686e-173,平均值1.999e-173,标准差:0
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
下图为对函数F3的寻优对比曲线。
6种算法的最大值、最小值、平均值及标准差显示如下:
函数:F3
PPSO:最大值: 1.2508,最小值:1.1228e-07,平均值0.14186,标准差:0.26569
IGWO:最大值: 8.9925e-303,最小值:1.2995e-304,平均值1.5428e-303,标准差:0
IGWOA:最大值: 0,最小值:0,平均值0,标准差:0
PSALO:最大值: 3.3382e-08,最小值:3.3207e-09,平均值1.4187e-08,标准差:8.2333e-09
RCSSA:最大值: 0,最小值:0,平均值0,标准差:0
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
综上可知,对于以上基本测试函数,MSBOA都有较优的稳定性以及寻优能力,有效的解决BOA算法求解精度不高的问题。
[1] 宋钰,石立宝. 参数动态调整的自适应布谷鸟算法[J]. 计算机工程与应用, 2020, v.56;No.966(23):67-73.
[2] Ghasemi M , Akbari E , Rahimnejad A , et al. Phasor particle swarm optimization: a simple and efficient variant of PSO[J]. Soft Computing, 2018.
[3] 龙文, 伍铁斌. 协调探索和开发能力的改进灰狼优化算法[J]. 控制与决策, 2017, 32(010):1749-1757.
[4] 陈雷,尹钧圣. 高斯差分变异和对数惯性权重优化的鲸群算法[J]. 计算机工程与应用, 2021, 57(2): 77-90.
[5] 刘景森, 霍宇, 李煜. 优选策略的自适应蚁狮优化算法[J]. 模式识别与人工智能, 2020(2).
[6] 范千、陈振健、夏樟华. 一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法[J]. 哈尔滨工业大学学报, 2020, v.52(10):189-197.
下载文件列表:
下载地址:
https://download.csdn.net/download/weixin_43821559/18576731