智能优化算法:花授粉算法
摘要:花授粉算法(Flower Pollination Algorithm,FPA)由Xin-She Yang 于 2012 年提出,由开花植物的花授粉过程启发而来 。被广泛应用于寻优问题中,具有收敛速度快等特点。
1.算法原理
花朵授粉算法是模拟自然界中显花植物花朵传粉的过程,该算法的理想条件假设如下:
a) 生物异花授粉是带花粉的传粉者通过 Levy 飞行进行的全局授粉过程。
b) 非生物自花授粉是局部授粉过程。
c) 花的常性可以被认为是繁衍概率,繁衍概率与参与的两朵花的相似性成比例关系。
d) 转换概率 p ∈ [ 0 , 1 ] p∈[0,1] p∈[0,1]控制全局授粉与局部授粉之间的转换,由于物理上的邻近性和风等其他因素的影响,局部授粉在整个授粉活动中是一个非常重要的部分 p p p。
然而,在现实的自然界中,每一棵显花植物可以开好多朵花,每朵花产生数百万甚至数十亿的花粉配子。但是,为了把问题简单化,假设每棵显花植物仅仅只开一朵花,且每朵花仅产生一个花粉配子。因此,问题经过简化后,意味着一朵花或一个配子就对应于优化问题中的一个解。
基于以上阐述,花朵授粉算法的实现步骤描述如下:
a) 初始化各个参数,包括花朵种群数 n n n,转换概率 p p p。
b) 计算每个解的适应度值,并求解出当前的最优解和最优值。
c) 如果转换概率
p
>
r
a
n
d
p > rand
p>rand 条件成立,按式(1)对解进行更新,并进行越界处理。
X
i
t
+
1
=
X
i
t
+
L
(
g
∗
−
X
i
t
)
(1)
X_i^{t+1}=X_i^{t} + L(g*-X_i^t)\tag{1}
Xit+1=Xit+L(g∗−Xit)(1)
其中:
X
i
t
+
1
,
X
i
t
X_i^{t+1},X_i^{t}
Xit+1,Xit分别是第
t
+
1
t + 1
t+1 代、第 $t
代
的
解
;
g
∗
是
全
局
最
优
解
;
代的解;g * 是全局最优解;
代的解;g∗是全局最优解;L$ 是步长,$L $的计算公式为:
L
−
λ
Γ
(
λ
)
s
i
n
(
π
λ
/
2
)
π
s
1
+
λ
,
(
s
>
>
s
0
>
0
)
(2)
L-\frac{\lambda \Gamma(\lambda)sin(\pi \lambda/2) }{\pi s^{1+\lambda}},(s>>s_0>0) \tag{2}
L−πs1+λλΓ(λ)sin(πλ/2),(s>>s0>0)(2)
其中:λ =3/2,
Γ
(
λ
)
Γ(λ)
Γ(λ)是标准的伽马函数。
d) 倘若转换概率
p
<
r
a
n
d
p < rand
p<rand 条件成立,按式(3)对解进行更新,并进行越界处理。
X
i
t
+
1
=
X
i
t
+
∈
(
X
j
t
−
X
k
t
)
(3)
X_i^{t+1} = X_i^{t} + \in(X_j^t - X_k^t)\tag{3}
Xit+1=Xit+∈(Xjt−Xkt)(3)
其中:∈是[0,1]上服从均匀分布的随机数,
X
j
t
、
X
k
t
X^t_j 、X^t_k
Xjt、Xkt 是相同植物
种类的不同花朵的花粉。
e) 计算 c)或者 d)得到的新解对应的适应度值,若新解的适应度值优,则用新解和新解对应的适应度值分别替换当前解和当前适应度值,否则保留当前解和当前适应度值。
f) 如果新解对应的适应度值比全局最优值优,则更新全局最优解和全局最优值。
g)判断结束条件,若满足,退出程序并输出最优值及最优
解,否则,转 c)
2.算法结果
3.参考文献
[1]肖辉辉,万常选,段艳明.一种改进的新型元启发式花朵授粉算法[J].计算机应用研究,2016,33(01):126-131.
4.Matlab代码
花授粉算法
改进算法matlab代码
名称 | 说明或者参考文献 |
---|---|
t-分布扰动策略和变异策略的花授粉算法(tMfpa) | [1]洪露,贺兴时,杨新社.基于三重动态调整的花授粉算法[J].西安工程大学学报,2021,35(02):97-103. |
基于三重动态调整的花授粉算法(HLPFA) | [1]段艳明,肖辉辉,林芳.新授粉方式的花授粉算法[J].计算机工程与应用,2018,54(23):94-108. |
新授粉方式的花授粉算法(NMFPA) | [1]李肇基,程科,王万耀,崔庆华.一种改进的进化模型和混沌优化的萤火虫算法[J].计算机与数字工程,2019,47(07):1605-1612. |
算法相关应用
名称 | 说明或者参考文献 |
---|---|
花授粉优化的BP神经网络(预测) | https://blog.csdn.net/u011835903/article/details/112149776(原理一样,只是优化算法是花授粉算法) |
花授粉优化的BP神经网络(分类) | https://blog.csdn.net/u011835903/article/details/112149394(原理一样,只是优化算法是花授粉算法) |
基于花授粉算法优化的SVM数据分类 | https://blog.csdn.net/u011835903/article/details/110523352(原理一样,只是优化算法是花授粉算法) |
基于花授粉优化的最大熵多阈值分割 | https://blog.csdn.net/u011835903/article/details/108203775(原理一样,只是优化算法是花授粉算法) |
花授粉算法优化的otsu多阈值分割 | https://blog.csdn.net/u011835903/article/details/108019744(原理一样,只是优化算法是花授粉算法) |
花授粉优化的PID参数优化 | https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法是花授粉算法) |
上述代码见个人资料介绍