原创改进|多策略融合的改进蜣螂优化算法

news2024/12/22 15:04:00

在这里插入图片描述

作者在前段时间的一篇文章中介绍过了蜣螂优化算法(dung beetle optimizer,DBO)的原理及实现,该算法是由东华大学沈波教授团队在2022年提出[1],其灵感来自蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为这5种习性,其不同的子种群执行了不同的搜索方法,能够实现对空间的高效探索和开发,较之PSO、WOA和HHO等具有求解精度更高、收敛速度更快、稳定性更强等优点。

虽然蜣螂优化算法具有以上特点,但其同样有其他SI算法存在的问题,如全局探索和局部开发能力不平衡、面对复杂问题的易陷入局部最优等,其收敛速度和精度仍有改进的可能,因此本文将尝试对蜣螂优化算法进行改进以提升其性能。

00 文章目录

1 蜣螂优化算法原理

2 多策略融合的改进蜣螂优化算法

3 代码目录

4 实验结果

5 源码获取

01 蜣螂优化算法原理

关于蜣螂算法原理作者在前面文章中已经作了介绍

由蜣螂优化算法的原理可以得出其基本特点:其主要由四种行为(滚球、繁殖/育雏、觅食、偷窃)进行位置更新,滚球行为能够使算法在各阶段都具有较好的全局搜索能力;而繁殖行为与觅食行为则会让蜣螂分别围绕自身和最佳个体的位置进行探索,并随着迭代的进行,其搜索的动态边界将逐渐减小,其搜索范围也将逐渐缩小;偷窃行为则是在最佳个体附近进行动态的局部搜索。

02 多策略融合的改进蜣螂优化算法

本文基于蜣螂优化算法的特点及其缺陷进行如下改进。

2.1 改进的Circle混沌映射初始化

DBO通过随机生成初始种群的方法,容易出现种群分布不均匀,会导致种群多样性减少,种群质量不高,影响算法的收敛速度。

而混沌映射具有随机性、非重复性和混沌遍历性等特点[2],意味着它比依赖于概率的随机生成更能够使种群分布均匀。因此,可以利用混沌映射生成初始种群来增加潜在解的多样性。目前文献中常用的混沌映射有Logistic映射、Tent映射和Circle混沌映射等,而Circle映射较为稳定且其混沌值覆盖率高[3],但同时考虑到Circle映射在[0.2,0.6]之间取值较为密集,其分布并不均匀,因此对Circle映射公式进行改进[4],使其更加均匀。

分别用Logistic映射、Tent映射、改进的Circle映射作出其分布图:

在这里插入图片描述

由结果可以看到,Logistic映射中间取值概率比较均匀,但在两端概率特别高,因此当全局最优点不在设计变量空间的两端时,对寻找最优点是不利的;其次Tent映射虽有较好的遍历性,但其迭代序列中存在小周期, 还存在不稳定周期点,因此若序列落入其中将导致序列趋于稳定,算法失效;最后,改进的Circle映射相对更加稳定且分布均匀性较好。

因此本文选用改进的Circle映射初始化DBO的种群, 以提高和改善初始种群在搜索空间上的分布质量,加强其全局搜索能力。

2.2 非线性边界收敛因子

由DBO的更新策略可知,其繁殖行为和觅食行为被限制在一定区域内,即产卵区域和觅食区域:

虽然其产卵和觅食区域随迭代次数动态调整,但这样的线性减少的策略难以表征其在繁殖与觅食时的复杂情况,我们希望算法在前期对全局可行区域进行更为广泛的搜索,而在后期更加注重在最优解附近的局部开发,加快其收敛速度。因此重新设置边界收敛因子R表达式如下:

改变前后的收敛因子迭代变化情况如下:
在这里插入图片描述

从图中可以看出,改进后的边界收敛因子相对于DBO中的收敛因子在前期下降得更慢,可以使觅食和产卵区域更大,从而获得更佳的全局勘探能力,而在后期,改进后的边界收敛因子相对于DBO中的收敛因子在后期下降得更快,从而加快了算法的收敛速度。

2.3 变螺旋搜索行为

鲸鱼在搜寻猎物的时候,会根据目标位置(即最优位置)与自身位置之间的螺旋形状整每次位置更新的移动距离,这种策略能够极大程度上利用区域信息,提高搜索能力。

