原创度高!性能好!|基于信息共享与黄金搜索的改进星鸦优化算法在50+个函数上进行测试(Matlab)

本文主要是介绍原创度高!性能好!|基于信息共享与黄金搜索的改进星鸦优化算法在50+个函数上进行测试(Matlab),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进

前面的文章中,KAU介绍了星鸦优化算法(Nutcracker Optimization Algorithm,NOA)[1],NOA算法模拟了星鸦觅食、存储以及缓存搜索、恢复的行为。在性能上,与近年发表的算法/高引算法/CEC竞赛获胜算法相比均排名第一。

在这里插入图片描述

然而由没有免费的午餐(NFL)定理可知,没有元启发式优化算法可以处理所有的优化问题,在某些情况下(可结合应用),NOA算法同样存在全局/局部开发能力不平衡,易陷入局部最优等问题。

因此本文将对其进行改进,并针对改进算法在CEC2017、CEC2020、CEC2022上进行函数测试。
在这里插入图片描述

本文可以为各位的算法改进提供一定思路,同时进一步也提供了相关改进的理论公式PDF与代码。

00 目录

1 星鸦优化算法(NOA)原理

2 基于信息共享与黄金搜索的改进星鸦优化算法原理

3 代码目录

4 算法性能

5 源码获取

01 星鸦优化算法(NOA)原理

在往期的文章中KAU介绍了星鸦优化算法(NOA)的原理及其代码实现。

02 基于信息共享与黄金搜索的改进星鸦优化算法原理

2.1 两阶段种群初始化策略

初始种群的分布位置影响元启发式算法的精度和收敛速度[2]。因此在求解不确定分布问题时,种群的初始位置需要在搜索空间中均匀分布,以确保种群的多样性与遍历性。原NOA算法中,其初始位置通过随机数生成,这样不能保证其遍历性和多样性,种群质量不高,会影响算法的收敛速度。因此,本文对其初始化过程作出改进。

2.1.1 佳点集策略

佳点集是一种有效的均匀选点方法。该理论由华罗庚先生提出[3],在许多群智能优化算法中都得到了应用,由佳点集的定义,设GD是D维欧式空间中的单位立方体,若r∈GD,形为:
在这里插入图片描述

其偏差满足:
在这里插入图片描述

则称Pn(k)为佳点集,r为佳点,其中C(r, ε)是是只与r、ε(ε>0)有关的常数。取rk={2cos(2pir/p)},1≤k≤n,p是满足(p-D/2)≥D的最小素数,理论[3]上已证明,用n个佳点构成的加权和比采用任何其他n个点所得到的误差都要小,并尤其适用于高维空间的近似计算。以二维单位搜索空间为例,随机取点与佳点集方法取点的对比如下:

在这里插入图片描述

由图可以看出,采用佳点集策略能够提高种群在搜索空间中的遍历性,有助于加快收敛速度。

2.1.2 镜面反射学习策略

反向学习(OBL)策略是由TIZHOOSH于2005年提出[4],在当前个体区域内生成相反个体,对比选取适应度高的个体进行后续迭代,可以有效提高种群的质量及多样性,加强算法的搜索能力,由于其出色的性能而被广泛用于改进元启发式算法。

同时,Zhang基于镜面反射原理提出镜面反射学习(SRL)[5],且已经证明,SRL策略生成的解决方案优于OBL,因此,本文将SRL策略引入佳点集生成的初始种群,进一步提升种群的质量。

具体而言,在物理学中,入射光和反射光之间存在明显的对应关系,如图(a)所示。基于这一现象,当前解和反向解可以以图1(b)所示的方式建模。
在这里插入图片描述

设平面存在一点X(a,0),其对点为X’(b,0),且任意的X和X’都属于[Xl,Xu]之间,当光入射时,入射角和反射角分别是和,O是[Xl,Xu]的中点,O=(x0,0)。根据反射定理,有如下关系:
在这里插入图片描述

当时,上述方程可写为:

在这里插入图片描述

其中u是预设的比例因子,当u取不同值时,b可表示为:

在这里插入图片描述

由此可以看出,当u改变时,b可以遍历[Xl,Xu]之间的所有值。设xi是镜面中的一点,则其镜面对点xpi可由下式计算:

在这里插入图片描述

2.2 参数自适应调整

勘探阶段指算法对全局空间的搜索能力,决定了算法能否获得最优解;开发阶段指对局部空间的搜索能力,决定了算法获得最优解的速度。勘探和开发之间的平衡做的越好,算法的性能就越好。然而NOA的局限之一是其在勘探与开发阶段之间的转换并不平衡, NOA在觅食/存储阶段的Pa1控制其勘探/开发的转换, Pa1是线性减小的,而实际情况中,星鸦觅食/存储过程极可能是非线性变化的;同时,寻找储藏区/找回食物阶段中,控制勘探与开发的参数Pa2是固定值0.2,其不能有效刻画星鸦找储藏区和取食物的复杂性,同样阶段二的算法也不能得到有效执行。显然这些参数(Pa1与Pa2)并不能准确贴近实际迭代过程。

