一种简单高效的新算法(2021)|算术优化算法AOA原理及其利用 (Matlab/Python)

news2024/12/24 2:44:43

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

CEC2005中的测试
在这里插入图片描述

本文KAU将介绍一个由Abualigah等人于2021年发表在Comput. Methods Appl. Mech. Eng.上的元启发式算法——算术优化算法(Arithmetic Optimization Algorithm,AOA)[1]

在这里插入图片描述

AOA算法的设计很有意思,其巧妙的利用了数学中的加减乘除,乘除运算具有分散度高的性质,用于全局搜索,加减则具有分散度较低的性质,应用于局部搜索。AOA具有无需调整参数、可移植性强、收敛速度快等优点,其性能较之蚁狮、樽海鞘、灰狼等同样具有很强的竞争力,目前已应用于模式识别、神经网络、任务调度等实际问题中。

在这里插入图片描述

图源文献[1]

本文将介绍AOA原理、改进及其利用,并在给出算法的MATLAB和Python实现。

00 目录

1 算术优化算法 (AOA)原理

2 代码目录

3 算法性能

4 源码获取

01 算术优化算法 (AOA)原理

在这里插入图片描述

图源文献[1]

AOA是基于种群的元启发式算法,由算术中的四则运算法则来实现全局寻优,通过数学优化器加速函数选择优化策略,其由勘探(乘除)和开发(加减)两个阶段进行参数的优化,具有结构简单,收敛快的特点。下面讲解AOA原理:

1.1 初始化

首先,个体的位置可视为搜索代理,其遵循随机初始化的方法:

在这里插入图片描述

其次,AOA开始迭代寻优前需要根据数学优化器加速函数(Math Optimizer Accelerated,MOA)选择搜索阶段(勘探或开发),MOA的计算如下:

在这里插入图片描述

定义一个随机数r1,当r1<MOA时,进入勘探阶段,否则进入开发阶段。C_Iter为当前迭代次数,M_Iter为最大迭代次数,Min和Max为加速函数的最小/大值。

另外,为探索解空间的不同区域,保证解的多样化,AOA更新公式中考虑了一个随机参数,即数学优化概率(Math Optimizer Probability,MOP),MOP的计算如下:
在这里插入图片描述

其中,α是敏感参数,定义了迭代过程中的开发精度,取5。

1.2 勘探阶段

乘法和除法运算符分散性高,因此AOA基于除法运算符和乘法运算符进行全局搜索,可以表示为:
在这里插入图片描述

其中,r2∈[0,1],μ=0.499,为搜索过程控制参数。

1.3 开发阶段

加法和减法运算符分散性低,因此AOA基于加法运算符和减法运算符进行局部开发,可以表示为:
在这里插入图片描述

其中,r3∈[0,1]。

在这里插入图片描述

图源文献[2]

1.4 算法流程

AOA的整个算法已介绍完毕,特点就是非常简单明了,易于移植与嵌入。

在这里插入图片描述

1.5 算法利用&改进

首先,AOA的算法框架简单明了,勘探与开发阶段清晰,非常便于嵌入修改或利用,其勘探阶段中的乘除算子以及开发阶段中的加减算子都可引入其他算法中。同时,其MOP也是个有趣的概念,其在AOA的勘探和开发阶段都使用到了,控制了算法开发精度,也可以加以利用。

其次,AOA的MOA呈现线性递增的趋势,由于其决定了勘探与开发阶段的选择,因此针对不同复杂度的问题,其形式可以进行改变;同样,其开发与勘探阶段的公式同样可以融入其他具有更强搜索能力的策略,比如融入具有强全局搜索能力的黄金正弦方法。最后,可以引入一些“变异”策略,以提高算法跳出局部最远的能力。

02 代码目录

在这里插入图片描述

(左Matlab,右Python)

代码包含MATLAB和Python,Python代码为KAU按照Matlab代码手搓而成。考虑到很多同学获取代码后,MATLAB代码部分有乱码(MATLAB版本问题),有几个方法:

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

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

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

03 算法性能

采用标准测试函数初步检验其寻优性能

在MATLAB中,进行标准函数的测试,执行程序结果如下:

在这里插入图片描述

在Python中,进行标准函数的测试,执行程序结果如下:

