本文主要是介绍智能优化算法:萤火虫算法-附代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
智能优化算法:萤火虫算法-附代码
文章目录
- 智能优化算法:萤火虫算法-附代码
- 1.算法原理
- 2.算法结果
- 3.参考文献
- 4.Matlab代码
摘要:萤火虫算法(Fire-fly algorithm,FA)由剑桥大学 Yang 于 2009 年提出 , 作为最新的群智能优化算法之一 , 该算法具有更好的收敛速度和收敛精度 , 且易于工程实现等优点。
1.算法原理
在FA 中 , 萤火虫发出光亮的主要目的是作为一个信号系统 , 以吸引其他的萤火虫个体 , 其假设为 : 1) 萤火虫不分性别 , 它将会被吸引到所有其他比它更亮的萤火虫那去 ; 2) 萤火虫的吸引力和亮度成正比 , 对
于任何两只萤火虫 , 其中一只会向着比它更亮的另一只移动 , 然而 , 亮度是随着距离的增加而减少的 ;3) 如果没有找到一个比给定的萤火虫更亮 , 它会随机移动 。
如上所述 , 萤火虫算法包含两个要素 , 即亮度和吸引度 . 亮度体现了萤火虫所处位置的优劣并决定其移动方向 , 吸引度决定了萤火虫移动的距离 , 通过亮度和吸引度的不断更新 , 从而实现目标优化 . 从数学角度对萤火虫算法的主要参数进行如下描述 :
-
萤火虫的相对荧光亮度为:
I = I 0 ∗ e − γ r i , j (1) I = I_0*e^{-\gamma r_{i,j}}\tag{1} I=I0∗e−γri,j(1)
其中 , I 0 I_0 I0为萤火虫的最大萤光亮度 , 与目标函数值相关 , 目标函数值越优自身亮度越高 ; γ \gamma γ为光强吸收系数 , 荧光会随着距离的增加和传播媒介的吸收逐渐减弱 ; r i , j r_{i,j} ri,j为萤火虫 i i i 与 j j j 之间的空间距离 。 -
萤火虫的吸引度为
β = β 0 ∗ e − γ r i , j 2 (2) \beta = \beta_0*e^{-\gamma r_{i,j}^2} \tag{2} β=β0∗e−γri,j2(2)
其中 , β 0 \beta_0 β0 为最大吸引度 ; γ \gamma γ为光强吸收系数 ; r i , j r_{i,j} ri,j为萤火虫 i i i 与 j j j 之间的空间距离。 -
萤火虫 i 被吸引向萤火虫 j 移动的位置更新公式如式 (3) 所示 :
x i = x i + β ∗ ( x j − x i ) + α ∗ ( r a n d − 1 / 2 ) (3) x_i = x_i +\beta*(x_j-x_i)+\alpha*(rand - 1/2) \tag{3} xi=xi+β∗(xj−xi)+α∗(rand−1/2)(3)
其中 , x i , x j x_i,x_j xi,xj 为萤火虫 i i i 和 j j j 所处的空间位置 ; α ∈ [ 0 , 1 ] α ∈[0,1] α∈[0,1] 为步长因子 ; r a n d rand rand 为 [0,1] 上服从均匀分布的随机数 。
算法步骤如下:
(1) 初始化萤火虫算法参数.
(2) 计算各萤火虫的亮度并排序得到亮度最大的萤火虫位置.
(3)判断迭代是否结束:判断是否达到最大迭代次数 T ,达到则转(4),否则转(5).
(4) 输出亮度最大的萤火虫位置及其亮度.
(5) 更新萤火虫位置:根据式(3)更新萤火虫的位置,对处在最佳位置的萤火虫进行随机扰动,搜索次数增加1 ,转(2),进行下一次搜索.
2.算法结果
3.参考文献
[1] Yang X S, Deb S. Eagle strategy using l´ evy walk and firefly algorithms for stochastic optimization. Nature Inspired Cooperative Strategies for Optimization (NICSO 2010), Berlin Heidelberg: Springer, 2010. 101−111
[2] 田梦楚, 薄煜明, 陈志敏, et al. 萤火虫算法智能优化粒子滤波[J]. 自动化学报, 2016, 42(001):89-97.
4.Matlab代码
萤火虫算法
改进算法matlab代码
名称 | 说明或者参考文献 |
---|---|
一种改进的进化模型和混沌优化的萤火虫算法(FAEC) | [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(原理一样,只是优化算法用萤火虫) |
基于萤火虫算法的无线传感器网(WSN)覆盖优化 | https://blog.csdn.net/u011835903/article/details/109262039(原理一样,只是优化算法用萤火虫) |
基于萤火虫算法的3D无线传感器网(WSN)覆盖优化 | https://blog.csdn.net/u011835903/article/details/113834323(原理一样,只是优化算法用萤火虫) |
个人资料介绍
这篇关于智能优化算法:萤火虫算法-附代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!