【智能算法】阿基米德优化算法(AOA)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2020年,Hashim等人受到阿基米德定律启发,提出了阿基米德优化算法(Archimedes Optimization Algorithm,AOA)。

2.算法原理

2.1算法思想

AOA模仿了完全或部分浸没在流体中的物体发生碰撞时所受浮力的关系,在迭代过程中不断调整个体密度、体积和加速度,从而使个体达到平衡状态,适应度值优的个体引导种群收敛到最优位置。
在这里插入图片描述

2.2算法过程

AOA 的种群个体是浸入流体中的物体,通过调整物体的密度、体积和加速度来实现种群位置的更新。
AOA算法根据物体是否与液体发生碰撞,将其分为全局探索和局部搜索阶段。如果未发生碰撞,则算法执行全局探索阶段;反之,则执行局部开发阶段。AOA通过转移因子TF实现算法从全局探索切换到局部开发的过程。

初始阶段

AOA 初始化个体的密度( den) 、体积( vol) 、加速度( acc) ,选出当前最优适应度个体( xbest ) 、最优密度( den) 、最优体积( vol) 以及最优加速度( acc):
T F = exp ⁡ ( t − t max ⁡ t max ⁡ ) (1) TF=\exp(\frac{t-t_{\max}}{t_{\max}})\tag{1} TF=exp(tmaxttmax)(1)
d t + 1 = exp ⁡ ( t m a x − t t m a x ) − ( t t m a x ) d e n i t + 1 = d e n t i + r a n d × ( d e n b e s t − d e n i t ) v o l i t + 1 = v o l t i + r a n d × ( v o l b e s t − v o l i t ) (2) \begin{gathered} d^{t+1}=\exp(\frac{t_{max}-t}{t_{max}})-(\frac{t}{t_{max}}) \\ den_{i}^{t+1}=den_{t}^{i}+rand\times(den_{best}-den_{i}^{t}) \\ vol_{i}^{t+1}=vol_{t}^{i}+rand\times(vol_{best}-vol_{i}^{t}) \end{gathered}\tag{2} dt+1=exp(tmaxtmaxt)(tmaxt)denit+1=denti+rand×(denbestdenit)volit+1=volti+rand×(volbestvolit)(2)

全局探索阶段:

当 TF<=0.5 时,算法进行全局探索阶段,个体的加速度更新:
a c c i t + 1 = d e n m r + v o l m r + a c c m r d e n i t + 1 × v o l i t + 1 (3) acc_i^{t+1}=\frac{den_{mr}+vol_{mr}+acc_{mr}}{den_i^{t+1}\times vol_i^{t+1}}\tag{3} accit+1=denit+1×volit+1denmr+volmr+accmr(3)
对加速度进行标准化处理,用来更新碰撞个体位置:
a c c i → n o r m t + 1 = u × a c c i t + 1 + min ⁡ ( a c c ) max ⁡ ( a c c ) × min ⁡ ( a c c ) + l (4) acc_{i\rightarrow norm}^{t+1}=u\times\frac{acc_{i}^{t+1}+\min(acc)}{\max(acc)\times\min(acc)}+l\tag{4} accinormt+1=u×max(acc)×min(acc)accit+1+min(acc)+l(4)
碰撞个体的位置更新:
x i t + 1 = x i t + c 1 × r a n d × a c c i − n o r m t + 1 × d × ( x r a n d − x i t ) (5) x_{i}^{t+1}=x_{i}^{t}+c_{1}\times rand\times acc_{i-norm}^{t+1}\times d\times(x_{rand}-x_{i}^{t})\tag{5} xit+1=xit+c1×rand×accinormt+1×d×(xrandxit)(5)

局部开发阶段:

当 TF >0.5 时,算法处于局部开发阶段,个体加速度更新:
a c c i t + 1 = d e n b e s t + v o l b e s t + a c c b e s t d e n i t + 1 × v o l i t + 1 (6) acc_i^{t+1}=\frac{den_{best}+vol_{best}+acc_{best}}{den_i^{t+1}\times vol_i^{t+1}}\tag{6} accit+1=denit+1×volit+1denbest+volbest+accbest(6)
对加速度进行标准化处理,用来更新平衡个体位置:
x i t + 1 = x b e s t t + F × c 2 × r a n d × a c c i − n o r m t + 1 × d × ( T × x b e s t − x i i ) (7) x_i^{t+1}=x_{best}^{t}+F\times c_2\times rand\times acc_{i-norm}^{t+1}\times d\times(T\times x_{best}-x_i^{i})\tag{7} xit+1=xbestt+F×c2×rand×accinormt+1×d×(T×xbestxii)(7)
F 是改变个体移动方向的标志,用于决定个体位置更新的方向:
F = { + 1 if p ⩽ 0.5 − 1 if p > 0.5 (8) \left.F=\left\{\begin{array}{ll}+1&\text{if}p\leqslant0.5\\-1&\text{if}p>0.5\end{array}\right.\right.\tag{8} F={+11ifp0.5ifp>0.5(8)

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Hashim F A, Hussain K, Houssein E H, et al. Archimedes optimization algorithm: a new metaheuristic algorithm for solving optimization problems[J]. Applied intelligence, 2021, 51: 1531-1551.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python导入本地当前目录下的文件和父目录下的文件

今天我想要导入本地当前目录下的文件和父目录下的文件&#xff0c;网上查了很多教程&#xff0c;但还都是报错&#xff0c;最后几经尝试&#xff0c;终于成功解决了这一问题&#xff0c;在这里详细记录一下过程&#xff0c;同时也希望能够对大家有所帮助~~~:&#xff09; 导入…

Python人工智能应用---中文分词词频统计

目录 1.中文分词 2.循环分别处理列表 &#xff08;1&#xff09;分析 &#xff08;2&#xff09;代码解决 3.词袋模型的构建 &#xff08;1&#xff09;分析需求 &#xff08;2&#xff09;处理分析 1.先实现字符串的连接 2.字符串放到新的列表里面 4.提取高频词语 &…

vivado 向 SVF 目标添加器件

向 SVF 目标添加器件 创建 SVF 目标后 &#xff0c; 可向其中添加器件以定义 SVF JTAG 器件链配置。 SVF JTAG 器件链配置应与目标硬件链相匹配 &#xff0c; 以 确保能正确执行 SVF 文件。 使用 Vivado IDE 单击“ ”按钮以向 SVF 链添加赛灵思器件或非赛灵思器件。…

程序·人生

诡异之极 2024.03.12 清新环境&#xff08;股票代码002573&#xff09;委托卖出 20000股&#xff0c;委托价4.58&#xff0c;当日最高价4.57 2024.03.11 清新环境&#xff08;股票代码002573&#xff09;委托卖出 20000股&#xff0c;委托价4.55&#xff0c;当日最高价4.54 …

【Python系列】读取 Excel 第一列数据并赋值到指定列

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

windwos安全加固

一、账号管理 按用户类型分配账号 目的&#xff1a;根据系统要求&#xff0c;设定不同账户和组&#xff0c;管理员、数据库 sa、审计用户、来宾用户等 实施方法&#xff1a; 打开本地用户和计算机管理器 ​ 1.打开运行&#xff0c;输入lusrmgr.msc 2.根据用户要求将账户加入…

鸡尾酒排序解读

在数据处理的海洋中&#xff0c;排序算法无疑是引领我们探索数据规律的灯塔。今天&#xff0c;我们要探讨的是一种有趣且独特的排序算法——鸡尾酒排序。鸡尾酒排序&#xff0c;也被称为定向冒泡排序、双冒泡排序或搅拌排序&#xff0c;是冒泡排序的一种变体&#xff0c;它通过…

[计算机效率] 磁盘空间分析工具:FolderSize

3.15 磁盘空间分析工具&#xff1a;FolderSize FolderSize是一款磁盘管理工具&#xff0c;提供预约交互式磁盘空间分析体验&#xff0c;可以可视化观察磁盘空间使用情况。程序可以帮助用户快速查看并统计硬盘中的各个分区所占用的空间大小以及文件夹和文件的大小&#xff0c;并…

CCleaner如何还原系统 CCleaner怎么恢复注册表 ccleaner官方下载

CCleaner是一款电脑清理软件&#xff0c;其中的注册表清理功能是该软件很重要的功能。注册表作为电脑的重要文件&#xff0c;不可以随便清理&#xff0c;而CCleaner可以帮我们安全&#xff0c;快速地清除注册表。同时&#xff0c;CCleaner还有还原系统的功能。下面将为大家介绍…

Windows与Linux路径分隔符对比及Java代码实战

在Windows中&#xff0c;磁盘中用反斜杠&#xff08;又称为右斜杠&#xff09;\表示路径的分隔。在浏览器中用正斜杠/来表示路径的分隔。 Linux则是统一用/表示路径的分隔的。下面给出Linux中一些常见的路径表示&#xff1a; / 表示根目录./ 表示当前目录…/ 表示上级目录 …

如果夸克网盘开了会员下载还是很慢怎么办

最近发现一个windows系统下很奇怪的bug&#xff0c;通过夸克网盘客户端下载别人分享的夸克网盘内容的时候&#xff0c;莫名其妙的会在10M/s和0M/s之间来回徘徊&#xff0c;速度慢到不能忍。 在尝试了几种方法之后&#xff0c;发现一种神奇的方法居然可以解决这个奇怪的bug...所…

C++:初步接触C++(2)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习C&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 内联函数1.概念2.特性 auto关键字1.auto简介2.auto的使用细则3.auto不能推导的场景 基于范围…

「每日跟读」英语常用句型公式 第3篇

「每日跟读」英语常用句型公式 第3篇 1. I don’t know how to ____ 我不知道如何_____ I don’t know how to play soccer (我不知道怎么踢足球) I don’t know how to study&#xff08;我不知道如何学习&#xff09; I don’t know how to play chess (我不知道如何下国…

备战蓝桥杯---刷二分与前缀和题

刷点题~ 1.二分多路归并算法 对于每一个技能&#xff0c;我们把它看成一个等差数列&#xff0c;我们把所有可能都放到一个集合里&#xff0c;排个序&#xff0c;取前m个大即可&#xff0c;现在考虑优化&#xff0c;假如m不是很大&#xff0c;我们直接用优先队列即可&#xff0…

普通Java工程可执行JAR两种打包方式探讨

文章目录 一、需求概述二、代码结构三、运行结果四、打包设置1. 一体化可执行包2. 带外部依赖lib的可执行包 五、打包运行1. 源码放送2. 打包执行3. 打包结果 一、需求概述 普通Java工程 docker-show 实现了定时打印docker应用信息&#xff0c;现在需要将其打包成可执行Jar部署…

设计模式总结-装饰者模式

模式动机 一般有两种方式可以实现给一个类或对象增加行为&#xff1a; 继承机制&#xff0c;使用继承机制是给现有类添加功能的一种有效途径&#xff0c;通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的&#xff0c;用户不能控制增…

使用msf进行有防火墙限制的3389端口转发

使用msf进行有防火墙限制的3389端口转发 这里主要是针对在内网中遇到需要开启3389的时候&#xff0c;发现存在防火墙&#xff0c;就没有办法直接远程连接&#xff0c;这个时候就可以使用端口转发使用msf&#xff0c;使用前记得先初始化&#xff0c;连接好数据库这里先使用msf进…

如何部署上线项目

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 多环境多环境分类前端多环境实战请求地址启动方式项目配置 后端多环境实战 项目部署原始部署前端…

深入理解计算机系统 家庭作业 2.84

这题没有这个要求所以可以用 ? > : < 这种运算 以下代码用的是位级运算.因为我误解了题意 呜呜呜 想看用判断的代码请自行百度 ((((ux<<9>>9)<<((ux<<1>>24)-127)) - ((uy<<9>>9)<<((uy<<1>>24)-127)))>…

当代软件专业大学生与青年在新质生产力背景下的发展探究

在新质生产力的浪潮中,信息技术以前所未有的速度革新,为软件专业的大学生和青年带来了丰富的机遇,同时也伴随着一系列的挑战。他们如何把握时代的脉搏,实现个人的发展,成为了值得深入探讨的话题。 一、新质生产力背景下的机遇 随着新质生产力的不断发展,信息技术在各个领…