在这里插入图片描述

[图源: WOA-TLBO: Whale optimization algorithm with Teaching-learning-based optimization for global optimization and facial emotion recognition]

而在DBO中的滚球行为中,其并没有明确的有效目标指引,这样虽然有利于全局勘探,但可能导致算法过于随机,缺乏个体之间的信息交流,在后期不利于算法收敛,因此本文将螺旋更新机制引入蜣螂的滚球行为中。同时在螺旋搜寻的模型中,b控制个体前进时螺旋线的形状,其通常取值为1,但这种策略可能会导致更新时都按照固定螺旋接近猎物,可能会降低其全局寻优的能力,因此本文将该参数设计为动态变量,以一种变螺旋路径的方式增强算法对区域的探索能力,提高算法的全局搜索能力。

引入此变螺旋更新机制。

该改进策略将进一步协调DBO的全局的探索与局部开发的能力,并增强算法跳出局部最优的能力。

2.4 ‘劣汰’机制

受自然界中适者生存的法则启发,本文引入‘劣汰’机制提高种群解的质量,通过在每次迭代期间按照一定规则淘汰更新一些较差个体增强种群多样性,改善种群整体适应度以提高算法在复杂问题中的性能,并加快收敛速度。

具体来说,在每次迭代中,将具有较差适应度的个体将定义为Xw,然后基于最佳个体与1个随机选择的个体生成新个体Xnew。随机个体Xrand的引入为新个体的生成提供了一定随机性。

2.5 参数自适应调整

由蜣螂偷窃行为的更新方式可知,该行为倾向于在最优位置(最佳食物来源)进行局部搜索:

但此种策略可能导致小偷蜣螂在迭代过程中的快速同化,即迅速聚集到最优位置附件的区域,可能导致该种群陷入局部最优,使得搜索停滞。因此,我们希望在迭代前期尽可能扩大搜索范围,增加种群多样性,而在迭代后期能够在最优解附件进行更为准确的寻优。

由Levy飞行和布朗运动的运动特性可知,无论是Levy飞行的小步长与偶尔的远跳交替机制,还是布朗运动在控制区域能够实现宽轨迹运动的特性,这两种方法都不能实现在单个区域内的全局和局部搜索。然而,研究证明[5],若将两种搜索策略联合起来,能够同时实现全局勘探和局部开发,弥补双方的不足,比单一的搜索策略更有效。因此本文将这两种策略融入偷窃行为中,既平衡了寻优的需求,其随机运动也能提高算法跳出局部最优的能力。

两种运动的模拟图如下:

在这里插入图片描述

2.5.1 布朗运动

在迭代前期,小偷蜣螂容易快速向最优个体靠近,导致种群多样性不足,易使算法陷入局部最优。因此本文将标准布朗运动引入偷窃行为前期的位置更新公式,增加蜣螂个体的多样性,从而提高算法的全局探索能力。

2.5.2 莱维飞行

在迭代后期,小偷蜣螂的位置将聚集于当前最优个体附近,过于集中的分布可能使得算法进化停滞,陷入局部最优。而莱维飞行是以偶尔长程跳跃为特点的一类具有马尔科夫性质的非高斯随机游走过程,既有小范围游走也有大距离跳跃,小范围游走能够帮助算法进行局部邻域搜索,提高寻优精度,长距离跳跃能对种群位置进行扰动,帮助算法进行探索,跳出局部最优。因此将莱维飞行引入小偷蜣螂迭代后期的位置更新​。

2.6 算法流程​

在这里插入图片描述

03 代码目录

在这里插入图片描述

其中,Main_MSIDBO_perf.m和Main_Only_MSIDBO.m为主程序,关于这两个主程序的使用在readme.txt中作者做了解释:
在这里插入图片描述

代码注释详细,一键运行Main_MSIDBO_perf.m即可得到所有运行结果,运行结果包括混沌序列比较图、收敛因子比较图、Levy和布朗比较图以及算法在各测试函数上的迭代图,最后将生成excel表,包含算法在各函数迭代n次的平均值,均值、运行时间、最优解。

同时,文件也有乱码解决,给出了主要代码的txt文件。