在这里插入图片描述

MATLAB和Python都进行了F13函数的测试,测试效果都不错,其收敛速度和精度很好。

04 源码获取

在公众号后台回复 AOA 即可

后续KAU将更新关于AOA的原创改进算法,感兴趣的话可以关注一波~ 新的文章将第一时间推送~

参考文献

[1] ABUALIGAH L, DIANAT A, MIRJALILI S, et al. The arithmetic optimization algorithm[J]. Computer Methods in Applied Mechanics and Engineering, 2021, 376: 113609.

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

书生·浦语大模型实战营-第三课笔记

1、langchain工作流程 2、数据收集及向量化处理 数据收集是向量数据库的源头&#xff0c;可以理解为后续我们要长期采集和更新的知识库或者数据源&#xff0c;在本课中采用了几个项目中的txt和md文档作为数据源 3、接入langchain

搜索专项---DFS之连通性模型

文章目录 迷宫红与黑 一、迷宫OJ链接 本题思路:DFS直接搜即可。 #include <iostream> #include <cstring> #include <algorithm>constexpr int N110;int n; char g[N][N]; bool st[N][N]; int x1, y1, x2, y2;int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, …

如何复制IDEA中的提示?

在idea中&#xff0c;例如下面的提示我使用ctrl c怎么都复制不了&#xff0c;其实是有窍门的。 窍门很简单&#xff1a; 首先先把光标移动到提示框内&#xff0c;然后用alt 鼠标左键复制&#xff0c;提示框会自动关闭&#xff0c;这时就已经复制成功了&#xff01;&#xff…

ARM处理器运行Windows系统的三防加固平板|亿道三防

大家好&#xff01;今天我要为大家介绍一款引人注目的三防加固平板电脑——亿道三防系列产品。它们采用高通ARM处理器&#xff0c;并能够运行Windows 11操作系统&#xff0c;给用户带来了前所未有的强大性能和多样化的应用体验。 首先&#xff0c;让我们来聊聊这款平板电脑的核…

数字世界的探索者:计算机相关专业电影精选推荐

目录 推荐计算机专业必看的几部电影 《黑客帝国》 《社交网络》 《乔布斯传》 《心灵捕手》 《源代码》 《盗梦空间》 《头号玩家》 《我是谁&#xff1a;没有绝对安全的系统》 《战争游戏》(WarGames) 《模仿游戏》(The Imitation Game) 《硅谷》(Silicon Valley) …

力荐程序猿/媛必看电影/电视剧

前言 电影不仅是一种极富趣味的娱乐形式&#xff0c;而且在带来欢乐的同时&#xff0c;还能拓宽人们的视野&#xff0c;让人增长知识。许多电影也展现了编剧和导演极其出众、强大的创造力&#xff1b;还有一些电影&#xff0c;在我们不了解相关专业知识的情况下&#xff0c;可…

stm32——hal库学习笔记(定时器)

这里写目录标题 一、定时器概述&#xff08;了解&#xff09;1.1&#xff0c;软件定时原理1.2&#xff0c;定时器定时原理1.3&#xff0c;STM32定时器分类1.4&#xff0c;STM32定时器特性表1.5&#xff0c;STM32基本、通用、高级定时器的功能整体区别 二、基本定时器&#xff0…

【笔试强训错题选择题】Day1.习题(错题)解析

文章目录 前言 错题题目 错题解析 总结 前言 错题题目 1. 2. 3. 错题解析 1. 解析&#xff1a;D 解题思路&#xff1a; 本题有一个父类Base&#xff1b;同时有一个子类Child继承父类Base&#xff1b; 本题考察的是子类中的方法要与父类的方法构成重写的操作&#xff1b; 相…

springboot整合mybatisPlus超级详细

springboot整合mybatis-plus超级详细 一、环境二、springboot整合myBatisPlus2.1新建2.2 添加Mybatis-plus和mysql依赖2.3 修改配置文件2.4 新建包和文件2.5 新建表2.6 创建实体类2.7 创建Mapper接口2.8 创建Service接口2.9 创建Service实现类2.10 增删改查 MyBatis-Plus&#…

【前端】前端三要素之DOM

