基于三重动态调整的花授粉算法
文章目录
摘要:针对花授粉算法存在的收敛速度慢、易陷入局部最优及收敛精度低等缺点,提出了基于三重动态调整的改进花授粉算法。采用动态转换概率切换算法的搜索模式,在全局搜索更新机制中引入新型动态因子,并在局部开发更新机制中引入正余弦步长因子。
1.花授粉算法
基础花授粉算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108346554
2. 改进花授粉算法
2.1 动态概率 P
为了平衡 FPA算法的全局搜索和局部搜索, 使 算法更加灵活, 将固定转换概率
0.8
0.8
0.8 更改为随着迭 代次数自适应变化的动态转换概率
P
α
P_{\alpha}
Pα, 即
P
a
=
w
max
−
(
w
max
−
w
min
)
α
(3)
P_{a}=w_{\max }-\left(w_{\max }-w_{\min }\right) \alpha\tag{3}
Pa=wmax−(wmax−wmin)α(3)
α
\alpha
α 由式 (4) 计算得到, 即
α
=
sin
(
π
2
t
t
max
)
(4)
\alpha=\sin \left(\frac{\pi}{2} \frac{t}{t_{\max }}\right) \tag{4}
α=sin(2πtmaxt)(4)
式中:
w
max
w_{\text {max }}
wmax 与
w
min
w_{\text {min }}
wmin 分别为
w
w
w 的最大值与最小值;
t
t
t 为 当前迭代次数,
t
max
t_{\max }
tmax 为最大迭代次数。根据文献
[
19
]
,
w
max
=
0.9
,
w
min
=
0.2
[19], w_{\text {max }}=0.9, w_{\text {min }}=0.2
[19],wmax =0.9,wmin =0.2 。在迭代初期,
P
a
P_{a}
Pa 的取 值较大, 所以算法侧重于全局搜索, 有效地增强了全 局搜索能力, 使得种群中的个体更靠近最优解; 随着 迭代深入,
P
a
P_{a}
Pa 的值越来越小, 使算法更倾向局部精 细的搜索,有利于算法后期快速找到最优解。
2. 2 新型动态因子 ω
为了提高 FPA 算法跳出局部最优的能力, 在式
(1) 给出的算法模型基础上引入新型动态因子
ω
[
20
]
\omega^{[20]}
ω[20], 调节种群迭代过程中搜索个体对当前母系花 粉位置信息的依赖性。新型动态因子
ω
\omega
ω 的计算公式 如(5) 式所示:
ω
=
ω
1
⋅
ϑ
(5)
\omega=\omega_{1} \cdot \vartheta \tag{5}
ω=ω1⋅ϑ(5)
式中:
ω
1
=
−
t
t
max
lg
t
t
max
(6)
\omega_{1}=-\frac{t}{t_{\max }} \lg \frac{t}{t_{\max }} \tag{6}
ω1=−tmaxtlgtmaxt(6)
计算得
ω
1
\omega_{1}
ω1 的取值范围为
[
0
,
0.3679
]
[0,0.3679]
[0,0.3679], 即
ϑ
=
ω
max
ω
1
max
=
2.7181
(7)
\vartheta=\frac{\omega_{\max }}{\omega_{1 \max }}=2.7181 \tag{7}
ϑ=ω1maxωmax=2.7181(7)
迭代前期动态因子
ω
\omega
ω 值较小, 削弱母系花粉位 置对算法的影响, 让花粉更自由地以 Levy 飞行在搜 索空间内大范围地进行搜索, 增加全局搜索的能 力。迭代后期,动态因子
ω
\omega
ω 减小, 使跳出局部最优的 能力得到增强。改进后的异花授粉公式为
X
i
t
+
1
=
ω
X
i
t
+
L
(
X
i
t
−
g
b
)
(8)
\boldsymbol{X}_{i}^{t+1}=\omega \boldsymbol{X}_{i}^{t}+L\left(\boldsymbol{X}_{i}^{t}-\boldsymbol{g}_{\mathrm{b}}\right) \tag{8}
Xit+1=ωXit+L(Xit−gb)(8)
2.3 正弦余弦步长因子 μ
花授粉算法局部搜索机制中步长因子
ε
\varepsilon
ε 为
(
0
(0
(0, 1) 中的随机数, 算法迭代到后期容易导致求解精度 低, 易陷入局部最优等问题, 所以本文提出了正弦余 弦步长因子
μ
\mu
μ
μ
=
{
r
1
sin
r
2
r
3
>
0.5
r
1
cos
r
2
r
3
⩽
0.5
(9)
\mu= \begin{cases}r_{1} \sin r_{2} & r_{3}>0.5 \\ r_{1} \cos r_{2} & r_{3} \leqslant 0.5\end{cases} \tag{9}
μ={r1sinr2r1cosr2r3>0.5r3⩽0.5(9)
r
1
r_{1}
r1 由式(9) 计算可得, 即
r
1
=
a
−
a
t
t
max
(10)
r_{1}=a-a \frac{t}{t_{\max }} \tag{10}
r1=a−atmaxt(10)
式中:
a
=
1
;
r
2
∈
[
0
,
2
π
]
;
r
3
a=1 ; r_{2} \in[0,2 \pi] ; r_{3}
a=1;r2∈[0,2π];r3 为
[
0
,
1
]
[0,1]
[0,1] 之间的 随 机数。
改进后的自花授粉公式为:
X
i
t
+
1
=
X
i
t
+
μ
(
X
j
t
−
X
k
t
)
(11)
\boldsymbol{X}_{i}^{t+1}=\boldsymbol{X}_{i}^{t}+\mu\left(\boldsymbol{X}_{j}^{t}-\boldsymbol{X}_{k}^{t}\right) \tag{11}
Xit+1=Xit+μ(Xjt−Xkt)(11)
1)初始化算法中各个参数。初始化花粉种群 规模
N
N
N 、最 大迭代次数
T
max
T_{\max }
Tmax, 根据式 (3) 定义异花授 粉和自花授粉转换概率
P
a
P_{a}
Pa 。
2) 初始化花粉种群。寻找当前最优花粉和其 所处地位置
g
b
g_{\mathrm{b}}
gb, 并计算出其适应度值
f
(
g
b
)
f\left(g_{\mathrm{b}}\right)
f(gb) 。
3) 进入主循环过程, 随机产生一个迶机数 rand(•), 如果
rand
(
⋅
)
>
P
a
\operatorname{rand}(\cdot)>P_{a}
rand(⋅)>Pa, 则按照式 (7) 进行异 花授粉, 更新当前花粉位置; 否则, 根据式 (10) 进行 自花授粉,并更新花粉位置。
4) 判断是否更新个体。如果
f
(
x
i
t
+
1
)
<
f\left(\boldsymbol{x}_{i}^{t+1}\right)<
f(xit+1)<
f
(
x
i
t
)
f\left(\boldsymbol{x}_{i}^{t}\right)
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\left(\boldsymbol{x}_{n}\right)<
f(xn)<
f
(
g
b
)
f\left(g_{\mathrm{b}}\right)
f(gb), 则替换之前最优花粉
g
b
g_{\mathrm{b}}
gb 为
x
n
x_{n}
xn 。
6) 若当前花粉不是种群中最后一个花粉, 则选 择下一个花粉, 并返回步骤 4); 否则, 转至步骤 7)。
7) 满足算法的终止条件 (达到最大迭代次数), 则进行步骤 8); 否则进入步骤 3), 继续进入下-代 捜索。
8) 输出最优的花粉个体
x
n
\boldsymbol{x}_{n}
xn 和全局最优解
f
(
x
n
)
∘
f\left(\boldsymbol{x}_{n}\right)_{\circ}
f(xn)∘
3.实验结果
4.参考文献
[1]洪露,贺兴时,杨新社.基于三重动态调整的花授粉算法[J].西安工程大学学报,2021,35(02):97-103.