文章目录
一、理论基础
1、花授粉算法
请参考这里。
2、改进后的花授粉算法
(1)动态概率 P α P_\alpha Pα
为了平衡FPA算法的全局搜索和局部搜索,使算法更加灵活,将固定转换概率0.8更改为随着迭代次数自适应变化的动态转换概率 P α P_\alpha Pα,即 P α = w max − ( w max − w min ) α (1) P_\alpha=w_{\max}-(w_{\max}-w_{\min})\alpha\tag{1} Pα=wmax−(wmax−wmin)α(1) α \alpha α由式(2)计算得到,即 α = sin ( π 2 t t max ) (2) \alpha=\sin(\frac\pi2\frac{t}{t_{\max}})\tag{2} α=sin(2πtmaxt)(2)其中, w max w_{\max} wmax与 w min w_{\min} wmin分别为 w w w的最大值与最小值; t t t为当前迭代次数, t max t_{\max} tmax为最大迭代次数。本文取 w max = 0.9 , w min = 0.2 w_{\max}=0.9,w_{\min}=0.2 wmax=0.9,wmin=0.2。在迭代初期, P α P_\alpha Pα的取值较大,所以算法侧重于全局搜索,有效地增强了全局搜索能力,使得种群中的个体更靠近最优解;随着迭代深入, P α P_\alpha Pα的值越来越小,使算法更倾向局部精细的搜索,有利于算法后期快速找到最优解。
(2)新型动态因子 ω \omega ω
为了提高FPA算法跳出局部最优的能力,在异花授粉及全局搜索过程基础上引入新型动态因子 ω \omega ω,调节种群迭代过程中搜索个体对当前母系花粉位置信息的依赖性。新型动态因子 ω \omega ω的计算公式如(3)式所示: ω = ω 1 ϑ (3) \omega=\omega_1\vartheta\tag{3} ω=ω1ϑ(3)其中: ω 1 = − t t max lg t t max (4) \omega_1=-\frac{t}{t_{\max}}\lg\frac{t}{t_{\max}}\tag{4} ω1=−tmaxtlgtmaxt(4)计算得 ω 1 \omega_1 ω1的取值范围为 [ 0 , 0.3679 ] [0,0.3679] [0,0.3679],即 ϑ = ω max ω 1 max = 2.7181 (5) \vartheta=\frac{\omega_{\max}}{\omega_{1\max}}=2.7181\tag{5} ϑ=ω1maxωmax=2.7181(5)迭代前期动态因子 ω \omega ω值较小,削弱母系花粉位置对算法的影响,让花粉更自由地以Levy飞行在搜索空间内大范围地进行搜索,增加全局搜索的能力。迭代后期,动态因子 ω \omega ω减小,使跳出局部最优的能力得到增强。改进后的异花授粉公式为 X i t + 1 = ω X i t + L ( X i t − g best ) (6) \boldsymbol X_i^{t+1}=\omega\boldsymbol X_i^t+L(\boldsymbol X_i^t-\boldsymbol g_{\text{best}})\tag{6} Xit+1=ωXit+L(Xit−gbest)(6)
(3)正弦余弦步长因子 μ \mu μ
花授粉算法局部搜索机制中步长因子
ε
\varepsilon
ε为
(
0
,
1
)
(0,1)
(0,1)中的随机数,算法迭代到后期容易导致求解精度低、易陷入局部最优等问题,所以本文提出了正弦余弦步长因子
μ
\mu
μ
μ
=
{
r
1
sin
r
2
r
3
>
0.5
r
1
cos
r
2
r
3
≤
0.5
(7)
\mu=\begin{dcases}r_1\sin r_2\quad r_3>0.5\\r_1\cos r_2\quad r_3≤0.5\end{dcases}\tag{7}
μ={r1sinr2r3>0.5r1cosr2r3≤0.5(7)
r
1
r_1
r1由式(8)计算可得,即
r
1
=
a
−
a
t
t
max
(8)
r_1=a-a\frac{t}{t_{\max}}\tag{8}
r1=a−atmaxt(8)其中,
a
=
1
a=1
a=1;
r
2
∈
[
0
,
2
π
]
r_2\in[0,2\pi]
r2∈[0,2π];
r
3
r_3
r3为
[
0
,
1
]
[0,1]
[0,1]之间的随机数。
图1为步长因子随迭代时间
t
t
t变化图。由图1可知:若迭代初期出现自花授粉的过程,较大的步长因子,使得算法前期具有较好的跳出局部最优的能力;随着迭代次数增加,动态概率
P
α
P_\alpha
Pα逐渐减小,使得算法后期主要进行自花授粉过程;在算法后期,随着迭代次数的增加,正余弦步长因子的精度数量级也不断增加,有效地提高了算法的求解精度。改进后的自花授粉公式为
X
i
t
+
1
=
ω
X
i
t
+
μ
(
X
j
t
−
X
k
t
)
(9)
\boldsymbol X_i^{t+1}=\omega\boldsymbol X_i^t+\mu(\boldsymbol X_j^t-\boldsymbol X_k^t)\tag{9}
Xit+1=ωXit+μ(Xjt−Xkt)(9)
(4)实现步骤
1)初始化算法中各个参数。初始化花粉种群规模
N
N
N、最大迭代次数
t
max
t_{\max}
tmax, 根据式(1)定义异花授粉和自花授粉转换概率
P
α
P_\alpha
Pα。
2)初始化花粉种群。寻找当前最优花粉和其所处位置
g
best
\boldsymbol g_{\text{best}}
gbest,并计算出其适应度值
f
(
g
best
)
f(\boldsymbol g_{\text{best}})
f(gbest)。
3)进入主循环过程,随机产生一个随机数
rand
(
⋅
)
\text{rand}(\cdot)
rand(⋅) ,如果
rand
(
⋅
)
>
P
α
\text{rand}(\cdot)>P_\alpha
rand(⋅)>Pα,则按照式(6)进行异花授粉,更新当前花粉位置;否则,根据式(9)进行自花授粉,并更新花粉位置。
4)判断是否更新个体。如果
f
(
x
i
t
+
1
)
<
f
(
x
i
t
)
f(\boldsymbol x_i^{t+1})<f(\boldsymbol x_i^t)
f(xit+1)<f(xit),则选择接受新的解,并传粉
x
i
t
\boldsymbol x_i^t
xit至新位置
x
i
t
+
1
\boldsymbol x_i^{t+1}
xit+1;否则,转至步骤3)。
5)与最优花粉进行比较,如果
f
(
x
n
)
<
f
(
g
best
)
f(\boldsymbol x_n)<f(\boldsymbol g_{\text{best}})
f(xn)<f(gbest),则替换之前最优花粉
g
best
\boldsymbol g_{\text{best}}
gbest为
x
n
\boldsymbol x_n
xn。
6)若当前花粉不是种群中最后一个花粉,则选择下一个花粉,并返回步骤4);否则,转至步骤7)。
7)满足算法的终止条件(达到最大迭代次数),则进行步骤8); 否则进入步骤3), 继续进入下一代搜索。
8)输出最优的花粉个体
x
n
\boldsymbol x_n
xn和全局最优解
f
(
x
n
)
f(\boldsymbol x_n)
f(xn)。
二、实验仿真与分析
为了验证算法的有效性与可行性,从Benchmarks测试函数中选取了7个典型函数进行测试,并从4个方面分析其性能。测试函数与算法参数见表1和表2,表1中测试函数最优值均为0。

