混合粒子群-蝴蝶算法-附代码

混合粒子群-蝴蝶算法


摘要:提出一种粒子群-蝴蝶混合算法(hybrid particle swarm-butterfly algorithm, HPSBA)优化策略。设计了Logistic映射和自适应调节策略来控制参数值,提高了混合算法的寻优速度、收敛精度和全局搜索能力。

1.蝴蝶优化算法

基础蝴蝶优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107855860

2. 改进蝴蝶优化算法

2.1 算法的种群初始化

D D D 维搜索空间中, 随机生成初始解的表达式 为:
X i = L b + ( U b − L b ) ⋅ o (12) X_i=L_b+\left(U_b-L_b\right) \cdot o \tag{12} Xi=Lb+(UbLb)o(12)
式中, X i X_i Xi 表示蝴蝶群体中第 i i i 只蝴蝶 ( i = 1 , 2 , 3 , … (i=1,2,3, \ldots (i=1,2,3,, N ) N) N) 空间位置, N N N 表示初始解的个数; L b , U b L_b, U_b Lb,Ub 分别表 示搜索空间的上界和下界; o o o 表示 ( 0 , 1 ) (0,1) (0,1) 之间的随机 数矩阵。

2.2 算法的全局搜索

混合算法 HPSBA 的全局搜索阶段可表示为:
X i t = ω ⋅ X i t − 1 + ( r 2 × g best  − ω ⋅ X i t − 1 ) × f i ( 13 ) X i t + 1 = X i t + ω ⋅ V i t + C 1 ⋅ r 1 × ( p best  − X i t ) + C 2 ⋅ r 2 × ( g best  − X i t ) ( 14 ) \begin{aligned} X_i^t=& \omega \cdot X_i^{t-1}+\left(r^2 \times g_{\text {best }}-\omega \cdot X_i^{t-1}\right) \times f_i &(13)\\ X_i^{t+1}=& X_i^t+\omega \cdot V_i^t+C_1 \cdot r_1 \times\left(p_{\text {best }}-X_i^t\right) \\ &+C_2 \cdot r_2 \times\left(g_{\text {best }}-X_i^t\right)&(14) \end{aligned} Xit=Xit+1=ωXit1+(r2×gbest ωXit1)×fiXit+ωVit+C1r1×(pbest Xit)+C2r2×(gbest Xit)(13)(14)
式中, ω \omega ω 表示自适应调节参数; V i t , V i t + 1 V_i^t, V_i^{t+1} Vit,Vit+1 分别表示第 i i i 个粒子在 t t t t + 1 t+1 t+1 时刻的速度; C 1 = C 2 = 2 , r 1 、 r 2 C_1=C_2=2, r_1 、 r_2 C1=C2=2,r1r2 的取值为 ( 0 , 1 ) (0,1) (0,1) 中的随机数。

2.3 算法的局部搜索

混合算法 HPSBA 的局部搜索阶段可表示为:
X i t = ω ⋅ X i t − 1 + ( r 2 × X i k − ω ⋅ X j t − 1 ) × f i (15) X_i^t=\omega \cdot X_i^{t-1}+\left(r^2 \times X_i^k-\omega \cdot X_j^{t-1}\right) \times f_i \tag{15} Xit=ωXit1+(r2×XikωXjt1)×fi(15)
式中, X i i X_i{ }_i Xii X j t − 1 X_j^{t-1} Xjt1 分别是从解空间中随机选取的第 j j j 和第 k k k 只蝴蝶; ω \omega ω 表示自适应调节参数。
X i t + 1 = X i t + ω ⋅ V i t + C 1 ⋅ r 1 × ( p best  − X i t ) + C 2 ⋅ r 2 × ( g best  − X i t ) (16) \begin{aligned} X_i^{t+1}=& X_i^t+\omega \cdot V_i^t+C_1 \cdot r_1 \times\left(p_{\text {best }}-X_i^t\right) \\ &+C_2 \cdot r_2 \times\left(g_{\text {best }}-X_i^t\right) \end{aligned} \tag{16} Xit+1=Xit+ωVit+C1r1×(pbest Xit)+C2r2×(gbest Xit)(16)
式中, C 1 = C 2 = 2 , r 1 、 r 2 C_1=C_2=2, r_1 、 r_2 C1=C2=2,r1r2 的取值为 ( 0 , 1 ) (0,1) (0,1) 中的随机 数。

2.4 控制参数 c 和 ω

HPSBA 中控制参数 c c c 的表达式为:
c ( t ) = 4 ⋅ c ⋅ ( 1 − c ) (17) c(t)=4 \cdot c \cdot(1-c) \tag{17} c(t)=4c(1c)(17)
惯性权重系数 ω \omega ω 对 PSO 算法的粒子飞行速度 有着直接的影响, 能够调整算法的全局搜索和局部 搜索能力。本文采用自适应的调整策略为:
ω ( t ) = ω max ⁡ − ( ( ω max ⁡ − ω min ⁡ ) ⋅ T i ) / T max ⁡ (18) \omega(t)=\omega^{\max }-\left(\left(\omega^{\max }-\omega^{\min }\right) \cdot T_i\right) / T_{\max } \tag{18} ω(t)=ωmax((ωmaxωmin)Ti)/Tmax(18)
式中, ω max ⁡ = 0.9 , ω min ⁡ = 0.2 , T max ⁡ \omega^{\max }=0.9, \omega^{\min }=0.2, T_{\max } ωmax=0.9,ωmin=0.2,Tmax 为算法的最大 迭代次数。

3.实验结果

请添加图片描述

4.参考文献

[1]张孟健,汪敏,王霄,覃涛,杨靖.混合粒子群-蝴蝶算法的WSN节点部署研究[J/OL].计算机工程与科学:1-9[2021-11-04].http://kns.cnki.net/kcms/detail/43.1258.TP.20210916.1048.002.html.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/127148993