智能优化算法:萤火虫算法-附代码

文章目录

  • 智能优化算法:萤火虫算法-附代码
    • 1.算法原理
    • 2.算法结果
    • 3.参考文献
    • 4.Matlab代码

摘要:萤火虫算法(Fire-fly algorithm,FA)由剑桥大学 Yang 于 2009 年提出 , 作为最新的群智能优化算法之一 , 该算法具有更好的收敛速度和收敛精度 , 且易于工程实现等优点。

1.算法原理

在FA 中 , 萤火虫发出光亮的主要目的是作为一个信号系统 , 以吸引其他的萤火虫个体 , 其假设为 : 1) 萤火虫不分性别 , 它将会被吸引到所有其他比它更亮的萤火虫那去 ; 2) 萤火虫的吸引力和亮度成正比 , 对
于任何两只萤火虫 , 其中一只会向着比它更亮的另一只移动 , 然而 , 亮度是随着距离的增加而减少的 ;3) 如果没有找到一个比给定的萤火虫更亮 , 它会随机移动 。

如上所述 , 萤火虫算法包含两个要素 , 即亮度和吸引度 . 亮度体现了萤火虫所处位置的优劣并决定其移动方向 , 吸引度决定了萤火虫移动的距离 , 通过亮度和吸引度的不断更新 , 从而实现目标优化 . 从数学角度对萤火虫算法的主要参数进行如下描述 :

  1. 萤火虫的相对荧光亮度为:
    I=I0∗e−γri,j(1)I = I_0*e^{-\gamma r_{i,j}}\tag{1} I=I0​∗e−γri,j​(1)
    其中 ,I0I_0I0​为萤火虫的最大萤光亮度 , 与目标函数值相关 , 目标函数值越优自身亮度越高 ; γ\gammaγ为光强吸收系数 , 荧光会随着距离的增加和传播媒介的吸收逐渐减弱 ; ri,jr_{i,j}ri,j​为萤火虫iii 与 jjj 之间的空间距离 。

  2. 萤火虫的吸引度为
    β=β0∗e−γri,j2(2)\beta = \beta_0*e^{-\gamma r_{i,j}^2} \tag{2} β=β0​∗e−γri,j2​(2)
    其中 , β0\beta_0β0​ 为最大吸引度 ; γ\gammaγ为光强吸收系数 ; ri,jr_{i,j}ri,j​为萤火虫iii 与 jjj 之间的空间距离。

  3. 萤火虫 i 被吸引向萤火虫 j 移动的位置更新公式如式 (3) 所示 :
    xi=xi+β∗(xj−xi)+α∗(rand−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)
    其中 , xi,xjx_i,x_jxi​,xj​ 为萤火虫 iii 和 jjj 所处的空间位置 ; α∈[0,1]α ∈[0,1]α∈[0,1] 为步长因子 ; randrandrand 为 [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(原理一样,只是优化算法用萤火虫)

个人资料介绍

智能优化算法:萤火虫算法-附代码相关推荐

  1. 一种改进的进化模型和混沌优化的萤火虫算法-附代码

    一种改进的进化模型和混沌优化的萤火虫算法 文章目录 一种改进的进化模型和混沌优化的萤火虫算法 1.萤火虫算法 2. 改进萤火虫算法 2.1 基于混沌优化策略的种群初始化 2. 2 基于惯性权重的进化计 ...

  2. 遗传算法_粒子群算法优化支持向量机分类预测-附代码

    遗传算法/粒子群算法优化支持向量机分类预测-附代码 文章目录 遗传算法/粒子群算法优化支持向量机分类预测-附代码 1. 支持向量机简介与参数优化的原理 1.1 支持向量机SVM简介 1.2 优化参数的 ...

  3. 基于灰狼算法优化的lssvm回归预测-附代码

    基于灰狼算法优化的lssvm回归预测 - 附代码 文章目录 基于灰狼算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于灰狼算法优化的LSSVM 4.测试结果 5.Mat ...

  4. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

  5. 萤火虫算法_智能优化算法萤火虫算法

    今天介绍的算法是萤火虫算法(Firefly Algorithm,简称FA),也是一种仿生优化算法.从算法名字就知道了,该算法的思想来源于萤火虫,具体是萤火虫的闪烁行为.下面是展开对算法相关内容的介绍. ...

  6. 基于强化学习的智能机器人路径规划算法研究(附代码)

    目录 一.摘要 二.路径规划技术的研究进展 1.研究现状 2.算法分类 2.1 全局路径规划算法 2.2 局部路径规划算法 三.本文采用的路径规划算法--强化学习 1. 概念 2. 与其他机器学习方式 ...

  7. 种群优化算法-萤火虫算法

    算法说明 萤火虫算法(F-算法)由 X-Sh. Yang 于 2007 年在英国剑桥大学提出,并立即引起了优化研究人员的注意. 萤火虫算法是群体智能算法家族的一部分,最近在解决优化问题方面取得了令人印 ...

  8. python排序算法——归并排序(附代码)

    python排序算法 --归并排序 文章目录 python排序算法 --归并排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...

  9. python排序算法 ——冒泡排序(附代码)

    python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...

  10. python有效边界_Markowitz有效边界和投资组合优化基于Python(附代码)

    原标题:Markowitz有效边界和投资组合优化基于Python(附代码) 本期作者:Bernard Brenyah 本期翻译:Barry 未经授权,严禁转载 哈里马科维茨对金融和经济学的世界的贡献是 ...

最新文章

  1. 如何在安装程序中判断操作系统是否是64位 inno
  2. mysql 自动重启 计划_解决MYSQL死机,定时重启MYSQL,wdcp计划任务设定方法,
  3. 在Mac OS X上安装 Ruby运行环境
  4. python中%r和%s的区别
  5. 说一下对象或数组转JSON怎么转【fastjson】
  6. 文献学习(part76-A)--To cluster, or not to cluster: An analysis of clusterability methods
  7. struts mysql 增删改查_struts2增删改查
  8. 隐含马尔可夫模型在语言处理中的应用(Z)
  9. linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级
  10. hibernate系列之一
  11. PopupWindow 常用方法学习笔记
  12. 无界面和应用图标的应用程序
  13. python打印字符串所在行_python打印文件中某个字符串的前几行
  14. github的账号SSH设置
  15. 【新机软件安装及环境配置】(持续更新ing)
  16. h264解码异常处理(iOS)
  17. 微信openid的生成规则研究
  18. 从凸函数到Minkowski不等式的推导
  19. MySQL 查询优化如何坐到极致?
  20. 阿里云云开发平台的创建与部署

热门文章

  1. 数组操作 from《FORTRAN95 程序设计》
  2. 什么是 CNC?什么是电脑锣?学 CNC主要学什么?
  3. 计算机控制系统电阻加热课设,计算机控制系统课程设计资料.doc
  4. 汽车电子测试-软件测试
  5. java贪吃蛇食物_JAVA贪吃蛇课程怎么处理食物的随机性
  6. 2021全国大学生数学建模 C题 解题思路和细节展示
  7. html3d电子相册,3d电子相册制作软件哪个好, 自带翻页电子相册模板,电子相册生成flash等多种格式...
  8. docker 定时重启脚本_群晖Docker容器定时执行重启任务
  9. 全新卡盟系统PHP版 集成易支付_2020年全新PHP全开源易支付系统完整源码 带多个支付接口...
  10. 解决2345劫持主页的办法--火绒2345专杀