当前位置: 首页 > news >正文

智能优化算法:侏儒猫鼬优化算法-附代码

智能优化算法:侏儒猫鼬优化算法

摘要:侏儒猫鼬优化算法(Dwarf Mongoose Optimization,DMO)是由是由 Jeffrey O. Agushaka 等于2022 年提出的一种群体智能优化算法。其灵感来源于侏儒猫鼬的群体觅食行为。

1.侏儒猫鼬优化算法

DMO 算法是模拟侏儒猫鼬半游牧式生活的一种元启发式算法。侏儒猫鼬通常生活在一个母系社会的家族群体中,主要有觅食、侦察和保姆三种社会职能。侏儒猫鼬以集体觅食和侦察而闻名,由雌性首领引导种群进行食物源的搜寻。一旦满足保姆交换条件,即
当阿尔法组未能寻找到合适的食物时,将交换阿尔法组和保姆组的成员,且阿尔法组同时进行觅食和寻找睡眠丘。

1.1 阿尔法组

1.1.1 雌性首领的产生

雌性首领在阿尔法组中产生, 阿尔法组中每个雌 性个体成为首领的概率为 α \alpha α, 计算公式如下:
α = f i t i ∑ i = 1 N f i t i (1) \alpha=\frac{f i t_i}{\sum_{i=1}^N f i t_i} \tag{1} α=i=1Nfitifiti(1)
其中 f i t i f i t_i fiti 是第 i i i 个个体的适应度, N N N 是侏儒猫䶃种群中个 体的总数。阿尔法组的个体数量为 n ′ , b s n^{\prime}, b s n,bs 为保姆的数量。

1.1.2 阿尔法组成员觅食

阿尔法组成员将共行并进行受食, 食物源的候选 位置由式 ( 2 ) 给出:
X i + 1 = X i +  phi  ×  peep  × ( X i − X rand  ) (2) X_{i+1}=X_i+\text { phi } \times \text { peep } \times\left(X_i-X_{\text {rand }}\right)\tag{2} Xi+1=Xi+ phi × peep ×(XiXrand )(2)
其中 X i + 1 X_{i+1} Xi+1 是找到的食物源新位置, X i X_i Xi 为雌性首领的当 前位置, phi 是均匀分布在 [ − 1 , 1 ] [-1,1] [1,1] 之间的随机数, 本文 peep 选取为 2 , X rand  2, X_{\text {rand }} 2,Xrand  是阿尔法组中的随机个体。

1.2 保姆交换条件

保姆交换条件是用于重置阿尔法组和保姆组中的 猫舀个体。当阿尔法组成员末能搜寻到合适的食物时, 认为阿尔法组成员能力不足, 将交换阿尔法组和保姆 组的成员。交换条件满足后, 阿尔法组将同时进行受 食和寻找睡眠丘, 计算公式如下:
X b = l b +  rand  ∗ ( u b − l b ) (3) X_b=l b+\text { rand } *(u b-l b)\tag{3} Xb=lb+ rand (ublb)(3)
其中 X b X_b Xb 为交换后个体的新位置, u b u b ub l b l b lb 分别为搜索 空间的上界和下界, rand 是 0 到 1 之间的随机数。

保姆交换后的觅食行为由公式 (2) 实现。睡眠丘 是猫䶂休息的场所, 而猫䶂不会回到之前的睡眠丘, 这种生活模式能够避免搜索区域被过度开发的问题。 新搜寻到的睡眠丘的数学模型如下:
X s m = { X i − C F ∗  phi  ∗  rand  ∗ [ X i − M ⃗ ]  if  φ i + 1 > φ i X i + C F ∗  phi  ∗  rand  ∗ [ X i − M ⃗ ]  else  } (4) X_{s m}=\left\{\begin{array}{lcc} X_i-C F * \text { phi } * \text { rand } *\left[X_i-\vec{M}\right] & \text { if } & \varphi_{i+1}>\varphi_i \\ X_i+C F * \text { phi } * \text { rand } *\left[X_i-\vec{M}\right] & \text { else } \end{array}\right\}\tag{4} Xsm= XiCF phi  rand [XiM ]Xi+CF phi  rand [XiM ] if  else φi+1>φi (4)
其中 X s m X_{s m} Xsm 为新的睡眠丘的位置, M ⃗ \vec{M} M 是决定猫晲移动到 新睡眠丘的方向向量, φ \varphi φ 是睡眠丘的平均值, 计算公 式如下:
M ⃗ = ∑ i = 1 N X i × s m i X i (5) \vec{M}=\sum_{i=1}^N \frac{X_i \times s m_i}{X_i}\tag{5} M =i=1NXiXi×smi(5)

