源于一区| 改善性能的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

相关文章

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系