塘鹅优化算法(GOA)(含MATLAB代码)

news2025/1/18 6:22:44

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

塘鹅优化算法(Gannet Optimization Algorithm, GOA)将塘鹅在觅食过程中的各种独特行为数学化,并用于勘探和开发。GOA的U形和V形潜水模式负责在搜索空间中探索最优区域,突然旋转和随机游走确保在搜索区域找到更精确的解决方案。将GOA与其他进化算法在28个Benchmark函数上进行比较。结果表明,GOA在高维上的运行时间更短,可以提供更好的解决方案。它的原始参考文献如下:

“Pan J S, Zhang L G, Wang R B, et al. Gannet optimization algorithm: A new metaheuristic algorithm for solving engineering optimization problems[J]. Mathematics and Computers in Simulation, 2022, 202: 343-373.”

图片

01
灵感来源

图片

塘鹅在天空中发现猎物后,会根据猎物在水中的深浅程度,分为U型和V型两种方式潜入水中,将塘鹅的这种行为模式模拟为勘探阶段;进入水中之后,根据塘鹅的捕捉能力,分为两种探索模式:如果捕捉能力不足,塘鹅会随机游走去发现新的食物,如果捕捉能力比较强,会跟随猎物突然旋转去捕捉猎物,这种行为模式被模拟为开发阶段。

基于这样的思想,作者便设计出了GOA。

02
算法设计

2.1初始化阶段

图片


 

2.2勘探阶段

图片

图片

2.3开发阶段

图片

03
计算流程

GOA的计算流程图如图1所示(注意:图1截自GOA的原文,因此图中的公式序号需要对照原文看):

图片

图1 GOA的计算流程图

04
实验仿真

这里对GOA的性能进行简单的测试。首先将GOA用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取N等于50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集、CEC2020优化函数测试集和CEC2022优化函数测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。

首先,我们来检验一下GOA对全局勘探和局部开发的平衡能力。如图2所示,是GOA在CEC2005测试函数f7上的勘探和开发占比曲线。

图片

图2 GOA在CEC2005 f7上的勘探和开发百分占比变化曲线

其次,以CEC2005的单峰函数Schwefel's 2.22 (f2)和多峰函数Ackley (f10)为例,展示GOA在30维环境下的收敛效果,如图3所示。

图片

(a) f2

图片

(b) f10

图3 GOA在CEC2005两个测试函数上的收敛曲线

再次,以CEC2013测试集中的单峰函数F1为例,展示GOA在30维环境下的收敛效果,如图4所示。(注意是画的误差曲线)

图片

图4 GOA在CEC2013 F1上的误差收敛曲线

接着,以CEC2014测试集中的多模态函数F14为例,展示GOA在30维环境下的收敛效果,如图5所示。(注意是画的误差曲线)

图片

图5 GOA在CEC2014 F14上的误差收敛曲线

再然后,以CEC2017测试集中的多模态函数F4为例,展示GOA在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)

图片

图6 GOA在CEC2017 F4上的误差收敛曲线

在此之后,以CEC2020优化函数测试集中的复合函数F9为例,展示GOA在10维环境下的收敛效果,如图7所示。(注意是画的误差曲线)

图片

图7 GOA在CEC2020优化函数 F9上的误差收敛曲线

最后,以CEC2022优化函数测试集中的单峰函数F1为例,展示GOA在10维环境下的收敛效果,如图8所示。(注意是画的误差曲线)

图片

图8 GOA在CEC2022优化函数 F1上的误差收敛曲线

进一步,可将GOA应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:

算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)

算法应用:工程优化设计(第2期)(含MATLAB代码)

这里以压力容器设计(Pressure vessel design)问题为例,展示GOA求解效果。收敛曲线如图9所示。

图片

图9 GOA在压力容器设计问题上的目标函数收敛曲线

05
MATLAB代码

GOA跑CEC2005测试集

关注公众号:启发式算法讨论

GOA跑CEC2013测试集:
关注公众号:启发式算法讨论

GOA跑CEC2014测试集:
关注公众号:启发式算法讨论

GOA跑CEC2017测试集:

关注公众号:启发式算法讨论

GOA跑CEC2020优化函数测试集:

关注公众号:启发式算法讨论

GOA跑CEC2022优化函数测试集:

关注公众号:启发式算法讨论

GOA的勘探(Exploration)和开发(Exploitation)占比分析:

关注公众号:启发式算法讨论

GOA的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。

关注公众号:启发式算法讨论

GOA的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。

关注公众号:启发式算法讨论

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

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

相关文章

Qt打开及创建项目,运行程序(1)

安装之后, 1.文件->新建文件或项目 2.Application->Qt Widgets Application 3.自己设置名称和路径 4.这一步非常非常重要,要选择编译器,(MinGW是可以在Qt里用,如果想与VS交互,要选择MSVC&#xff09…

下载配置 maven并在 idea 上应用

目录 一 maven 定义 二 Maven特点 三 Maven仓库 四 安装配置maven 步骤一:准备安装包,解压 步骤二:配置maven的环境变量 步骤三:测试maven的环境变量是否配置成功 步骤四:配置maven本地仓库 步骤五:阿里云、腾讯镜像配置 步骤六:全局配置idea的maven路径 步骤七:创建…

Linux 系统服务日志查询 journalctl:查询 systemd 日记

journalctl:查询 systemd 日记 systemd 在取代 SUSE Linux Enterprise 12 中的传统 init 脚本时(参见第 13 章 “systemd 守护程序”),引入了自身的称为日记的日志记录系统。由于所有系统事件都将写入到日记中,因此&a…

51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真程序原理图报告讲解视频) 1.主要功能:2.仿真3. 程序代码4. 原理图参考元器件清单 5. 设计报告6. 设计资料内容清单 51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真程序原理图报告…