φ = ∑ i = 1 N s m i n (6) \varphi=\frac{\sum_{i=1}^N s m_i}{n}\tag{6} φ=ni=1Nsmi(6)
其中 s m i s m_i smi 代表睡眠丘值:
s m i = f i t i + 1 − f i t i max ⁡ { ∣ f i t i + 1 , f i t i ∣ } (7) s m_i=\frac{f i t_{i+1}-f i t_i}{\max \left\{\left|f i t_{i+1}, f i t_i\right|\right\}} \tag{7} smi=max{fiti+1,fiti}fiti+1fiti(7)
C F C F CF 表示猫晲种群移动能力的参数, 它会随着迭 代次数线性递减, 计算公式如下:
C F = ( 1 − t T ) ( 2 t T ) (8) C F=\left(1-\frac{t}{T}\right)^{\left(2 \frac{t}{T}\right)}\tag{8} CF=(1Tt)(2Tt)(8)
其中 t t t 为当前迭代次数, T T T 为最大迭代次数。

3.实验结果

请添加图片描述

4.参考文献

[1] AGUSHAKA J O, EZUGWU A E, ABUALIGAH L.Dwarf mongoose optimization algorithm[J].Computer methods in applied mechanics and engineering, 2022,391(2022): 114570.

[1]贾鹤鸣,陈丽珍,力尚龙,刘庆鑫,吴迪,卢程浩.透镜成像反向学习的精英池侏儒猫鼬优化算法[J/OL].计算机工程与应用:1-12[2022-10-21].http://kns.cnki.net/kcms/detail/11.2127.TP.20221019.1554.014.html

5.Matlab代码

6.python代码

相关文章:

  • 【Linux练习生】线程安全
  • 进程间通信之信号量--使用信号实现生产者消费者问题
  • I/O复用--浅谈epoll
  • 图像类找工作面试题(二)——常见问题大总结
  • 【文章阅读】Frustratingly Simple Few-Shot Object Detection
  • 网络安全实战:记一次比较完整的靶机渗透
  • 双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)
  • 影响深度卷积神经网络算法的关键参数是网络结构
  • 微信小程序|使用小程序制作一个核酸检测点查询工具
  • Python3,5行代码,制作Gif动图,太简单了。
  • 【Python】字符串(简介)
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • 沉睡者IT - 十月之后「牛市」还是「熊市」
  • RK3566快速上手 | ROC-RK3566-PC开发板快速上手
  • MySQL备份测试
  • 【391天】每日项目总结系列128(2018.03.03)
  • 2017前端实习生面试总结
  • Angular 响应式表单 基础例子
  • egg(89)--egg之redis的发布和订阅
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java-详解HashMap
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • session共享问题解决方案
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Tornado学习笔记(1)
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Xmanager 远程桌面 CentOS 7
  • 测试如何在敏捷团队中工作?
  • 高度不固定时垂直居中
  • 关于使用markdown的方法(引自CSDN教程)
  • 记录:CentOS7.2配置LNMP环境记录
  • 力扣(LeetCode)357
  • 那些被忽略的 JavaScript 数组方法细节
  • 深入浅出webpack学习(1)--核心概念
  • 通信类
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • #pragma pack(1)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (12)Hive调优——count distinct去重优化
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (a /b)*c的值
  • (LeetCode) T14. Longest Common Prefix
  • (rabbitmq的高级特性)消息可靠性
  • (二)linux使用docker容器运行mysql
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (强烈推荐)移动端音视频从零到上手(上)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .gitattributes 文件