显著提升!| (WOA)融合模拟退火和自适应变异的混沌鲸鱼优化算法应用于函数寻优

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

鲸鱼优化算法(whale optimization algorithm,WOA)是由Mirjalili和Lewis[1]于2016年提出的一种新型群体智能优化搜索方法,它源于对自然界中座头鲸群体狩猎行为的模拟,与其它群体智能优化算法相比,WOA算法结构新颖, 控制参数少,在许多数值优化和工程问题的求解中表现出较好的寻优性能,优于蚁群算法和粒子群算法等智能优化算法。

WOA算法在面对多变量复杂问题时也存在搜索效率低、收敛能力差、易陷入局部最优等缺点。因此,为提升WOA的优化性能,本文提出一个WOA的变体,即融合模拟退火和自适应变异的混沌鲸鱼优化算法。

00 文章目录

1 鲸鱼优化算法原理

2 改进的鲸鱼优化算法

3 代码目录

4 算法性能

5 源码获取

6 总结

01 鲸鱼优化算法原理

鲸鱼优化算法原理及其MATLAB代码获取方式在作者往期文章,这里不再赘述

02 改进的鲸鱼优化算法

2.1 混沌反向学习初始化种群

群体的算法的初始化影响其搜索性能。由于没有先验信息,WOA通常是由随机初始化产生的。这种策略在某种意义上是有用的。但是,有时候鲸鱼在搜索域中的分布并不均匀,这可能会使鲸鱼远离全局最优解,使收敛到最优解的搜索时间更长,导致收敛速度较低。混沌映射因具有随机性、灵敏性等特点,可以满足算法搜索的多样性。

目前文献中常用的混沌扰动方程有Logistic映射和Tent映射等。由文献[3]可知Logistic映射的分布特点是:中间取值概率比较均匀,但在两端概率特别高,因此当全局最优点不在设计变量空间的两端时,对寻找最优点是不利的。而Tent混沌映射结构简单,具有比Logistic混沌映射更好的遍历均匀性和更快的搜索速度,同时,文献[2]已经从理论上证明了基于反向学习的种群初始化可以得到较好的初始解,进而加快收敛速度。因此,本文利用这两种初始化方法的优点,提出了基于混沌映射和反向学习的思想生成初始化种群。

考虑到 Tent 映射易在小循环周期和不动点上出现问题,为避免Tent混沌序列在迭代时落入小周期点和不稳定周期点,在典型Tent映射的表达式中添加随机数,即
在这里插入图片描述

其中: N 是序列内粒子的个数。引入随机变量rand(0, 1) /N 不仅仍然保持了Tent混沌映射的随机性、遍历性、规律性,而且能够有效避免迭代落入小周期点和不稳定周期点内。
在这里插入图片描述

其次,利用该混沌序列Zkj生成对应的初始种群xij:​
在这里插入图片描述

然后,生成反向种群x*ij:
在这里插入图片描述

最后,比较初始种群和反向种群,选择适应度最优的N个个体组成初始种群,通过此初始化策略,能够在较为均匀分布的种群中进一步得到优质解,从而加快收敛速度。

2.2 非线性收敛因子

WOA算法中主要是两个系数参数A和C:
在这里插入图片描述

其中A主要取决于a,C主要取决于r。鲸鱼算法的全局勘探和局部开发都主要和A相关,换句话说,控制参数a对于算法的收敛速度和搜索精度起着至关重要的作用。当a较大时,算法具有较强的全局搜索能力,易于逃逸局部最优,但其局部开发能力弱,导致收敛速度下降。反之,如果a较小,则其局部开发能力较强,收敛速度加快,但易于陷入局部最优。

而在传统的WOA算法中,a从2到0线性递减,而在复杂优化问题中往往存在多个局部最优值,线性递减的策略反而会影响算法逃逸出局部最优的能力,因此本文重新提出一个非线性的收敛因子:
在这里插入图片描述

该非线性收敛因子a的仿真如图。
在这里插入图片描述

由图可以看出,在迭代前期,a 取值较大且衰减速度较慢,全局勘探能力较强,有利于避免种群陷入局部最优值。在迭代后期,a迅速衰减至较小的值,局部开发能力较强,有利于加速种群收敛。因此该非线性收敛因子更新策略可以更好地应用于非线性复杂优化问题的求解。

2.3 动态惯性权重

由于鲸鱼在螺旋更新位置的捕猎过程中猎物目标对鲸鱼群位置更新的影响不同,受文献[3]的启发本文提出一种动态惯性权值策略,公式如下:
在这里插入图片描述

其中,wmax和wmin是权重变化的最大和最小值,Tmax为最大迭代次数,t为当前迭代次数。

于是螺旋位置更新公式变为:

