基础花授粉算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108346554
由于传统花授粉算法采用随机方式对花朵个体的位置进 行初始化, 这就可能导致花朵个体的初始位置分布不均匀. 混 池具有随机性、对初值敏感等特点, 可以在一定范围内按照自 已的规律遍历所有状态而不重复
[
18
]
{ }^{[18]}
[18], 因此本文利用混池映射 来初始化花朵个体的位置, 使花朵个体的初始位置分布地更 加均匀. 针对
n
n
n 个花朵个体 (
d
d
d 维空间), 本文采用混池映射初 始化种群的步骤如下:
a) 首先随机产生一个在
[
0
,
1
]
[0,1]
[0,1] 区间内的
d
d
d 维向量
c
1
c_{1}
c1 (第 一个花粉个体).
b) 利用 logistic 映射
[
19
]
{ }^{[19]}
[19] 迭代产生其余的
n
−
1
n-1
n−1 个向量, logistic 映射公式如下:
c
i
+
1
=
μ
c
i
(
1
−
c
i
)
(7)
c_{i+1}=\mu c_{i}\left(1-c_{i}\right)\tag{7}
ci+1=μci(1−ci)(7)
其中,
μ
\mu
μ 为控制参数, 当
μ
=
4
\mu=4
μ=4 时, logistic 映射分布最均匀,
c
i
c_{i}
ci 为花朵个体经过混池映射后的位置,
i
=
1
,
2
,
3
,
⋯
,
n
−
1
i=1,2,3, \cdots, n-1
i=1,2,3,⋯,n−1.
c) 将混池映射后的值再映射到解的搜索空间中,公式 如下:
x
i
=
L
+
c
i
(
U
−
L
)
(8)
x_{i}=L+c_{i}(U-L) \tag{8}
xi=L+ci(U−L)(8)
其中,
L
L
L 和
U
U
U 分别是搜索空间的上下限,
x
i
x_{i}
xi 是花朵个体在搜索 空间中的初始位置.
在基本花授粉算法中,全局搜索是在当前最优的花朵个体的基础上,使用莱维飞行函数来反映昆虫等授粉者的飞行轨迹,更新当前花朵个体的位置生成新解. 由于莱维飞行具有步长长短相间和跳跃方向多变的特点,算法可以在相应范围对花朵进行全局搜索,但也可能会因跳跃太大导致最优花朵个体信息的丢失. 而且每一代花朵位置的更新都是通过当前一代的位置和最优位置利用莱维飞行机制更新,不能有效地拓展搜索空间. 因此,tMFPA 在保留莱维飞行特征的同时,将种群中其他个体的信息引入到全局搜索更新机制中,通过在个体之间交换信息来调整位置更新机制,增强了搜索空间的多样性. 为了使其他花朵个体能够尽可能地被遍历到,引入 t-分布扰动算子对随机花朵个体进行扰动. 改进后的全局搜索位置更新公式为:
{
if rand
<
m
X
i
t
+
1
=
X
i
t
+
γ
L
(
X
i
t
−
g
best
)
+
t
−
distrub
(
t
)
⊗
(
X
j
t
−
X
k
t
)
else
X
i
t
+
1
=
X
i
t
+
γ
L
(
X
i
t
−
g
best
)
+
t
−
distrub
(
t
)
⊗
X
l
t
−
X
i
t
(9)
\left\{ if rand <mXt+1i=Xti+γL(Xti−gbest )+t−distrub(t)⊗(Xtj−Xtk) else Xt+1i=Xti+γL(Xti−gbest )+t−distrub(t)⊗Xtl−Xti\right.\tag{9}
⎩
⎨
⎧ if rand <mXit+1=Xit+γL(Xit−gbest )+t−distrub(t)⊗(Xjt−Xkt) else Xit+1=Xit+γL(Xit−gbest )+t−distrub(t)⊗Xlt−Xit(9)
其中,
m
∈
[
0
,
1
]
m \in[0,1]
m∈[0,1], 步长
γ
\gamma
γ 的表达式如下:
γ
=
0.01
+
0.49
(
t
/
N
−
iter
)
(10)
\gamma=0.01+0.49\left(t / N_{-} \text {iter }\right) \tag{10}
γ=0.01+0.49(t/N−iter )(10)
公式 (9) 对随机花朵个体进行
t
−
\mathrm{t}-
t− 分布扰动,
t
\mathrm{t}
t 分布的自由 度随着迭代次数的变化而变化. 随着自由度参数
t
\mathrm{t}
t 值的增长, 数值分布状态逐渐由 Cauchy 分布趋近于 Gaussian 分布. 算法 迭代前期,
t
t
t-分布表现出的特征与 Cauchy 分布特征一致, 帮 助开采新的搜索空间,提高算法的全局搜索能力;在中后期 时,
t
t
t-分布表现出的特征与 Gaussian 分布特征一致, 有助于算 法在当前解邻域范围内进行搜索. 在改进的位置更新公式中, 将全局搜索策略分为两部分, 在每次迭代时评估 rand 和
m
m
m 的 关系以确定使用哪种方法. 当 rand
<
m
相对于单个差分向量的策略, 具有两个差分向量的变异 策略可以提高种群的多样性, 并且仅使用单个差分向量策略 仍有可能使算法陷入局部最优, 而算法可以得到全局最优的 关键是算法能否跳出局部最优. 因此将原始差分变异策略根 据式 (5) 和式 (6) 进行改进, 将改进后的差分变异策略引入到 局部搜索, 在全局最优解的基础上,保持了差分向量确定性与 随机性的平衡, 提高了种群的多样性, 在此基础上, 将小概率 变异策略引入局部搜索, 通过判断 rand 和
q
q
q 之间的关系来决 定使用哪种更新方式, 最终通过两种策略的结合提高算法跳 出局部最优的能力. 改进后的局部搜索位置更新公式为:
{
if
r
a
n
d
<
q
x
i
t
+
1
=
g
best
+
rand
(
x
j
t
−
x
i
t
)
+
rand
(
x
l
t
−
x
k
t
)
else
x
i
t
+
1
=
x
i
t
+
F
(
x
j
t
−
x
i
t
)
+
F
(
x
l
t
−
x
k
t
)
(11)
\left\{ if rand<qxt+1i=gbest +rand(xtj−xti)+rand(xtl−xtk) else xt+1i=xti+F(xtj−xti)+F(xtl−xtk)\right. \tag{11}
⎩
⎨
⎧ if randxit+1 else <q=gbest +rand(xjt−xit)+rand(xlt−xkt)xit+1=xit+F(xjt−xit)+F(xlt−xkt)(11)
其中,
q
∈
[
0
,
1
]
,
x
i
t
、
x
i
t
+
1
q \in[0,1], x_{i}^{t} 、 x_{i}^{t+1}
q∈[0,1],xit、xit+1 分别是迭代
t
t
t 次和
t
+
1
t+1
t+1 次的值,
g
best
g_{\text {best }}
gbest 是一次迭代过程中的全局最优解.


[1]宁杰琼,何庆.t-分布扰动策略和变异策略的花授粉算法[J].小型微型计算机系统,2021,42(01):64-70.