写在前面&#xff1a;本文仅包含DOM内容&#xff0c;JavaScript传送门在这里&#xff0c;BOM传送门在这里。 本文内容是假期中刷的黑马Pink老师视频&#xff08;十分感谢Pink老师&#xff09;&#xff0c;原文保存在个人的GitLab中&#xff0c;如果需要写的网页内容信息等可以评…

Springboot项目的run debug都是灰色解决方法

IDEA下新建SpringBoot项目后&#xff0c;问题显示如下&#xff1a; 解决方法如下&#xff1a; 这个问题是由于缺少Configuration构建器的原因&#xff0c;因此&#xff1a; 1.点击Add Configuration 添加Spring Boot构建器&#xff0c;启动类选择好&#xff0c;点击确认即可&a…

2024新版Java高频面试题+Java八股文面试真题

Java面试题_2024新版Java高频面试题Java八股文面试真题 Java高频面试专题视频课程&#xff0c;瓤括了Java生态下的主流技术面试题&#xff0c;课程特色&#xff1a; 1、全面&#xff0c;jvm、并发编程、mysql、rabbitmq、spring、mybatis、redis、分布式、微服务、数据结构等等…

在UE5中使用OverlayMaterial制作多材质效果

UE5.1中新增了OverlayMaterial&#xff0c;可以让物体套用2个材质球效果&#xff0c;如A材质球为正常材质内容&#xff0c;B材质球为菲涅尔&#xff0c;或是B材质球是法线外拓描边等&#xff0c;该功能类似Unity的多pass效果&#xff0c;方便了日常使用。 下面就讲将怎么用Ove…

(十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用

前言 本节内容我们主要介绍在Jenkins流水线中&#xff0c;其构建过程中的一些构建策略的配置&#xff0c;例如通过远程http构建、定时任务构建、轮询SCM构建、参数化构建、Git hook钩子触发构建等&#xff0c;可根据不同的需求完成不同构建策略的配置。 正文 Throttle build…

TypeScript on the way:学习TypeScript

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 早该学学了. 之前写过Python的类型系统,如果对于写C,Java,C#等这类语言来说,typing根本不成问题,所以理解TypeScript也不是问题. 特殊的类型 any,unknown与never any,unknown是"顶层类型",never是&quo…

Docker启动后怎样运行jar包文件

启动容器&#xff1a; docker run -it your-image-name /bin/bash 我们用ls查看文件&#xff0c;在我们进入容器时并没有看到jar包&#xff0c;我们需要将jar包复制到Docker容器中: docker cp /PATH/xxx.jar containerName:/tmp/workdir/xxx.jar 复制过后就能看到在对应路径…

USB-C 音频转接器工作原理介绍

Type-C音频转接器&#xff1a;引领未来视听新纪元 随着科技浪潮的推进&#xff0c;Type-C接口已逐渐成为电子设备的主流选择。其正反随意插、高速传输和强大功能等独特优势&#xff0c;使得Type-C接口在日常生活中的应用越来越广泛。而Type-C音频转接器&#xff0c;作为连接Ty…

第15届机械与航空航天工程国际会议 (ICMAE 2024) 即将召开!

2024年第15届机械与航空航天工程国际会议&#xff08;ICMAE 2024&#xff09;将于2024年7月17 日至20日在克罗地亚萨格勒布举行。近几十年来&#xff0c;机械与航空航天工程在机器人、汽车系统、工业自动化、太空探索等重点领域取得了显著进展。本次会议将汇聚行业内的专家、学…

牛刀小试 - C++ 学生信息管理系统

参考文档&#xff1a; C实现&#xff1a;学生管理系统&#xff08;详细解析&#xff09; 关于switch中的default里面的break是否可以省略这件事 需求要求&#xff1a; &#xff08;1&#xff09;增加记录 &#xff08;2&#xff09;查找记录 &#xff08;3&#xff09;删除…

linux ext3/ext4文件系统(part2 jbd2)

概述 jbd2&#xff08;journal block device 2&#xff09;是为块存储设计的 wal 机制&#xff0c;它为要写设备的buffer绑定了一个journal_head&#xff0c;这个journal_head与一个transaction绑定&#xff0c;随着事务状态的转移&#xff08;运行&#xff0c;生成日志&#…