烟花算法(FWA)(含开源MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号: 启发式算法讨论 。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

烟花算法(Fireworks Algorithm, FWA)是于2010年由谭营教授等人所提出的一种新型群体智能优化算法。该算法在免疫算法中引入了浓度抑制的思想和分布式信息共享机制,具有较强的全局搜索能力。它的原始参考文献如下:

"Tan Y, Zhu Y. Fireworks algorithm for optimization[C]//Advances in Swarm Intelligence: First International Conference, ICSI 2010, Beijing, China, June 12-15, 2010, Proceedings, Part I 1. Springer Berlin Heidelberg, 2010: 355-364."

01

灵感来源

根据谭营教授所著的《烟花算法引论》书中的描述,该算法的研究动机来源于在空中爆炸的烟花爆竹。他致力于研究不同类型的进化算法,也尝试把生活中的各种事物与进化算法联系在一起,看是否有所启发。终于在一个除夕夜,谭营老师看到空中绽放的烟花爆竹,脑海中迸发出这种爆炸图像与进化计算中的随机搜索是否可以建立某种联系(如同烟花爆炸图像一样来对问题解空间进行有效搜索)的灵感,并通过模拟烟花爆炸与扩散的机制进行多点同时搜寻全局最优解。

FWA采用的是分布式信息共享机制,可以对全局分布的所有烟花个体进行选择,根据适应度函数值的大小决定每个烟花的爆炸强度以及辐射强度,并在整个搜索过程中跟进与维护当前的最优烟花,使种群多样性得以保持。

02

算法设计

烟花算法的框架主要由以下四个部分组成,分别是爆炸算子(explosiveoperator) 、变异操作(mutation operation) 、映射规则(mapping rule)和选择策略(selection strategy)。组成烟花算法框架的流程图如图1所示。首先,在可行区域中对N 个烟花的初始化群体实行随机选择策略,此时每个烟花个体都表示一个独立的可行解,再对它们的适应度值进行评价,估算所有个体理论上爆炸火花的数量及爆炸区间。接着让群体中的每个烟花都经历爆炸和变异操作,这样爆炸产生的下一代群体就包括烟花爆炸产生的"爆炸火花"以及对其进行高斯变异而产生的"高斯变异火花"。在进行完爆炸和变异的步骤后,需使用映射规则来限制变异后的火花依旧在可行域范围中,并利用选择策略从新生成的下一代N-1个个体中选出并保留最优个体。用这种周而复始逐一迭代的方法将优秀的个体不断传递下去直到选出最优值,或达到算法的最大评估次数。

图1 烟花算法框架

03

计算流程

FWA的计算流程如图2所示。

图2 FWA的流程图

04

实验仿真

对FWA的性能进行简单的测试,将其用于函数寻优。Benchmark函数采用多峰函数Ackley。收敛效果如图3所示,这里就不再做进一步的分析了。

图3 FWA的收敛曲线

05

MATLAB代码

FWA的MATLAB代码可直接通过下方链接提取~

链接:https://pan.baidu.com/s/170SzFwf_qwPcDnjZ-AIdhw

提取码:8023

关注公众号:启发式算法讨论

相关推荐
杜子不疼.35 分钟前
进程控制(四):自主Shell命令行解释器
linux·c语言·人工智能
编码小哥8 小时前
OpenCV Haar级联分类器:人脸检测入门
人工智能·计算机视觉·目标跟踪
君义_noip8 小时前
信息学奥赛一本通 1661:有趣的数列 | 洛谷 P3200 [HNOI2009] 有趣的数列
c++·算法·组合数学·信息学奥赛·csp-s
leaves falling8 小时前
C语言内存函数-
c语言·开发语言
程序员:钧念8 小时前
深度学习与强化学习的区别
人工智能·python·深度学习·算法·transformer·rag
数据与后端架构提升之路8 小时前
TeleTron 源码揭秘:如何用适配器模式“无缝魔改” Megatron-Core?
人工智能·python·适配器模式
英英_9 小时前
MATLAB数值计算基础教程
数据结构·算法·matlab
Chef_Chen9 小时前
数据科学每日总结--Day44--机器学习
人工智能·机器学习
这张生成的图像能检测吗9 小时前
(论文速读)FR-IQA:面向广义图像质量评价:放松完美参考质量假设
人工智能·计算机视觉·图像增强·图像质量评估指标
一起养小猫9 小时前
LeetCode100天Day14-轮转数组与买卖股票最佳时机
算法·leetcode·职场和发展