在这里插入图片描述

权重参数 ω 在迭代前期取得较大值,使鲸鱼算法具有较强的全局搜索能力,防止其陷入局部极值;在迭代后期取得较小值,此时鲸鱼算法有较强的局部搜索能力,可加速算法收敛得到最优解。

2.4 模拟退火操作及自适应变异扰动

模拟退火算法(Simulated Annealing,SA)由Metropolis在1953年提出[4],其特点为在一定的概率情况下保留劣质群体,增加种群的多样性,在一定程度上提高了跳出局部最优的能力。本文将模拟退火思想融入WOA算法中。

同时,考虑到迭代后期,由于搜索策略的原因,种群中所有鲸鱼个体都会向最优个体聚集,导致种群多样性降低。如果此时最优个体为局部最优解,则算法将出现早熟收敛。为了防止出现这类问题,本文提出了自适应的变异扰动,其公式如下:

在这里插入图片描述

其中gaussian为高斯变异,cauchy为柯西变异。从上式可以看出,算法开始运行时,t值较小,柯西变异的权值较大,通过柯西变异获得较大步长,避免算法陷入局部最优解。随着算法不断运行,t 值较大, 高斯变异的权值较大,高斯变异杰出的局部搜索能力使得候选解在局部范围进行精确搜索,提高算法的寻优精度。

通过自适应的变异扰动产生新解,再凭借模拟退火算法能够以某种概率接受较差解的方式,跳出局部最优值,从而弥补WOA算法缺陷。

2.5 算法流程

本文的算法流程如下:
在这里插入图片描述

03 代码目录

在这里插入图片描述

其中,Main_AAMCWOA.m为主程序,代码注释详细,一键运行Main_AAMCWOA即可得到所有运行结果,运行结果包括混沌序列比较图、控制参数比较图以及算法在各测试函数上的迭代图,最后将生成excel表,包含算法在各函数迭代n次的平均值,均值、运行时间、最优解。而testFuc.m则可以快速生成测试函数的迭代图。

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

部分代码如下,改进部分会有特别注释。

在这里插入图片描述

生成的excel表如下
在这里插入图片描述

图中,1-5分别对应AAMCWOA、GWO、WOA、PSO、GA算法

04 算法性能

采用05年的标准测试函数来检验其寻优性能,该测试集是应用最多、最经典的测试集,包含23个Benchmark函数,其中F1-F5为单峰函数,F6-F12为基本的多峰函数,F13-F14为扩展的多峰函数,F15-F23为多峰组合函数,函数的具体信息如下:

在这里插入图片描述

其运行结果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

由结果可以看到,改进的鲸鱼优化算法在几乎所有函数的收敛速度和精度都更好,改进算法的效果良好。

05 源码获取

可在作者微信公众号获取:KAU的云实验台

注:文章中的所有图都可由程序直接运行出

06 总结

本文提出的改进鲸鱼优化算法具有良好的性能,改进有效,同时,本文的改进策略也可以进行推广,比如算法最后的模拟退火和自适应变异策略便可用于很多算法用来跳出局部最优,同时本文的改进也有进一步提升的空间,比如可以对鲸鱼优化算法的位置更新策略进一步改进,如加入Levy飞行、差分进化等。

参考文献

[1] MIRJALILI S,LEWIS A. The whale optimization algorithm[J].Advances in Engineering Software,2016,95:51一 67.

[2] 张强,李盼池.自适应分组混沌云模型蛙跳算法求解连续空间优化问题[J] .控制与决策,2015,30(5):923-928

[3] Y. Shi and R. Eberhart, “Modified particle swarm optimizer,” in Proc of

IEEE Icec Conference, 1999.

[4] DUPANLOU I,SCHNEIDER S,EXCOFFIER L. A simulated annealing approach to define the genetic struc⁃ ture of populations[J]. Molecular Ecology,2002,11 (12):2571 - 2581.

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在IDEA中配置Web开发环境

一、idea配置Web开发环境 第一步:下载并安装Tomcat服务器(建议放根目录,完整路径中不要出现中文) 第二步:打开IDEA,新建java项目 第三步:为项目添加Web应用 在项目上右键➡️选择“Add Framew…

在线存储系统源码 网盘网站源码 云盘系统源码

Cloudreve云盘系统源码-支持本地储存和对象储存,界面美观 云盘系统安装教程 测试环境:PHP7.1 MYSQL5.6 Apache 上传源码到根目录 安装程序: 浏览器数据 http://localhost/CloudreveInstallerlocalhost更换成你的网址 安装完毕 记住系统默认的账号密码 温馨提示:如果默认…

已解决:云原生领域的超时挂载Bug — Kubernetes深度剖析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

线性代数(三) | 向量组的秩 线性相关无关 几何直观理解 题解应用

