首页 > 编程语言 >改进萤火虫算法之五:基于惯性权重的萤火虫算法(IWFA)

改进萤火虫算法之五:基于惯性权重的萤火虫算法(IWFA)

时间:2025-01-10 12:58:29浏览次数:3  
标签:Firefly IWFA Algorithm 权重 惯性 算法 萤火虫

        基于惯性权重的萤火虫算法(IWFA)是在标准萤火虫算法的基础上引入线性递减权重函数的一种改进算法。

一、算法背景与原理

        萤火虫算法是一种启发式算法,其灵感来源于萤火虫闪烁的行为。萤火虫通过闪光来吸引其他萤火虫,而吸引力与它们的亮度成正比。亮度又随着距离的增加而减少,因此萤火虫会向更亮的萤火虫移动。基于这一原理,萤火虫算法被用于优化问题,其中亮度与目标函数值相关联,萤火虫通过移动来寻找最优解。

        然而,标准萤火虫算法在迭代后期存在一些问题,如萤火虫之间的距离逐渐缩小,导致吸引度逐渐增大,进而使萤火虫个体的移动距离过大,无法到达或错过最优位置,造成在极值点附近震荡的问题。为了解决这一问题,引入了惯性权重。

        前面已经讨论了四种萤火虫算法变种,主要是从不同的应用角度出发:

        (1)离散萤火虫算法(DFA):在离散空间中,萤火虫的亮度代表解的优劣,较亮的萤火虫吸引较暗的萤火虫向其移动,从而逐步找到更优的解。详情可以看我的文章:改进萤火虫算法之一:离散萤火虫算法(Discrete Firefly Algorithm, DFA)-CSDN博客

        (2)多目标萤火虫算法(MOFA):在多目标优化问题中,根据综合目标函数或Pareto支配关系计算每只萤火虫的亮度。并使用MOFA算法来寻找Pareto最优解集,实现多目标的均衡。详情可以看我的文章:改进萤火虫算法之二:多目标萤火虫算法(Multi-Objective Firefly Algorithm,MOFA)-CSDN博客

        (3)混沌萤火虫算法(Chaos Firefly Algorithm,CFA):根据混沌映射函数生成混沌序列,在各计算步骤过程中,使得算法具有更高的搜索多样性,有助于避免算法陷入局部最优解,能够更好地找到全局最优解。详情可以看我的文章:改进萤火虫算法之三:混沌萤火虫算法(Chaos Firefly Algorithm,CFA)-CSDN博客

        (4)拉格朗日萤火虫算法(Lagrange Firefly Algorithm,LFA):结合了萤火虫算法与拉格朗日乘子法,主要用于解决具有复杂约束条件的优化问题。详情可以看我的文章:改进萤火虫算法之四:拉格朗日萤火虫算法(Lagrange Firefly Algorithm,LFA)-CSDN博客

二、惯性权重的引入与作用

        在基于惯性权重的萤火虫算法中,通过引入线性递减权重函数来控制萤火虫以前位置信息对当前位置的影响。权重的大小决定了萤火虫移动的距离,并加强了萤火虫算法的全局寻优和局部搜索能力。

        具体来说,惯性权重分为最大权重w_{max}和最小权重w_{min},以及当前迭代步数t和最大迭代步数MaxGeneration。位置更新公式变为:

        其中,x_{i}表示萤火虫i的当前位置,x_{j}表示萤火虫j的位置(j为比i更亮的萤火虫),\beta为吸引度系数,\alpha为随机项系数,rand为[0,1]之间的随机数。w_{t}为惯性权重,其计算公式为:

        随着迭代的进行,惯性权重从最大权重逐渐减小到最小权重。当权值取值较大时,萤火虫当前的位置会对下一步要移动的位置有较大的影响,萤火虫间的吸引度影响相对较小,全局寻优能力增强,局部搜索能力相对减弱。反之,萤火虫当前的位置会对下一步要移动的位置影响较小,萤火虫间的吸引度影响相对较大,全局寻优能力减弱,局部搜索能力相对增强。

三、算法的数学表达

        1.基本数学表达

        萤火虫算法的基本思想是通过模拟萤火虫之间的相互作用来寻找最优解。在IWFA中,萤火虫的位置更新公式为:

标签:Firefly,IWFA,Algorithm,权重,惯性,算法,萤火虫
From: https://blog.csdn.net/lzm12278828/article/details/145031159

相关文章

  • AcWing算法基础课打卡 | 790 数的三次方根
    学习C++从娃娃抓起!记录下AcWing刷过的题目,记录每一个瞬间。附上汇总贴:AcWing算法基础课打卡|汇总【题目描述】给定一个浮点数,求它的三次方根。【输入】共一行,包含一个浮点数。【输出】共一行,包含一个浮点数,表示问题的解。注意,结果保留位小数。【输入样例】1......
  • 【MATLAB源码-第51期】基于matlab的粒子群算法(PSO)的栅格地图路径规划。
    操作环境:MATLAB2022a1、算法描述粒子群算法(ParticleSwarmOptimization,简称PSO)是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述:基本思想:鸟群在寻找食物时,每只鸟都会观察自己和其他鸟之间的距离,以及当前找到的食物的位置。每只鸟都会向自己历史上找到的最好食......
  • KMP算法(史上最清晰版本,每一步思路都仔细剖解)
    用一个更形象和详细的示例来说明如何构造next(又称部分匹配表、失配表)。假设我们的模式串是:pattern="aabaaac"我们希望为这个模式串构造一个数组next[],其中next[i]表示[0…i]这个子串中“前缀”与“后缀”能够匹配的最长长度。换句话说,next[i]是“pattern[0…i]......
  • python 代码实现了一个结合数据包络分析(DEA)和粒子群优化(PSO)算法的模型,主要用于寻找一
    importnumpyasnpimportpandasaspdimportpickleimportrefromscipy.optimizeimportminimizeimportrandomimportmatplotlib.pyplotaspltimportscipy.statsasstatsfromconcurrent.futuresimportThreadPoolExecutor#加载数据,添加文件存在性验证......
  • android逆向—头条新闻app的token算法
    某刷新闻赚钱token算法逆向分析1.前言因为学校被当作高考考点,所以有了几天假期,正好可以用来逆逆前几天找到的一个刷新闻赚钱app。2.工具:Xposed、Charles、反射大师、VMOSPro3.抓包:通过抓包,发现手机验证码提交时有一个token。4.逆向token算法在jadx-gui里直接搜索t......
  • 从上千份大厂面经呕心沥血整理:大厂高频手撕面试题(数据结构和算法篇 ,C++实现亲试可跑)
    目录 怎么判断两个链表是否相交?怎么优化?(字节跳动、货拉拉)手撕冒泡排序(美团)手撕快速排序(作业帮)手撕堆排序(美团)手撕归并排序(美团)手撕二分查找(VIVO)字符串的全排列(要求去重)(字节跳动)求一个字符串中最长不重复子串的长度(字节跳动) 反转字符串的单词:如何在原字符串上翻转......
  • 基于麻雀算法的Otsu图像多阈值分割(python)
    基于麻雀算法的Otsu图像多阈值分割(python)文章目录基于麻雀算法的Otsu图像多阈值分割(python)1.Otsu阈值分割法原理2.基于麻雀优化的多阈值分割3.算法结果:4.参考文献:5.Python代码:摘要:Otsu方法是应用最广泛的图像分割法之一,该方法也叫最大类间方法阈值分割法,选择分割阈......
  • 思维的进化:从链式推理到元链式推理的算法探秘
    ......
  • 关于字符检测的算法
    说到字符检测.,我们想到的首先就是提取字符,然后创建模版,利用定位仿射变换到新的字符上,做差值运算,得到的插值区域就是我们的异常区域.那么具体步骤怎么实现,halcon算子又该如何运用呢?①图像的预处理.a.一般选择自动阈值或绝对阈值.得到感兴趣区域.自动阈值算法,请......
  • memtest算法移植到uboot中---------下篇
    //memtest_boot.c#include"memtest_boot.h"//简单的随机数生成器staticulrand_seed=1;staticulsimple_rand(void){  rand_seed=rand_seed*1103515245+12345;  returnrand_seed;}//比较两块内存区域staticintcompare_regions(ulv*bufa,......