webassembly入门篇

背景 随着职业的发展看到的东西也越来越多,webassembly也慢慢进入了视野。老哥铁柱公司做渲染用到webassembly、有幸参加掘金前端沙龙线下活动大佬们也在讲webassembly(大佬叫它wasm)等等,wasm有强于js的性能以及各种低级语言&…

软件架构师 Debugging

软件架构师 Debugging 目录概述需求: 设计思路实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survi…

YOLOv8:官方项目训练

1. 基础解读 detect/train.py中有DetectionTrainer类,继承自BaseTrainer类,并实现了诸如get_dataloader, get_model等接口。 setup_model接口用于准备模型,首先会检查self.model是否是torch.nn.Module,即已经是导入的模型。如果不…

浅谈外贸独立站必须配置SSL证书的必要性

在互联网时代,外贸独立站已经成为了各行各业企业开拓海外市场的重要途径。而在网络安全问题日益凸显的当今,保护数据传输安全成为当今重要的议题。为了保护用户隐私和数据安全,配置SSL证书已经变得尤为重要。 SSL证书,即安全套接…

苍穹外卖集成 Apache POI Java实现Excel文件的读写下载

苍穹外卖 day12 Echats 营业台数据可视化整合_软工菜鸡的博客-CSDN博客 Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is pleased to announce the release of 5.2.3. Several dependencies …

VBA技术资料MF53:VBA_突出显示大于某值的单元格

【分享成果,随喜正能量】理解自己,成为自己。流水不腐,户枢不蠹。清楚自己的需求,把握自己的节奏,不迷茫,不徘徊,朝着自己认为对的方向一路向前。人这一生最重要的是做好两件事:做自…

激光焊接汽车尼龙塑料配件透光率测试仪

激光塑性成型技术是近年来塑性加工界出现的一种新技术。通常塑料主要是通过加热加压依赖模具成型。这对于单品种、大批量生产是有效的;而对于各种不同形状的塑料制件则需要昂贵的模具‚装置也较庞大。 高度聚焦的激光束垂直照射在待变形的板料上‚由于塑料直接吸收激…

渗透测试漏洞原理之---【业务安全】

文章目录 1、业务安全概述1.1业务安全现状1.1.1、业务逻辑漏洞1.1.2、黑客攻击目标 2、业务安全测试2.1、业务安全测试流程2.1.1、测试准备2.1.2、业务调研2.1.3、业务建模2.1.4、业务流程梳理2.1.5、业务风险点识别2.1.6 开展测试2.1.7 撰写报告 3、业务安全经典场景3.1、业务…

什么是高可用,如何实现高可用

公众号阿里技术(ID:ali_tech) 什么是高可用 无论是一个域,一个 BG,还是一个站点,虽然范围有大有小,对象有所不同,但其高可用的理念都是相通的,今天将自己对高可用的一点点思考以及总结的“nPRT …

海光异构智能计算专区上线飞桨AI Studio!

近日,海光异构智能计算专区正式上线飞桨AI Studio(星河社区)。专区内容来自官方发布和社区贡献,包含双方产品合作成果、行业解决方案、优秀项目展示等,致力于帮助开发者快速了解体验飞桨、为海光异构智能计算软硬协同优化带来更高性能提升。 …

数据结构与算法学习(day5)——队列算法

前言 本章我们学习队列。 本章的学习目标: (1)能够使用队列算法解决简单的实际问题。 (2)能够用结构体来优化队列算法,并实际应用中使用。 题目 先看题目,题目就是应用场景,先明白是…

AP5101C 高压线性恒流IC 宽电压6-100V LED汽车大灯照明 台灯LED矿灯 指示灯电源驱动

产品描述 AP5101C 是一款高压线性 LED 恒流芯片 , 外围简单 、 内置功率管 , 适用于6- 100V 输入的高精度降压 LED 恒流驱动芯片。电流2.0A。AP5101C 可实现内置MOS 做 2.0A,外置 MOS 可做 3.0A 的。AP5101C 内置温度保护功能 ,温度保护点为…

Jenkins Jenkinsfile管理 Pipeline script from SCM

一、Jenkinsfile理解 Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码…

「通信原理」格雷码的生成与破译

「通信原理」格雷码的生成与破译 格雷码,gray code,相邻两数之间只有一个bit发生了改变,因此相比于自然编码的二进制系统,格雷编码的更不容易出错。使用卡诺图化简布尔代数式的时候,也会用到格雷码。本文将介绍三种格…

AggregateFunction结合自定义触发器实现点击率计算

背景: 接上一篇文章,ProcessWindowFunction 结合自定义触发器会有状态过大的问题,本文就使用AggregateFunction结合自定义触发器来实现,这样就不会导致状态过大的问题了 AggregateFunction结合自定义触发器实现 flink对于每个窗…

前端使用elementui开发后台管理系统的常用功能(持续更新)

前言:本次的文章完全是自己开发中遇到的一些问题,经过不断的修改终于完成的一些功能,当个快捷的查看手册吧~ elementui开发后台管理系统常用功能 高级筛选的封装elementui的表格elementui的表格实现跨页多选回显elementui的表单elementui的日…