下图分别为4种算法在f1~f7函数中的收敛曲线图,各函数维数均为10。
函数仿真结果显示如下:
函数:F1
HLFPA:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0
CS:最差值: 0.00083503,最优值:8.9338e-07,平均值:8.4758e-05,标准差:0.00016489
FPA:最差值: 0.21249,最优值:5.6861e-06,平均值:0.007517,标准差:0.038726
ASCSA:最差值: 1.1551,最优值:8.8818e-16,平均值:0.038505,标准差:0.2109
函数:F2
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 10.8355,最优值:3.8114,平均值:6.4537,标准差:1.5912
FPA:最差值: 21.8917,最优值:8.0443,平均值:15.1446,标准差:3.4885
ASCSA:最差值: 4.9748,最优值:0,平均值:1.8241,标准差:1.3086
函数:F3
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 0.10313,最优值:0.019826,平均值:0.050199,标准差:0.017413
FPA:最差值: 0.1937,最优值:0.071688,平均值:0.11488,标准差:0.026984
ASCSA:最差值: 0.12792,最优值:0.0098647,平均值:0.054473,标准差:0.028505
函数:F4
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 1.2995e-15,最优值:2.8301e-17,平均值:2.2139e-16,标准差:2.5651e-16
FPA:最差值: 8.8805e-13,最优值:1.0486e-14,平均值:2.4168e-13,标准差:1.9036e-13
ASCSA:最差值: 4.1769e-49,最优值:1.2888e-54,平均值:3.6513e-50,标准差:9.8592e-50
函数:F5
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 7.9977e-07,最优值:9.6521e-08,平均值:3.1238e-07,标准差:1.7591e-07
FPA:最差值: 4.4359e-05,最优值:2.4913e-06,平均值:1.1455e-05,标准差:9.5835e-06
ASCSA:最差值: 6.3044e-35,最优值:7.8977e-38,平均值:1.415e-35,标准差:1.9181e-35
函数:F6
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 0.043671,最优值:0.043671,平均值:0.043671,标准差:5.4689e-12
FPA:最差值: 0.043671,最优值:0.043671,平均值:0.043671,标准差:2.5058e-10
ASCSA:最差值: 0.043671,最优值:0.043671,平均值:0.043671,标准差:2.9306e-11
函数:F7
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 1.1875e-06,最优值:3.5101e-08,平均值:2.6133e-07,标准差:2.473e-07
FPA:最差值: 0.016674,最优值:0.0010201,平均值:0.0057926,标准差:0.0045047
ASCSA:最差值: 0.095589,最优值:0.00035807,平均值:0.024449,标准差:0.024883
实验结果表明,改进后的FPA算法具有较快的收敛速度、较高的寻优精度,且适用于高维复杂函数求解问题。
三、参考文献
[1] 洪露, 贺兴时, 杨新社. 基于三重动态调整的花授粉算法[J]. 西安工程大学学报, 2021, 35(2): 97-103.
[2] 李荣雨, 戴睿闻. 自适应步长布谷鸟搜索算法[J]. 计算机科学, 2017, 44(5): 235-240.