智能优化算法:果蝇优化算法
摘要:Pan 于 2011 年受果蝇觅食行为启发,提出了果蝇优化算法 (FOA)。虽然其出现时间不长,但因其具有清晰的生物机制、可塑性强、易编程、较快的搜索速度等优点,所以已经越来越受到人们的重视。
1.算法原理
果蝇优化算法(FOA)是基于群体的演化算法,其基本思想来源于果蝇觅食行为。果蝇在嗅觉和视觉能力上优于其他物种。果蝇首先通过嗅觉搜索食物(可达 40 km 远),当离食物较近时,通过敏锐的视觉继续进行搜索,并最终找到食物源。图 1 为果蝇觅食过程。
根据果蝇群体觅食行为特点,可将标准果蝇优化算法分为以下几个步骤。
(1) 初始化果蝇群体位置:
{
i
n
t
X
_
a
x
i
s
i
n
t
Y
_
a
x
i
s
(1)
\begin{cases} int\,X\_{axis}\\ int\,Y\_{axis}\end{cases}\tag{1}
{intX_axisintY_axis(1)
(2) 给出果蝇个体利用嗅觉搜寻食物的随机方向与距离:
{
X
i
=
X
_
a
x
i
s
+
R
a
n
d
o
m
V
a
l
u
e
Y
i
=
Y
_
a
x
i
s
+
R
a
n
d
o
m
V
a
l
u
e
(2)
\begin{cases} X_i = X\_{axis} + RandomValue\\ Y_i = Y\_{axis}+RandomValue\end{cases}\tag{2}
{Xi=X_axis+RandomValueYi=Y_axis+RandomValue(2)
(3) 由于开始无法获知食物的具体位置,所以先计算果蝇个体与原点之间的距离
D
i
s
t
i
Dist_i
Disti ,再计算味道浓度判定值
S
i
S_i
Si :
D
i
s
t
i
=
X
i
2
+
Y
i
2
(3)
Dist_i=\sqrt{X_i^2+Y_i^2}\tag{3}
Disti=Xi2+Yi2(3)
S i = 1 / D i s t i (4) S_i=1/Dist_i \tag{4} Si=1/Disti(4)
(4) 味道浓度判定值(
S
i
S_i
Si )代入味道浓度判定函数(或称为 Fitness function)以求出该果蝇个体位置的味道浓度
S
m
e
l
l
i
Smell_i
Smelli :
S
m
e
l
l
i
=
F
i
t
n
e
s
s
(
S
i
)
(5)
Smell_i=Fitness(S_i)\tag{5}
Smelli=Fitness(Si)(5)
(5) 找出此果蝇群体中味道浓度最高的果蝇(求极大值):
[
b
e
s
t
S
m
e
l
l
,
b
e
s
t
I
n
d
e
x
]
=
m
i
n
(
S
m
e
l
l
)
(6)
[bestSmell,bestIndex]=min(Smell)\tag{6}
[bestSmell,bestIndex]=min(Smell)(6)
(6) 保留最佳味道浓度值与
x
x
x、$y4 坐标,此时果蝇群体利用视觉往该位置飞去:
S
m
e
l
l
B
e
s
t
=
b
e
s
t
S
m
e
l
l
(7)
SmellBest = bestSmell \tag{7}
SmellBest=bestSmell(7)
{ X _ a x i s = X ( b e s t I n d e x ) Y _ a x i s = Y ( b e s t I n d e x ) (8) \begin{cases} X\_{axis} = X(bestIndex)\\ Y\_{axis}=Y(bestIndex)\end{cases}\tag{8} {X_axis=X(bestIndex)Y_axis=Y(bestIndex)(8)
(7) 进入迭代寻优,重复执行步骤(2) ~ 步骤(5),并判断味道浓度是否优于前一迭代味道浓度,若是则执行步骤(6)。
2.算法结果
3.参考文献
[1]李少波,赵辉,张成龙,郑凯.果蝇优化算法研究综述[J].科学技术与工程,2018,18(01):163-171.
4.Matlab代码
果蝇优化算法
改进算法matlab代码
名称 | 说明或者参考文献 |
---|---|
扇区搜索机制的果蝇优化算法 | [1]曹珍贯,李智威,余俊峰.扇区搜索机制的果蝇优化算法[J].计算机工程与设计,2019,40(06):1590-1594. |
算法相关应用
名称 | 说明或者参考文献 |
---|---|
果蝇优化的BP神经网络(预测) | https://blog.csdn.net/u011835903/article/details/112149776(原理一样,只是优化算法用果蝇算法) |
果蝇优化的BP神经网络(分类) | https://blog.csdn.net/u011835903/article/details/112149394(原理一样,只是优化算法用果蝇算法) |
5.python代码
上述代码见个人资料介绍