源于一区| 改善性能的5种高效而小众的变异策略,一键调用 (Matlab)

本文主要是介绍源于一区| 改善性能的5种高效而小众的变异策略,一键调用 (Matlab),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片

基于群体的优化算法在达到迭代后期时种群多样性往往会速降,进化将陷入停滞,而许多算法本身并没有突变机制,一旦受到局部最优值的约束,就很难摆脱这些约束。它还将减少种群多样性,减缓收敛速度。

变异策略可以增加种群的多样性,防止算法陷入局部最优。因此为克服算法易陷入局部最优的局限性,本文复现了一区期刊Knowledge-Based Systems中的五篇文章的变异策略,并将其分别应用于蜣螂优化算法中,结果表明,引入了这些变异策略后,算法能够有效避免陷入局部最优的困境,算法性能得到了提升。

00 目录

1 各“变异”策略简介

2 代码目录

3 算法性能

4 源码获取

01 各“变异”策略简介

1.1 多尺度协同变异

变异尺度对算法的搜索与收敛性能都有影响,若变异尺度过大,则可能越过极值点,若变异尺度过小,则需要大量迭代以实现空间的遍历,因此引入不同尺度的高斯变异算子能够有利于搜索全局最优,加快收敛。

多尺度协同变异即是本文的第一个变异策略。

1.2 正态云模型

在众多的不确定性中,随机性和模糊性无疑是最常见的属性。为了克服处理不确定性的不足,文献[1]提出了云模型来实现定量描述与定性概念之间的不确定性转换。云模型的特征在于3个数学参数:期望(Ex)、熵(En)和超熵(He)。由云模型的理论可知,数字特征中的期望Ex表示搜索范围的中心位置,熵En表示搜索范围,En越大,云滴的水平覆盖范围越大,超熵He表示云滴的离散程度,其示意图如下:

图片

因此,引入正态云模型作为本文的第二个变异策略,通过对正态云模型的期望值、熵、超熵的设置对其解所在位置进行开发。

1.3 融合高斯突变与布谷鸟的变异

高斯变异使用服从正态分布的随机数作用于原始位置向量,从而生成新的位置,能够对当前位置进行小范围的邻域搜索,同时两个随机个体的引入融合为新的高斯算子,使其包含一定的种群信息,将布谷鸟搜索机制引入与高斯算子结合,也增加了搜索效率。

融合高斯突变与布谷鸟的变异是本文的第三个变异策略。

1.4 镜面反射学习变异

镜面反射是一种非常常见的物理现象:光从具有光泽表面的物体上反射。如下:

在这里插入图片描述

该策略和反向学习有一点相似性,实际上,反向学习就是镜面反向学习的一种特殊情况,通过这种策略能够有效丰富种群的多样性。

镜面反射学习变异是本文的第四个变异策略。

1.5 平滑开发变异

包含无序维数采样、随机交叉与顺序变异,这三种机制能够相互补充,提高算法的搜索能力。

平滑开发变异是本文的第五个变异策略。

02 代码目录

在这里插入图片描述

文件说明:

在这里插入图片描述

代码为MATLAB,。考虑到很多同学获取代码后,MATLAB代码部分有乱码(MATLAB版本问题),有几个方法:

①可以将MATLAB版本改为2020及以上;

②将m文件用记事本打开,再将记事本中的代码复制到Matlab即可

代码都经过作者注释,代码清爽,可读性强。

改进策略只需一行代码即可实现调用

在这里插入图片描述

03 算法性能

采用标准测试函数检验其引入变异策略后算法的性能 (部分)

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

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

04 源码获取

在公众号(KAU的云实验台)后台回复 BY1

参考文献

[1]Li D Y, Meng H J, Shi X M. Membership clouds and membership cloud generators[J]. Journal of Computer Research and Development, 1995,32( 6) : 15-20.

这篇关于源于一区| 改善性能的5种高效而小众的变异策略,一键调用 (Matlab)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819036

相关文章

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”