北核论文完美复现:自适应t分布与动态边界策略改进的算术优化算法

本文主要是介绍北核论文完美复现:自适应t分布与动态边界策略改进的算术优化算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

目录

原始算术优化算法

改进点1:引入余弦控制因子的动态边界策略

改进点2:自适应t分布变异策略

改进算法流程图

结果展示

参考文献

完整代码获取


        ​很多小伙伴问我,某某算法到底该怎么改效果比较好。实话讲,如果不经过实验,我随便说一个策略,效果能好吗?至于加什么策略,怎么加策略,为什么加这个策略,都是需要经过实验才能得出来的。        

        对于那些初学智能优化算法的小伙伴,我的建议还是要多看论文进行学习和复现。相信没有小伙伴是不看文献直接就能想出来创新点的吧,如果有,那大概率是闭门造车。

        当然,我相信大部分小伙伴代码水平没那么高,复现论文仍有一定难度。因此,我也会不断推出一些复现改进算法的文章。大家也可以用这些改进的算法应用到各类预测、优化、故障诊断、路径优化等等任务中,我之前的推文里也有很多,都可以套用。

        今天为大家带来一篇北大核心+CSCD扩展上的一篇论文完美复现。这是一篇是2022年发表在《计算机应用研究》上的一篇文章,级别还是很高的,改进的算法叫算术优化算法。

原始算术优化算法

        算术优化算法也是一种新颖的2021年提出的基于群体的元启发式算法,包括勘探阶段和开发阶段。勘探阶段的算子为乘法M(Multiplication) 和除法D(Division) ,这两个算子(D和M) 分散性高,有利于全局勘探;而开发阶段的算子为加法A( Addition) 和减法S(Subtraction),这两个算子(A和S)具有显著的低分散性,可以容易地接近目标,因此S和A的联系来支持开发阶段,有利于更快地接近最优解。

        为了避免推文中出现繁冗的公式,这边仅仅列出公式及其序号,方便大家在后续改进过程中查看公式序号从而对应改进点。

        不得不说,原始AOA算法操作简单且寻优时间较短,同时寻优精度良好,超过了大部分传统启发式算法,但仍存在易陷入局部最优等问题。

        针对这些问题,文章提出了一种自适应t分布变异和动态边界策略改进的算术优化算法(t-CAOA)。

        这是2022年发表在《计算机应用研究》上的一篇文章,级别还是很高的,改进的算法叫算术优化算法。

改进点1:引入余弦控制因子的动态边界策略

        与其他群智能优化算法类似,基本算术优化算法在寻优过程中同样会遇到全局搜索能力和局部开发能力不平衡的现象。在基本算术优化算法中,MOA的取值决定了算法优化过程中的阶段选择,MOA越大,算法的局部搜索能力越强;MOA越小,算法的全局搜索能力越强,式(2)描述的MOA是线性增长的,即算法的全局搜索能力线性减小。然而,AOA在进化探索过程中却是非线性变化的,线性增长的MOA不能准确贴近实际迭代过程,引入余弦控制因子将MOA的变化转换为非线性,可以更贴近算法实际的迭代过程,以下将引入余弦控制因子的自适应系数命名为CMOA。引入余弦控制因子的CMOA在算法迭代前期,CMOA较小并缓慢增大以充分进行全局搜索;在算法后期,CMOA急速增大以进行局部搜索。AOA作为一种新型群体智能算法,如何平衡其全局搜索和局部搜索对提高算法的性能至关重要。若全局搜索和局部搜索协调不好,在进化过程中可能会导致算法出现早熟收敛现象。因此,本文在MOA更新公式中加入由余弦因子控制的非线性惯性权重来动态调节算法全局搜索与局部搜索的平衡,提高算法寻优精度和稳定性。公式如下:

改进点2:自适应t分布变异策略

        t分布又称学生分布,含有参数自由度,当t(n→∞)→N(0,1),当t(n=1)=C(0,1),其中N(0,1)为高斯分布,C(0,1)为柯西分布,即标准高斯分布和柯西分布是t分布的两个边界特例分布,三者函数的分布图像如下图所示。其中,柯西变异的全局搜索能力较强,能够有效地保持种群的多样性;而高斯变异的局部开发能力较强,可以保证进化后期的收敛速度。t分布综合了柯西分布和高斯分布的优点,本文采用以迭代次数iter为t分布的自由度参数的t分布变异算子对解的位置进行扰动,使得算法在迭代前期具有较好的全局开发能力,在迭代后期具有良好的局部探索能力,并提高算法的收敛速度,具体的位置更新方式如下:

        其中:Xji+1为自适应t分布变异扰动后最优解在第j维的位置;Xjbest为变异扰动前最优解在第j维的位置,迭代次数作为t分布的自由度参数。

改进算法流程图

        t-CAOA的具体执行流程如下图所示:

        1)初始化参数,包括种群规模为30,迭代次数为500;

        2)随机生成初始解和计算适应度值;

        3)根据式(6)更新CMOA的参数值,使得勘探和开发阶段之间的转换动态且非线性;

        4)若r1<CMOA,根据式(3)实行勘探并更新位置;若r1≥CMOA,根据式(5)实行开发并更新位置。

结果展示

        原文作者选取了 10 个不同特点的基准测试函数与基本算术优化算法AOA、海洋捕食者算法MPA、灰狼优化算法GWO、鲸鱼优化算法WOA进行对比。

        这边为了方便大家对比,选取23个基准测试函数,与基本算术优化算法AOA进行对比。

        可以看到,选取的前11个函数里(没有故意遗漏!),在大部分函数上都优于原来的AOA算法,且收敛速度大幅提高,是一种不错的改进方法!

        当然,部分函数上该算法已经直接找到最优值,如F9,因此迭代曲线上没有显示(至于这种策略好不好仁者见仁智者见智,由于不是我改进的方法我这边不做过多评判)。

        ​其他的函数小伙伴们可以自行尝试,总体上效果明显优于原有的算术优化算法!

参考文献

        [1]郑婷婷,刘升,叶旭.自适应t分布与动态边界策略改进的算术优化算法[J].计算机应用研究,2022,39(05):1410-1414.

完整代码获取

         点击下方小卡片,后台回复关键字,不区分大小写:

TCAOA

         其他更多需求或想要的代码均可点击下方小卡片后后台私信,看到后会秒回~

         更多代码链接:更多代码链接

这篇关于北核论文完美复现:自适应t分布与动态边界策略改进的算术优化算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

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

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

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

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

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

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

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

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

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.