智能优化算法:蜻蜓优化算法-附代码

文章目录

  • 智能优化算法:蜻蜓优化算法-附代码
    • 1.算法原理
      • 1.1分离
      • 2.2 排队
      • 2.3 结盟
      • 2.4 寻找猎物
      • 2.5 躲避天敌
    • 2.算法流程
    • 3.算法结果
    • 4.参考文献
    • 5.MATALAB代码

摘要:蜻蜓优化算法( Dragonfly algorithm,DA)是Seyedali Mirjalili等于2016年提出的一种新型智能优化算法[1]。其主要灵感源于自然界中蜻蜓的静态和动态群集行为,具有寻优能力强等特点。

1.算法原理

蜓算法是一种新型智能群优化算法,其原理是模拟大自然中蜻蜓寻找猎物的行为。该算法源于自然中蜻蜓动态和静态的智能群行为,对蜻蜓的飞行线路、躲避天敌及寻找食物等生活习性进行数学建模。在动态群中,为获得更好的生存环境,大量的蜻蜓集群朝着共同的方向进行远距离迁徙;在静态群中,为寻找其他飞行猎物,由小部分蜻蜓组成的各个小组,在较小的范围内来回飞行。蜻蜓飞行过程中的局部运动与飞行路径的临时突变是静态群的主要特征。在自然界中,蜻蜓的生活习性可以归纳为5类行为方式:分离、排队、结盟、寻找猎物和躲避天敌。

1.1分离