部分程序如下:

Main_Only_MSIDBO.m
在这里插入图片描述

改进的DBO部分

在这里插入图片描述

04 实验结果

在本节中,经过23个经典测试函数验证MSIDBO的搜索性能,将改进的蜣螂优化算法与另5种被广泛研究的优化算法(PSO、WOA、SCA、GWO、DBO)进行比较。

为保证实验公平性,所有算法的迭代次数与种群数都设置为100。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

仅运行MSIDBO的主程序得到的结果:
在这里插入图片描述

05 源码获取

在GZH(KAU的云实验台)后台回复:MSIDBO

除代码外,文件还包含完整的原理说明及其公式

参考文献

[1] XUE J K, SHEN B. Dung beetle optimizer: A new metaheuristic algorithm for global optimization [ J ]. The Journal of Supercomputing, 2023, 79(7): 7305-7336.

[2] Shi X,Li M. Whale Optimization Algorithm Improved Effectiveness Analysis Based on Compound Chaos Optimization Strategy and Dynamic Optimization Parameters [c]//2019 International Conference on Virtual Reality and Intelligent Systems( ICVRIS) . 2019:123-126.

[3]ZHANGD M, XU H, WANG Y R, et al. Whale optimization algorithm for embedded Circle mapping and onedimensional oppositional learning based small hole imaging[J]. Control and Decision, 2021, 36(5): 1173-1180(in Chinese).

[4] 宋立钦,陈文杰,陈伟海等.基于混合策略的麻雀搜索算法改进及应用[J].北京航空航天大学学报,2023,49(8):2187-2199.

[5] Bartumeus F, Catalan J, Fulco U L, et al. Optimizing theEncounter Rate in Biological Interactions: Levy Versus Brownian Strategies[J]. Physical Review Letters,2002,88(9): 097901.

[6] MANTEGNA RN.Fast,accurate algorithm for numericalsimulation of Levy stable stochastic processes [J]. PhysicalReview. E,Statistical Physics,Plasmas,Fluids,and RelatedInterdisciplinary Topics,1994,49(5): 4677-4683.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看 (ง•̀_•́)ง(不点也行)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1305824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IntelliJ IDEA v2023.3发布——持续演进AI辅助工具、支持Java 21

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 I…

Python 自动化之处理docx文件(一)

批量筛选docx文档中关键词 文章目录 批量筛选docx文档中关键词前言一、做成什么样子二、基本架构三、前期输入模块1.引入库2.路径输入3.关键词输入 三、数据处理模块1.基本架构2.如果是docx文档2.1.读取当前文档内容2.2.遍历匹配关键字2.3.触发匹配并记录日志 3.如果目录下还有…

如何利用宝塔面板和docker快速部署网站

当你有了一台服务器,就会折腾往这台服务器上部署各种好玩的网站。市面上有许多开源的网站项目,通过docker技术可以快速部署并使用,本文将以部署filebrowser举例介绍网站部署的基本流程。 1. 安装宝塔面板 宝塔面板是一款开源的网站运维工具…

云服务器部署可视化Docker私有仓库(Ubuntu)

这里测试的机器为ubuntu22.04 一、环境安装 docker安装就不赘述了 先升级,再从官方仓库安装docker compose apt update apt upgrade apt install docker-compose二、部署私有仓库UI Docker提供了一个叫registry的镜像,给大家搭建私有仓库&#xff0c…

如何在nacos中的配置在不同的环境服务下可实现配置共享

其实在微服务启动时,会去nacos读取多个配置文件,例如: [spring.application.name].yaml,例如:nacos-order-service.yaml[spring.application.name]-[spring.profiles.active].yaml,例如:nacos-o…

《地理信息系统原理》笔记/期末复习资料(10. 空间数据挖掘与空间决策支持系统)

目录 10. 空间数据挖掘与空间决策支持系统 10.1. 空间数据挖掘 10.1.1. 空间数据挖掘的概念 10.1.2. 空间数据挖掘的方法与过程 10.1.3. 空间数据挖掘的应用 10.2. 空间决策支持系统 10.2.1. 空间决策支持系统的概念 10.2.2. 空间决策支持系统的结构 10.2.3. 空间决策…

Flink 有状态流式处理

