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

2024-06-18 07:38

本文主要是介绍智能优化算法:萤火虫算法-附代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

文章目录

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

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

1.算法原理

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

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

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

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

  3. 萤火虫 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+β(xjxi)+α(rand1/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(原理一样,只是优化算法用萤火虫)

个人资料介绍

这篇关于智能优化算法:萤火虫算法-附代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071678

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件