文章目录 1 维数?向量组的秩究竟是什么?1.1 线是一维的1.2 面是二维的1.3 体是三维的 2 线性相关、线性无关、线性表示究竟是什么?2.1 基于以上几何直观的解题角度2.2 基于方程组的解题角度 1 维数?向量组的秩究竟是什么&#xff…

10道高频Vuex面试题快问快答

※其他的快问快答,看这里! 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…

[100天算法】-面试题 17.11.单词距离(day 68)

题目描述 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例:输入:word…

天津WEB前端培训哪家好?Web机构推荐!

05年以后,互联网已经进入了web2.0时代,同时也标志着网站的前端由此发生了翻天覆地的变化,现在市场上对WEB前端开发工程师岗位有着很大的需求,学习web前端开发的方式有很多种,对于初学者来说,选择自学还是培…

大数据毕业设计选题推荐-河长制大数据监测平台-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

2023.11-9 hive数据仓库,概念,架构

目录 一.HDFS、HBase、Hive的区别 二.大数据相关软件 三. Hive 的优缺点 1)优点 2)缺点 四. Hive 和数据库比较 1)查询语言 2)数据更新 3)执行延迟 4)数据规模 五.hive架构流程 六.MetaStore元…

AI:73-结合语法知识的神经机器翻译研究

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

企业微信开发教程一:添加企微应用流程图解以及常见问题图文说明

最近在前辈的基础上新添加了一个企微应用,过程中遇到了一些卡点,这里一一通过图片标注与注释的方式记录一下,希望能给后来人提供一些清晰明了的帮助,话不多说,大家直接看图吧。 (文中包括一些本项目独有的配…

[Matlab]基于LSTM+NSGA2的风光火力发电策略优化

最近比较忙,好久没分享案例啦,今天简单分享一个滚动时域的多目标优化 一 模型介绍 1 风电 2 光伏 3 火电 4 储能 5 用电需求 等五个对象。 其中风电和光伏还有用电需求,用历史数据LSTM网络,训练一个预测模型;火电根据策…

使用sizeof()和strlen()去计算【数组】和【指针】的大小

文章目录 一、知识回顾1、回顾sizeof()、strlen的作用:2、数组和指针3、数组名 二、sizeof()、strlen()的使用区别1、注意区别:2、一维数组与一级指针3、二维数组与二级指针 三、总结回顾 一、知识回顾 1、回顾sizeof()、strlen的作用: siz…

LinkedList的插入速度一定比ArrayList快吗?

目录 一、有一道经典的面试题,“ArrayList 和 LinkedList 的区别是什么?”1、小白答法:2、入门答法:3、系统回答 二、LinkedList的插入速度一定比ArrayList快吗?三、分析一下两种数据结构的add源码1、先分析熟悉的Arra…

07【保姆级】-GO语言的程序流程控制【if switch for while 】

之前我学过C、Java、Python语言时总结的经验: 先建立整体框架,然后再去抠细节。先Know how,然后know why。先做出来,然后再去一点点研究,才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

【C++】复杂的多继承及其缺陷(菱形继承)

本篇要分享的内容是C中多继承的缺陷:菱形继承。 以下为本篇目录 目录 1.多继承的缺陷与解决方法 2.虚继承的底层原理 3.虚继承底层原理的设计原因 1.多继承的缺陷与解决方法 首先观察下面的图片判断它是否为多继承 这实际上是一个单继承,单继承的特…

clang插件对llvm源码插桩,分析函数调用日志(2)--google镜像

tick_plot__compile.ipynb clang插件对llvm源码插桩,分析函数调用日志(1) 分析 进出、链、出 df进出df[ df[tickKind].isin( [FuncEnter,FuncReturn] ) ]#代码中,只有在函数进入时,计算了链条长度 并写磁盘 df入df[ df[tickKind].isin…

18 CDN详解

1、理解CDN 1.CDN 和电商系统的分布式仓储系统一样,就近发货给客户(客户端),所以,必然是提前在仓库中存储了某些商品. 2.CDN最擅长的是缓存静态数据,比如电商系统的热点静态页面,秒杀场景的页面等.问题:向…

tqdm学习

from tqdm import tqdmepochs 10 epoch_bar tqdm(range(epochs)) count 0 for _ in epoch_bar:count count1print("count {}".format(count))print(_)每次就是一个epoch

磁盘空间占用巨大的meta.db-wal文件缓存(tracker-miner-fs索引服务)彻底清除办法

磁盘命令参考本博客linux磁盘空间满了怎么办. 问题: 磁盘空间被盗 今天瞄了一下我的Ubuntu系统盘, nftdiggernftdigger-Ubuntu:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 1.9…
最新文章