分离是每个蜻蜓个体与同类分开的行为。分离行为的数学表达式为:
Si=−∑j=1N(X−Xj)(1)S_{i}=-\sum_{j=1}^{N}(X-X{j})\tag{1} Si​=−j=1∑N​(X−Xj)(1)
式中N′N^{'}N′为邻近个体的个数;SiS_{i}Si​为第iii个蜻蜓同类之间分离行为的位置向量;XXX为个体所在位置;XjX_{j}Xj​相邻个体蜻蜓jjj所处的位置。

2.2 排队

排队是指每个蜻蜓个体在飞行时与相邻个体之间的速度匹配。排队行为的数学表达式为:
Ai=∑j=1N′VjN′(2)A_{i}=\frac{\sum_{j=1}^{N'}{V_{j}}}{N^{'}}\tag{2} Ai​=N′∑j=1N′​Vj​​(2)
式中AiA_{i}Ai​为第iii个蜻蜓个体排队行为的位置向量;VjV_{j}Vj​为相邻个体的飞行速度。

2.3 结盟

结盟指蜻蜓与相邻同类之间彼此聚在一起的集群行为。结盟行为的数学表达式为:
Ci=∑j=1N′XjN′−X(3)C_{i}=\frac{\sum_{j=1}^{N'}{X_{j}}}{N^{'}}-X \tag{3} Ci​=N′∑j=1N′​Xj​​−X(3)
式中CiC_{i}Ci​为第iii个蜻蜓个体结盟行为的位置向量。

2.4 寻找猎物

寻找猎物指个体为生存搜寻猎物的行为。寻找猎物行为的数学表达式为:
Fi=X+−X(4)F_{i}=X^{+}-X\tag{4} Fi​=X+−X(4)
式中FiF_{i}Fi​第iii个蜻蜓个体猎食行为的位置向量;X+X^{+}X+待捕食的猎物所处的位置。

2.5 躲避天敌

个体出于生存的本能,需时刻警惕天敌的行为。躲避天敌行为的数学表达式为:
Ei=X−+X(5)E_{i}=X^{-}+X\tag{5} Ei​=X−+X(5)
式中EiE_{i}Ei​为第i个蜻蜓个体逃避天敌行为的位置向量;X−X^{-}X−为蜻蜓猎食所处的位置。步向量表示为蜻蜓的飞行方向以及步长,其数学式如下:
ΔXt+1=(sSi+aAi+cCi+fFi+eEi)+ω′ΔXt(6)\Delta X_{t+1}=(sS_{i}+aA_{i}+cC_{i}+fF_{i}+eE_{i})+\omega^{'}\Delta X_{t}\tag{6} ΔXt+1​=(sSi​+aAi​+cCi​+fFi​+eEi​)+ω′ΔXt​(6)
式中:aaa为对齐权重;ccc为凝聚权重;eee为天敌权重因子;fff为猎物权重因子;sss为分离权重;ttt为当前迭代次数;ω′\omega ^{'}ω′为惯性权重。

在自然界中,出于生存需要,大部分时间蜻蜓都是运动的,因此所处位置也需实时更新。更新蜻蜓个体所处位置的向量,数学表达式如下:
Xt+1=Xt+ΔXt+1(7)X_{t+1}=X_{t}+\Delta X_{t+1}\tag{7} Xt+1​=Xt​+ΔXt+1​(7)
要达到使算法性能进一步得到强化的目的,在同类个体附近无临近解时,通过使用Lévy飞行的方法绕搜索空间飞行,进行蜻蜓位置的更新:
Xt+1=Xi+Leˊvy(d)ΔXi(8)X_{t+1} = X_{i} +Lévy(d)\Delta X_{i} \tag{8} Xt+1​=Xi​+Leˊvy(d)ΔXi​(8)
其中ddd表示维度。Lévy函数计算如下:
Leˊvy(x)=0.01∗r1∗δ∣r2∣1β(9)Lévy(x)=0.01*\frac{r_{1}*\delta}{|r_{2}|^{\frac{1}{\beta}}}\tag{9} Leˊvy(x)=0.01∗∣r2​∣β1​r1​∗δ​(9)

δ=(Γ(1+β)∗sin(πβ2)Γ(1+β2)∗β∗2(β−12))1β,Γ(x)=(x−1)!(10)\delta = ( \frac {\Gamma(1+\beta)*sin(\frac{\pi\beta}{2})}{\Gamma(\frac{1+\beta}{2})*\beta*2^{(\frac{\beta-1}{2})}})^{\frac {1}{\beta}},\Gamma(x) = (x-1)!\tag{10} δ=(Γ(21+β​)∗β∗2(2β−1​)Γ(1+β)∗sin(2πβ​)​)β1​,Γ(x)=(x−1)!(10)

式子中:r1,r2r_{1},r_{2}r1​,r2​为[0,1]范围内的随机数;β\betaβ为常数。

为调节DA算法的搜索性能,参数值(分离权重sss、对齐权重aaa、凝聚权重ccc、猎物权重因子fff、天敌权重因子eee)将在寻优过程中自适应调整。

2.算法流程

蜻蜓算法优化相关参数步骤如下:
a.初始化蜻蜓算法参数,包括最大迭代次数、种群数量。
b.初始化蜻蜓在搜索空间中的位置向量XXX和在搜索空间中的方向向量ΔXΔXΔX。各只蜻蜓优化参数的组合设为(C,g)(C,g)(C,g),其中XXX矩阵的第1、2行分别存放C、gC、gC、g的值。
c.更新各权重值。根据上述步骤的数据,对相关权重值进行初始化。变量包括邻域半径rrr、惯性权重ω′ω′ω′、猎物权重因子fff、对齐权重aaa、凝聚权重ccc、分离权重sss、天敌权重因子eee。
d.适应度值的计算,蜻蜓的最大适应度值随着蜻蜓不断地进行操作而实时更新,如果蜻蜓当前的适应度值大于已保存的适应度值,则更新原适应度值,否则原适应度值不变。因此保存的适应度值为最优值,并且保存当
前最优值对应的参数组合(C,g)(C,g)(C,g)。
e.搜寻邻域中有无蜻蜓个体存在,以欧氏距离作为邻域中有无蜻蜓存在的根据。若存在,用式(6)、(7)更新位置与步长;若不存在,用式(8)更新位置。
f.用式(1)~(5)计算蜻蜓的行为度,包括f,a,c,s,ef,a,c,s,ef,a,c,s,e。
g.更新XXX与ΔXΔXΔX
h.终止条件的判断。如果满足终止条件,则直接跳出,同时输出最优参数组合(C,g)(C,g)(C,g);如果不满足则迭代次数加1,跳转执行步骤c。

3.算法结果

4.参考文献

[1]Mirjalili S. Dragonfly algorithm: a new meta-heuristic optimization technique for solving single-objective, discrete, and multi-objective problems[J]. Neural Computing and Applications, 2016, 27(4): 1053-1073.

[2]傅军栋,陈俐,康水华,冯奕轩.基于蜻蜓算法和支持向量机的变压器故障诊断[J].华东交通大学学报,2016,33(04):103-112.

5.MATALAB代码

蜻蜓算法

改进算法matlab代码

名称 说明或者参考文献
基于精英反向学习的逐维改进蜻蜓算法(EDDA) [1]何庆,黄闽茗,王旭.基于精英反向学习的逐维改进蜻蜓算法[J].南京师大学报(自然科学版),2019,42(03):65-72.

智能优化算法:蜻蜓优化算法-附代码相关推荐

  1. 智能优化算法:闪电搜索算法-附代码

    智能优化算法:闪电搜索算法-附代码 文章目录 智能优化算法:闪电搜索算法-附代码 1.算法原理 1.1 过渡放电体 1.2 空间放电体 1.3 引导放电体 2.算法结果 3.参考文献 4.Matlab ...

  2. 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search , ...

  3. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  4. 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

    基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...

  5. 相位 unwrap 与 wrap 算法详解(附代码)

    相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...

  6. 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-Apriori算法 数据挖掘领域十大经 ...

  7. 二分查找算法详解(附代码)

    二分查找算法详解(附代码) 注: 现有一个升序 不重复的数组 查询target是否在此数组中并返回序号 使用条件 使用二分算法的两个条件: 有序 不重复 混淆处 二分算法两种方式容易弄混淆的地方:就是 ...

  8. 数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-SVM算法(超详细附代码) 数据挖掘领 ...

  9. 麻雀优化算法_多种智能优化算法应用案例分享-附代码

    1.智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码_Jack旭的博客-CSDN博客​blog.csdn.net 2.智能优化算法 ...

  10. 智能优化算法:麻雀搜索算法-附代码

    2020智能优化算法:麻雀搜索算法 文章目录 2020智能优化算法:麻雀搜索算法 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:麻雀搜索算法(Sparro ...

最新文章

  1. vue2.0中文网站2.0
  2. Ubuntu 16.04下Caffe-SSD的应用——常见训练时报错总结
  3. ESP8266 如何修改默认上电校准方式?另外为什么 ESP8266 进⼊启动模式(2,7)并触发看⻔狗复位?
  4. Windows数据库编程接口简介
  5. 51 SD配置-定价配置-维护定价过程
  6. Xcode中的iOS工程模板
  7. Provisioning Services 7.8 入门系列教程之四 目标设备安装
  8. linux 防火墙 80端口,Linux配置防火墙,开启80端口、3306端口
  9. 车联网登录显示连接不上服务器,车联网,如何解决连接的问题?
  10. HTML5+CSS:03优惠券
  11. 坦克世界因计算机丢失,坦克世界新版本上线在即,玩家必须知道的几件事。
  12. form表单提交的方法
  13. STM32_4键位触摸按键实现单击、双击、三击、长按1s、长按2s以上每隔200ms、左右滑动1-3个键位等多功能程序
  14. 北京汉正天成科技有限公司大家听说过没?这家公司怎么样?
  15. matlab怎样编程形成软件_Matlab编程笔记之GUI程序转exe
  16. Linux中FTP设置登录欢迎词,怎么为FTP登陆用户设置欢迎语(servu)
  17. halcon初级应用攻略
  18. TVYJ1172 自然数拆分Lunatic版(完全背包问题)
  19. mysql备份报错1356,解决mysqldump备份报错: Couldn't execute 'SHOW FIELDS FROM Unknown error 1356...
  20. CSS3 3D transform变换,不过如此

热门文章

  1. vue的h函数_Vue中render中的h箭头函数
  2. html 在线图片压缩,JS HTML图片显示Canvas 压缩功能
  3. ubuntu 打开ssh登陆_Ubuntu开启SSH远程登录
  4. n卡驱动登录不上去_鲜牛加速器:PubgLite报错问题解决方法汇总(附N卡优化及滤镜)...
  5. mysql concat算法_MySQL CONCAT()用法及代码示例
  6. 初始化栈的代码_限定性数据结构-栈
  7. 面试题:+=(python中列表+=操作)
  8. 使用JMH框架测试不同Java序列化/反序列化框架:优秀的protostuff,你值得拥有!
  9. 华为算法精英赛(题1:判断输入天数为当年的第几天)
  10. 随手记_英语_学术写作