优化算法笔记|萤火虫算法理解及实现

一、萤火虫算法背景知识

萤火虫算法(Firefly Algorithm, FA)是基于萤火虫的闪光行为,它是一种用于全局优化问题的智能随机算法,由Yang Xin-She(2009)提出。萤火虫通过下腹的一种化学反应-生物发光(bioluminescence)。这种生物发光是萤火虫求偶仪式的重要组成部分,也是雄性萤火虫和雌性萤火虫交流的主要媒介,发出光也可用来引诱配偶或猎物,同时这种闪光也有助于保护萤火虫的领地,并警告捕食者远离栖息地。

萤火虫的吸引力取决于它的光照强度,对于任何一对萤火虫来说,较亮的萤火虫会吸引另一只萤火虫。所以,亮度较低的个体移向较亮的个体,同时光的亮度随着距离的增加而降低。萤火虫的闪光模式可能因物种而异,在一些萤火虫物种中,雌性会利用这种现象猎食其他物种;有些萤火虫在一大群萤火虫中表现出同步闪光的行为来吸引猎物,雌萤火虫从静止的位置观察雄萤火虫发出的闪光,在发现一个感兴趣趣的闪光后,雌性萤火虫会做出反应,发出闪光,求偶仪式就这样开始了。一些雌性萤火虫会产生其他种类萤火虫的闪光模式,来诱捕雄性萤火虫并吃掉它们。
在FA中,认为所有的萤火虫都是雌雄同体的,无论性别如何,它们都互相吸引。该算法的建立基于两个关键的概念:发出的光的强度和两个萤火虫之间产生的吸引力的程度。

二、萤火虫算法

真实的萤火虫自然地呈现出一种离散的闪烁模式,而萤火虫算法假设它们总是在发光。为了模拟萤火虫的这种闪烁行为,Yang Xin-She提出了了三条规则(Yang,2009):

  1. 假设所有萤火虫都是雌雄同体的,因此一只萤火虫可能会被其他任何萤火虫吸引。(这里不考虑萤火虫性别,同等看待)
  2. 萤火虫的亮度决定其吸引力的大小,较亮的萤火虫吸引较暗的萤火虫。吸引力与亮度程度会随着距离的增加而减小。最亮的萤火虫会随机选择方向进行移动,如果没有萤火虫比被考虑的萤火虫更亮,它就会随机移动。
  3. 函数的最优值与萤火虫的亮度成正比。

萤火虫算法的主要步骤:

  1.初始化算法基本参数:设置萤火虫数目n,最大吸引度β0,光强吸收系数γ,步长因子α,最大迭代次数MaxGeneration或搜索精度ε;
  2.种群初始化:随机初始化萤火虫的位置,计算萤火虫的目标函数值作为各自最大荧光亮度I0;
t=1
3.对初始种群进行亮度计算,循环直到满足(t<=MaxGeneration || 精度>ε):
	计算群体中萤火虫的相对亮度I(式2)和吸引度β(式5),根据相对亮度决定萤火虫的移动方向;
	更新萤火虫的空间位置,对处在最佳位置的萤火虫进行随机移动(式6);
	根据更新后萤火虫的位置,重新计算萤火虫的亮度I0;
	t=t+1
输出全局极值点和最优个体值。

备注:
式2:
光强:
在这里插入图片描述
其中I0为距离r=0时的光强(最亮),即自身亮度,与目标函数值有关,目标值越优,亮度越亮;γ为吸收系数,因为荧光会随着距离的增加和传播媒介的吸收逐渐减弱,所以设置光强吸收系数以体现此特性,可设置为常数;r表示两个萤火虫之间的距离。

式5:
吸引度β:
萤火虫吸引度正比于光强。
在这里插入图片描述
式6:
萤火虫i会向着比它更亮的其他萤火虫j的方向移动:
在这里插入图片描述

三、萤火虫算法实现

测试中使用的目标函数最大化方程:

exp(-(x-4)^2-(y-4)^2)+exp(-(x+4)^2-(y-4)^2)+2*exp(-x^2-(y+4)^2)+2*exp(-x^2-y^2)

运行结果显示:
在这里插入图片描述
图1 目标函数三维曲面图
在这里插入图片描述

四、算法分析

1)FA 是群体智能算法,因此它具备群体智能算法所有的优点;
2)FA 基于吸引度,吸引度随着距离增加而降低,所以如果两个萤火虫离的很远,较亮的萤火虫不会将较暗的萤火虫吸引过去,这导致了这样一个事实,即整个种群可以自动细分为子群体,每个子群体可以围绕每个模态或局部最优,在这些局部最优中可以找到全局最优解;
3)如果种群规模比模态数多得多,这种细分使萤火虫能够同时找到所有极值。

参考:
参考1:https://blog.csdn.net/hba646333407/article/details/103080856
参考2:https://blog.csdn.net/hba646333407/article/details/104798762

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值