同时,NOA的两个阶段之间的转换通过随机数选择,这将导致搜索过程不稳定,优化结果鲁棒性不强。同时,通过对星鸦习性的观察,能够注意到星鸦在其对应的阶段一觅食/存储中会倾向于大范围搜索食物以及存储,这种搜索是随机且宽范围的;而在阶段二寻找储藏区/找回食物时,星鸦则会根据参考点进行固定范围的搜索,这种搜索则没有阶段一的广度与随机性。因此星鸦在两种阶段的搜索策略所表现出的特征存在差异,可能有比单纯采用随机数进行阶段选择更好的方式来表现星鸦在两阶段的特征。

针对以上论述中所提到的问题,本文提出新的自适应参数调整策略,使其更适应于复杂问题的优化求解。

Pa1与Pa2的更新如下:

在这里插入图片描述

由图可知,新策略更侧重于在前期进行充分的全局探索,避免算法面对复杂优化问题时陷入局部最优状态。在后期阶段,它迅速跌至较低概率值,这有助于算法精细搜索以加速收敛。

阶段1与阶段2的转换参数如下:
在这里插入图片描述

由图可知,随着迭代次数的增加,阶段转换呈现周期性,这也与星鸦春秋季寻觅松子等坚果、冬季寻找储藏起来的坚果的动态过程一致,设置该参数以增强算法迭代的稳定性。

2.3 融合黄金搜索算法的勘探阶段

黄金搜索优化算法(Golden Search Optimization,GSO)是一种结合了粒子群优化算法(PSO)和正余弦算法(SCA)的优化方法,黄金搜索算法的步长评估策略是搜索算法的核心,具有运算量小、全局搜索性能好的优点,将黄金搜索算法的更新策略融合到星鸦搜索食物的勘探阶段,以帮助星鸦更高效地搜索食物。

2.4 信息共享

星鸦通常会单独或成对活动,偶成小群。若星鸦单独行动,则搜索效率低,因为同一个地点有可能被不同的星鸦重复搜索或从始至终都没有被探索。若使星鸦成群协作,实现信息互动,则将极大提升食物搜索效率,提升了星鸦群体在冬季的存活率。

因此,本文引入一种信息共享的搜索策略,以实现星鸦之间的信息交互,充分探索领域信息。

在这里插入图片描述

该策略的核心思想是采用不同交流算子的个体之间进行间接或直接信息交换以增加种群的多样性,充分利用各自的领域信息。此外,该共享策略使算法在整个优化搜索过程中展现更丰富的随机行为,避免算法陷入局部最优。

改进后的算法流程如下:

在这里插入图片描述

03 代码目录

在这里插入图片描述

MATLAB编写,在Readme文件中对各文件夹内容作了说明:
在这里插入图片描述

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

04 算法性能

为检验改进算法的优化性能,本文选择CEC2017、2020、2022函数集进行测试,具体函数表达式可以参照下面的文章:

测试结果:

CEC2017

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

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

CEC2020

在这里插入图片描述

CEC2022

在这里插入图片描述

部分表格
在这里插入图片描述

仅运行ISGS-NOA
在这里插入图片描述

05 源码获取

GZH后台回复NOA1
或私信

后面KAU打算更一些应用型文章,如有粉丝提到的资源优化配置/泊位分配优化等,若各位有感兴趣想要实现的应用也可以私信我哦!

参考文献

[1] Abdel-Basset M , Mohamed R , Jameel M ,et al.Nutcracker optimizer: A novel nature-inspired metaheuristic algorithm for global optimization and engineering design problems[J].Knowledge-Based Systems, 2023, 262:110248-.

[2] W. Yang, K. Xia, T. Li, M. Xie, F. Song, A multi-strategy marine predator algorithm and its application in joint regularization semi-supervised ELM, Mathematics 9(3) (2021) 291, https://doi.org/10.3390/math9030291.

[3]华罗庚,王元.数论在近似分析中的应用[M].北京:科学出版社. 1978: 83-86.Hua LG,Wang Y.Application of number theory in approximate analysis[M. Beijing: Science Press,1978:83-86.

[4]TIZHOOSH H R. Opposition-based Learning: A New Scheme for Machine Intelligence[C]//IEEE. Proceedings of Computational Intelligence for Modelling, November 28-30, 2005, Vienna, Austria. New York: IEEE, 2005: 695-701.

[5]Y. Zhang, “Backtracking search algorithm with specular reflection learning for global optimization,” Knowledge-Based Systems, vol. 212, Article ID 106546, 2021.

[6]Noroozi M, Mohammadi H, Efatinasab E, et al. Golden Search Optimization Algorithm[J]. IEEE Access, 2022(10): 37515-37532.

[7]SUN J J, WANG L L, YANG C Y, et al. An Ancient BCR-Like Signaling Promotes ICP Production and Hemocyte Phagocytosis inOyster. iScience, 2020. 23 (2). DOI: 10. 1016/ j. isci. 2020.100834.

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

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。

这篇关于原创度高!性能好!|基于信息共享与黄金搜索的改进星鸦优化算法在50+个函数上进行测试(Matlab)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数