传统批次处理方法 【1】持续收取数据(kafka等),以window时间作为划分,划分一个一个的批次档案(按照时间或者大小等); 【2】周期性执行批次运算(Spark/Stom等)&#xff1b…

Vue3-04-reactive() 响应式失效的三种情况

1.替换对象后导致失效 简单理解 : 变量指向的对象换了,对原来的对象,当然没有了响应式的效果了。// 声明 变量let obj1 reactive({name:"第一个对象"})// 改变 变量的指向obj1 reactive({name:"第二个对象的属性"})co…

三天精通Selenium Web 自动化 - Selenium(Java)环境搭建 (new)

0 背景 开发工具idea代码管理mavenjdk1.8webdriver chrome 1 chromedriver & chrome chromedriver和chrome要对应上: chomedriver下载地址:淘宝镜像 这里用的是 chromedriver88-0-4324-96.zipchrome下载地址:如何降级和安装旧版本的C…

【计算机网络基础3】ARP/RARP协议、路由选择协议和TCP/IP协议

1、ARP/RARP协议 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确…

HTTP深度解析:构建高效与安全网络的关键知识

1. HTTP基础及其组件 我首先想和大家分享的是HTTP的基础知识。HTTP,即超文本传输协议,是互联网上最常用的协议之一。它定义了浏览器和服务器之间数据交换的规则,使得网页内容可以从服务器传输到我们的浏览器上。想象一下,每当你点…

kafka配置多个消费者groupid kafka多个消费者消费同一个partition(java)

目录 1- 单播模式,只有一个消费者组2- 广播模式,多个消费者组3- Java实践 kafka是由Apache软件基金会开发的一个开源流处理平台。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 kafka中partition…

Linux实用操作(超级实用)

Linux实用操作篇-上篇:Linux实用操作-上篇-CSDN博客 Linux实用操作篇-下篇:Linux实用操作篇-下篇-CSDN博客 一、各类小技巧(快捷键) 1.1 ctrl c 强制停止 Linux某些程序的运行,如果想要强制停止它,可以…

Redis缓存异常问题,常用解决方案总结

前言 Redis缓存异常问题分别是:1.缓存雪崩。2.缓存预热。3.缓存穿透。4.缓存降级。5.缓存击穿,以 及对应Redis缓存异常问题解决方案。 1.缓存雪崩 1.1、什么是缓存雪崩 如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有…

【MySQL】MySQL数据库基础--什么是数据库/基本使用/MySQL架构/存储引擎

文章目录 1.什么是数据库2.主流数据库3.基本使用3.1MySQL安装3.2连接服务器3.3服务器管理3.4服务器,数据库,表关系3.5使用案例3.6数据逻辑存储 4.MySQL架构5.SQL分类6.存储引擎6.1什么是存储引擎6.2查看存储引擎6.3存储引擎对比 1.什么是数据库 对于回答…

MySQL笔记-第18章_MySQL8其它新特性

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第18章_MySQL8其它新特性1. MySQL8新特性概述1.1 MySQL8.0 新增特性1.2 MySQL8.0移除的旧特性 2. 新特性1:窗口函数2.1 使用窗口…

【LeetCode刷题-树】--144.二叉树的前序遍历

144.二叉树的前序遍历 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) …

『npm』一条命令快速配置npm淘宝国内镜像

📣读完这篇文章里你能收获到 一条命令快速切换至淘宝镜像恢复官方镜像 文章目录 一、设置淘宝镜像源二、恢复官方镜像源三、查看当前使用的镜像 一、设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org服务器建议全局设置 sudo npm config…

HarmonyOS使用Tabs组件实现页面切换

Tabs组件的使用 概述 在我们常用的应用中,经常会有视图内容切换的场景,来展示更加丰富的内容。比如下面这个页面,点击底部的页签的选项,可以实现“首页”和“我的” 两个内容视图的切换。 ArkUI开发框架提供了一种页签容器组件…

Pytorch中Group Normalization的具体实现

Group Normalization (GN) 是一种用于深度神经网络中的归一化方法,它将每个样本划分为小组,并在每个小组内进行标准化。与批归一化(Batch Normalization)不同,Group Normalization 不依赖于小批量数据,因此…