智能优化算法:果蝇优化算法-附代码

智能优化算法:果蝇优化算法


摘要:Pan 于 2011 年受果蝇觅食行为启发,提出了果蝇优化算法 (FOA)。虽然其出现时间不长,但因其具有清晰的生物机制、可塑性强、易编程、较快的搜索速度等优点,所以已经越来越受到人们的重视。

1.算法原理

果蝇优化算法(FOA)是基于群体的演化算法,其基本思想来源于果蝇觅食行为。果蝇在嗅觉和视觉能力上优于其他物种。果蝇首先通过嗅觉搜索食物(可达 40 km 远),当离食物较近时,通过敏锐的视觉继续进行搜索,并最终找到食物源。图 1 为果蝇觅食过程。

在这里插入图片描述

图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代码

上述代码见个人资料介绍

  • 2
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值