文章目录
一、理论基础
1、花朵授粉算法(FPA)
请参考这里。
2、基于混合策略改进的花朵授粉算法
(1)自适应转换概率策略
本文提出了一种新的策略,通过改进转换概率
p
p
p的取值实现动态调整寻优过程。具体的转换概率计算公式为:
p
(
t
)
=
{
p
min
+
(
p
max
−
p
min
)
⋅
cos
(
π
2
⋅
t
T
)
,
R
1
<
0.5
p
min
+
(
p
max
−
p
min
)
⋅
F
i
t
n
e
s
s
max
,
t
−
F
i
t
n
e
s
s
i
,
t
F
i
t
n
e
s
s
max
,
t
−
F
i
t
n
e
s
s
min
,
t
,
R
1
≥
0.5
(1)
p(t)=\begin{dcases}p_{\min}+(p_{\max}-p_{\min})\cdot\cos\left(\frac\pi2\cdot\frac tT\right),\quad\quad\quad\quad\quad\quad\quad\, R_1<0.5\\p_{\min}+(p_{\max}-p_{\min})\cdot\frac{Fitness_{\max,t}-Fitness_{i,t}}{Fitness_{\max,t}-Fitness_{\min,t}},\quad R_1≥0.5\end{dcases}\tag{1}
p(t)=⎩⎪⎪⎨⎪⎪⎧pmin+(pmax−pmin)⋅cos(2π⋅Tt),R1<0.5pmin+(pmax−pmin)⋅Fitnessmax,t−Fitnessmin,tFitnessmax,t−Fitnessi,t,R1≥0.5(1)其中,
p
min
p_{\min}
pmin和
p
max
p_{\max}
pmax分别是是转换概率的最小值和最大值,分别取相关文献中效果较好的0.2和0.8,
t
t
t为种群当前迭代次数,
T
T
T为种群最大迭代次数,
F
i
t
n
e
s
s
min
,
t
Fitness_{\min,t}
Fitnessmin,t和
F
i
t
n
e
s
s
max
,
t
Fitness_{\max,t}
Fitnessmax,t分别是种群第
t
t
t次迭代过程中花粉个体的最小适应度值和最大适应度值,
F
i
t
n
e
s
s
i
,
t
Fitness_{i,t}
Fitnessi,t是第
t
t
t次迭代中当前花粉个体的适应度值,
R
1
R_1
R1为随机扰动因子,是
[
0
,
1
]
[0,1]
[0,1]之间的随机数,用来控制公式的选择。
从公式中可知,
R
1
<
0.5
R_1<0.5
R1<0.5时,转换概率
p
p
p的取值随着迭代次数的增加而从1到0非线性递减,在迭代初期
p
p
p的取值较大,算法主要执行全局搜索,收敛速度较快,在解空间中的探索范围更大,在迭代后期
p
p
p的取值较小,算法以局部搜索为主,在解空间中搜索更加细致,更容易找到全局最优解。同时根据
cos
\cos
cos函数在
[
0
,
π
2
]
\left[0,\frac\pi2\right]
[0,2π]之间的取值变化可知,前期变化速度稍快,后期变化速度稍慢,这种特性有利于提高种群的收敛能力;
R
1
≥
0.5
R_1≥0.5
R1≥0.5时,转换概率
p
p
p受到适应度值得影响,前期种群中的适应度值差异很大,
p
p
p取值较大,以全局搜索为主,后期算法处于收敛过程,适应度值差异逐渐减小,
p
p
p取较小的值,主要进行局部搜索。上述公式在考虑迭代次数影响的同时也将适应度值作为转换概率p的取值依据,有利于提高算法的整体寻优效果。
(2)动态全局搜索策略
本文提出了一种全新的动态全局搜索策略,具体公式如下: x i , t = { x b e s t , t − A ⋅ ∣ C ⋅ x b e s t , t − x i , t ∣ , R 2 < p x i , t + l e v y ⋅ ( x b e s t , t − x i , t ) , R 2 ≥ p (2) x_{i,t}=\begin{dcases}x_{best,t}-A\cdot|C\cdot x_{best,t}-x_{i,t}|,\quad R_2<p\\x_{i,t}+levy\cdot(x_{best,t}-x_{i,t}),\quad\quad\, R_2≥p\end{dcases}\tag{2} xi,t={xbest,t−A⋅∣C⋅xbest,t−xi,t∣,R2<pxi,t+levy⋅(xbest,t−xi,t),R2≥p(2)其中, x i , t x_{i,t} xi,t和 x b e s t , t x_{best,t} xbest,t分别是算法进行第 t t t次迭代时的当前个体和花粉种群中的最优个体, R 2 R_2 R2为随机扰动因子,是 [ 0 , 1 ] [0,1] [0,1]之间的随机数,用来控制公式的选择, l e v y levy levy是莱维飞行步长函数。 A A A和 C C C都是系数向量, a a a是收敛因子,随着算法迭代次数从2线性递减到0, r 1 r_1 r1和 r 2 r_2 r2取 [ 0 , 1 ] [0,1] [0,1]之间的随机数, A A A和 C C C按照如下公式计算: A = 2 a ⋅ r 1 − a (3) A=2a\cdot r_1-a\tag{3} A=2a⋅r1−a(3) C = 2 ⋅ r 2 (4) C=2\cdot r_2\tag{4} C=2⋅r2(4)根据公式可知,迭代初期 p p p的取值较大, R 2 < p R_2<p R2<p概率大,算法主要执行(5)的第一个式子,该式子定义了最优花粉引导其余花粉的更新过程,种群中的个体可以快速到达最优值附近,有利于加快算法的收敛速度。随着迭代过程的不断进行, p p p的取值逐渐减小,此时 R 2 ≥ p R_2≥p R2≥p的概率增大,算法按照第二个式子进行更新,该公式为原始FPA算法的莱维飞行机制,在算法后期用于维持花朵种群的多样性,防止算法陷入局部最优。
(3)局部搜索增强策略
在解空间中,本文对于最优值的位置并不确定,为了进一步增强局部搜索的性能,本文筛选出适应度值排名前三的个体作为优质花粉,不单单使用一个最优值而是利用三者位置的综合信息预测全局最优解的潜在位置,引导其余劣质花粉向着全局最优位置更新,增强寻优过程中优质个体之间的信息交互。更新后的计算公式如下: D 1 = ∣ X b e s t , t − X i , t ∣ (5) D_1=|X_{best,t}-X_{i,t}|\tag{5} D1=∣Xbest,t−Xi,t∣(5) D 2 = ∣ X s e c o n d b e s t , t − X i , t ∣ (6) D_2=|X_{secondbest,t}-X_{i,t}|\tag{6} D2=∣Xsecondbest,t−Xi,t∣(6) D 3 = ∣ X t h i r d b e s t , t − X i , t ∣ (7) D_3=|X_{thirdbest,t}-X_{i,t}|\tag{7} D3=∣Xthirdbest,t−Xi,t∣(7) D = D 1 + D 2 + D 3 3 (8) D=\frac{D_1+D_2+D_3}{3}\tag{8} D=3D1+D2+D3(8) x i , t = x i , t + ω ⋅ ε ⋅ ( x j t − x k t ) + ( 1 − ω ) ⋅ e b l ⋅ cos ( 2 π l ) ⋅ D ⋅ l e v y (9) x_{i,t}=x_{i,t}+\omega\cdot\varepsilon\cdot(x_j^t-x_k^t)+(1-\omega)\cdot e^{bl}\cdot\cos(2\pi l)\cdot D\cdot levy\tag{9} xi,t=xi,t+ω⋅ε⋅(xjt−xkt)+(1−ω)⋅ebl⋅cos(2πl)⋅D⋅levy(9)其中, X b e s t , t X_{best,t} Xbest,t、 X s e c o n d b e s t , t X_{secondbest,t} Xsecondbest,t、 X t h i r d b e s t , t X_{thirdbest,t} Xthirdbest,t分别是排名前三的优质花粉个体; x i , t x_{i,t} xi,t是第 t t t次迭代中的当前花粉个体, x j t x_j^t xjt和 x k t x_k^t xkt是从所有解中随机选择的两个解向量, ε \varepsilon ε是 [ 0 , 1 ] [0,1] [0,1]之间的随机变量, ω \omega ω是权重系数,用于控制两种更新方式的比例,这里取 ω = 0.5 \omega=0.5 ω=0.5, b b b是定义对数螺旋形状的常量系数, l l l表示 [ − 1 , 1 ] [-1,1] [−1,1]区间内的随机数, l e v y levy levy是莱维飞行步长函数。
(4)花粉越界修正策略
在原始FPA算法中,当新位置超出搜索范围时,通常不做处理或将其替换为该范围,这大大降低了算法的优化效率。本文提出了一种全新的越界修正策略,将越界花粉移动至搜索空间中的随机位置,有助于提升花朵授粉算法的探索能力。越界花粉的新位置根据计算式(10)进行更新: x i , t = { u b + R 3 ⋅ u b − x i , t x i , t ⋅ u b , x i , t > u b l b + R 3 ∣ l b − x i , t x i , t ⋅ l b ∣ , x i , t < l b (10) x_{i,t}=\begin{dcases}ub+R_3\cdot\frac{ub-x_{i,t}}{x_{i,t}}\cdot ub,\quad x_{i,t}>ub\\lb+R_3\left|\frac{lb-x_{i,t}}{x_{i,t}}\cdot lb\right|,\quad\,\,\,\, x_{i,t}<lb\end{dcases}\tag{10} xi,t=⎩⎪⎪⎨⎪⎪⎧ub+R3⋅xi,tub−xi,t⋅ub,xi,t>ublb+R3∣∣∣∣xi,tlb−xi,t⋅lb∣∣∣∣,xi,t<lb(10)其中, u b ub ub和 l b lb lb分别是上界和下界, R 3 R_3 R3是 [ 0 , 1 ] [0,1] [0,1]之间的随机数。
(5)HSFPA算法流程
Step 1:设置种群大小
N
N
N、最大迭代次数
T
T
T、测试函数维度
d
i
m
dim
dim等参数,随机产生初始花粉的位置。
Step 2:执行自适应转换概率策略,利用式(1)计算转换概率
p
p
p,计算结束进入Step 3。
Step 3:如果
r
a
n
d
<
p
rand<p
rand<p,算法进入异花授粉过程,此时执行动态全局搜索策略,按照式(2)更新花粉个体的位置坐标;如果
r
a
n
d
≥
p
rand≥p
rand≥p,算法进入自花授粉过程,此时执行局部搜索增强策略,采用式(9)更新花粉个体的位置坐标。
Step 4:检查种群中的个体是否越界,如果发生越界,则利用式(10)执行花粉越界修正策略,否则进入Step 5。
Step 5:根据新解计算个体的适应度值并更新当前的花粉个体。
Step 6:判断是否满足算法终止条件,如果满足条件,则转到Step 7,否则转到Step 2,进行新一轮的迭代更新。
Step 7:输出全局最优解和相应的最优值,算法结束。
二、实验仿真与分析
为了验证本文改进算法HSFPA在搜索精度方面的寻优效果,将其与PSO、CS和FPA在文献[1]中表1给出的10个标准测试函数上进行仿真实验对比。实验中,各算法设置种群数量为50,最大迭代次数1000次,所有算法在每个测试函数上均独立运行20次。结果显示如下:
函数:F1
PSO:最差值: 0.0023076,最优值:0.00042548,平均值:0.0012368,标准差:0.00052534
CS:最差值: 0.021127,最优值:0.0053475,平均值:0.0096371,标准差:0.0042684
FPA:最差值: 300.9477,最优值:85.4494,平均值:158.556,标准差:48.2897
HSFPA:最差值: 1.7245e-145,最优值:1.0722e-156,平均值:9.2541e-147,标准差:3.8443e-146
函数:F2
PSO:最差值: 1620.3935,最优值:299.513,平均值:917.8702,标准差:380.0512
CS:最差值: 103.7283,最优值:32.1437,平均值:57.6949,标准差:19.1377
FPA:最差值: 1619212.0163,最优值:816070.7196,平均值:1286321.6912,标准差:232980.4071
HSFPA:最差值: 1.148e-139,最优值:7.8161e-158,平均值:6.4148e-141,标准差:2.5688e-140
函数:F3
PSO:最差值: 72.8474,最优值:32.0226,平均值:51.3455,标准差:12.0448
CS:最差值: 94.1733,最优值:66.4839,平均值:83.0519,标准差:9.3855
FPA:最差值: 155.627,最优值:101.1569,平均值:131.4592,标准差:13.4394
HSFPA:最差值: 114.442,最优值:0,平均值:5.7221,标准差:25.59
函数:F4
PSO:最差值: 0.027548,最优值:0.00071342,平均值:0.011231,标准差:0.0084143
CS:最差值: 0.1683,最优值:0.060091,平均值:0.10076,标准差:0.027091
FPA:最差值: 3.1338,最优值:1.9264,平均值:2.4492,标准差:0.34814
HSFPA:最差值: 0.007636,最优值:0,平均值:0.0003818,标准差:0.0017075
函数:F5
PSO:最差值: 6.7472e-25,最优值:8.7427e-42,平均值:3.3999e-26,标准差:1.5081e-25
CS:最差值: 1.2467e-28,最优值:9.7706e-41,平均值:7.7328e-30,标准差:2.8237e-29
FPA:最差值: 2.4599e-14,最优值:1.9138e-19,平均值:1.9468e-15,标准差:5.51e-15
HSFPA:最差值: 0,最优值:0,平均值:0,标准差:0
函数:F6
PSO:最差值: 2.816,最优值:0.021167,平均值:1.7172,标准差:0.67666
CS:最差值: 7.7462,最优值:2.0886,平均值:3.8792,标准差:1.6639
FPA:最差值: 17.0484,最优值:11.3886,平均值:13.7436,标准差:1.3761
HSFPA:最差值: 4.4409e-15,最优值:8.8818e-16,平均值:3.5527e-15,标准差:1.5783e-15
函数:F7
PSO:最差值: 776.3293,最优值:51.9794,平均值:316.8911,标准差:196.8954
CS:最差值: 0.097709,最优值:0.038891,平均值:0.064006,标准差:0.016908
FPA:最差值: 30.2219,最优值:17.6525,平均值:24.4055,标准差:4.0209
HSFPA:最差值: 7.1659e-11,最优值:1.6496e-36,平均值:3.5829e-12,标准差:1.6023e-11
函数:F8
PSO:最差值: -1589.6932,最优值:-1745.2912,平均值:-1671.1009,标准差:44.235
CS:最差值: -1679.9196,最优值:-1759.6293,平均值:-1704.8318,标准差:20.9123
FPA:最差值: -1608.071,最优值:-1658.9411,平均值:-1631.9023,标准差:13.3438
HSFPA:最差值: -1559.6463,最优值:-1957.8329,平均值:-1812.3042,标准差:132.8986
函数:F9
PSO:最差值: -6.3469,最优值:-9.5107,平均值:-8.2313,标准差:0.86688
CS:最差值: -8.1529,最优值:-9.5026,平均值:-8.8024,标准差:0.31617
FPA:最差值: -7.2974,最优值:-8.3783,平均值:-7.816,标准差:0.28056
HSFPA:最差值: -7.2047,最优值:-9.3282,平均值:-8.389,标准差:0.59405
函数:F10
PSO:最差值: 16.1061,最优值:3.482e-12,平均值:0.80531,标准差:3.6014
CS:最差值: 1.8225e-09,最优值:9.1093e-11,平均值:5.5707e-10,标准差:4.8111e-10
FPA:最差值: 0.0091483,最优值:0.0012465,平均值:0.0032839,标准差:0.001799
HSFPA:最差值: 5.2098e-237,最优值:5.0027e-267,平均值:2.605e-238,标准差:0
实验结果表明,本文所提基于混合策略改进的花朵授粉算法HSFPA与其他算法相比具有更好的表现,证明了本文的改进策略能够促进传统FPA算法寻优性能的有效提升。
三、参考文献
[1] 李克文, 梁永琪, 李绍辉. 基于混合策略改进的花朵授粉算法[J]. 计算机应用研究, 2022, 39(2): 361-366.