旗鱼优化(SFO)算法(含MATLAB代码)

news2025/1/4 19:44:45

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

 

“很长时间没有更新啦,久等了~

今天推送的旗鱼优化算法是2019年提出的,大家可以用来作为对比算法。”

旗鱼优化算法(Sailfish Optimizer, SFO)的设计源于对海洋中旗鱼捕食沙丁鱼行为的模拟。严格来说,应该叫旗鱼优化器。作者在24个经典的单峰和多峰Benchmark函数上对SFO算法进行了评估,对比了六种不同的元启发式算法。实验结果表明,SFO算法比所有对比算法具有更好的性能。SFO算法的原始参考文献如下:

“Shadravan S, Naji H R, Bardsiri V K. The Sailfish Optimizer: A novel nature-inspired metaheuristic algorithm for solving constrained engineering optimization problems[J]. Engineering Applications of Artificial Intelligence, 2019, 80: 20-34.”

01
灵感来源

SFO算法的灵感源于一群捕猎的旗鱼,模拟的是旗鱼的捕食过程。在自然界中,它们会成群结队地捕猎,如图1所示。下面对攻击过程依次进行介绍:1) 发现猎物后,旗鱼会将其驱赶至水面;2) 到达合适位置后,旗鱼对整个鱼群进行包围;3) 沙丁鱼本身具有很强的机动性,对旗鱼来说非常具有挑战性;4) 在攻击时,旗鱼要么用它的喙进行一次猛烈的攻击,伤害几条沙丁鱼,要么干扰沙丁鱼,使其混乱,破坏它们的阵型;5) 旗鱼的速度是水生脊椎动物中有记录以来最高的,沙丁鱼根本无法避开致命的穿刺伤害。受伤的沙丁鱼一旦与鱼群分离,它们很快就会被旗鱼捕获;6) 旗鱼在开始攻击之前,会改变体色,从通常的蓝银色侧面变暗到几乎黑色。作者基于旗鱼以上的捕猎过程,建立了相应的数学模型,具体可分为交替攻击、捕获猎物和替换位置三个阶段。

图1 旗鱼捕食过程

02
算法设计

与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

03
计算流程

SFO算法的计算流程如图2所示:

图2 旗鱼优化算法流程图

04
实验仿真

对SFO算法的性能进行简单的测试。将SFO算法用于函数寻优,其MATLAB程序严格按照原始参考文献进行编写。此外,种群规模均为30,最大迭代次数为1000,基准函数采用的是CEC2005测试集。

这里以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)为例,展示SFO算法在30维环境下的收敛效果,如图3所示,这里就不再做进一步的分析了。

(a) f1

(b) f10

图3 SFO算法的收敛曲线

05
MATLAB代码

SFO算法的MATLAB代码可通过复制下方链接进入获得。代码严格按照原始参考文献编写,附有详细注释。

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

关于其他智能优化算法的MATLAB代码,可访问我的个人主页查看:

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

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

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

相关文章

Thread.sleep( )线程休眠的优化写法

TimeUnit.SECONDS.sleep(10)和Thread.sleep(10 * 1000)都可以用于线程休眠 代码如下: import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.concurrent.TimeUnit; /*** program: moon-cloud-car* author: 阿水* create…

MT6765 处理器参数 MTK6765芯片性能配置|详细参数

MT6765处理器,也被称为Helio P35,是联发科(MediaTek)推出的高性能智能芯片。作为目前市场上受欢迎的低成本智能芯片之一,MT6765以其卓越的性能和创新技术为用户提供了更加顺畅和高效的使用体验。 MT6765作为一款八核芯片,MT6765的…

最佳实践:基于vite3的monorepo前端工程搭建 | 京东云技术团队

一、技术栈选择 1.代码库管理方式-Monorepo: 将多个项目存放在同一个代码库中 ▪选择理由1:多个应用(可以按业务线产品粒度划分)在同一个repo管理,便于统一管理代码规范、共享工作流 ▪选择理由2:解决跨项…

Homeassistant --openwrt docker 安装

openwrt homeassistant安装教程 前提:在N1盒子上面烧录 f大的openwrt系统 (安装81o 或者82o都可以) 一.进入openwrt系统 通常为192.168.1.1 打开网络配置 点击网络点击接口然后修改 这样网络是属于旁路由上网了 可以联通网络了 主要需要填写正确 二.点击docker …

南大通用数据库-Gbase-8a-报错集锦-02-metadata is incomplete on localhost

一、版本信息 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43 二、问题原因 由于gbase.table_distribution存储了所有引擎为express的表元数据信息,如果此表出现数据损坏&a…

Linux使用PowerShell模块管理MsSql-Server

1.安装PowserShell 更新包列表 sudo apt-get update 安装依赖: sudo apt-get install -y wget apt-transport-https software-properties-common 下载 key: wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb&…

第三方apple pencil哪个好?好用的电容笔排行榜

由于Apple Pencil的推出,让iPad变成了一个轻量化的办公室工具,它的优点就是可以让画家在iPad上作画,能够适用于各种各样的绘画,并且非常适合一些上班族。今天就来为大家推荐几支适合画画的电容笔! 第一部分、电容笔选…

「实在RPA·服装制造数字员工」助力服装「智」造数字升级

服装制造业作为衣食住行的重要组成部分,除了在百姓生活中扮演者着重要角色之外,同时在经济发展中具有重要的地位和作用。它不仅提供了大量就业机会,促进国际贸易和经济发展,同时也推动了技术创新和消费需求的满足。为顺应数字经济…

Vue组件化、通过自定义指令子组件向父组件传递

1.如何安装Vue脚手架? 第一步(仅第一次执行):全局安装vue/clinpm install -g vue/cli 第二步:切换到你要创建项目的目录,然后使用命令创建项目vue create xxxx 第三步:启动项目npm run serve 2…

C语言中二维数组和二维数组分析

问题 最近有个同事发现一个问题:一个二维数组,想把它传给一个函数,具体代码如下: char array[3][128]; void fun(char** array) {strcpy(array[0],"confirm"); }当我试图直接把二维数组名传给函数的时候,f…

接入淘宝API接口,获取店铺详情轻松迈入大数据时代

随着电商行业的飞速发展,API接口已经成为了一种不可或缺的技术。作为中国最大的电商平台,淘宝也拥有着自己的API接口。本文将重点讲解淘宝API接口技术,包括其基本原理、使用方法、优缺点等方面,帮助大家进一步了解淘宝API接口的奥…

年度发布 | MeterSphere一站式开源持续测试平台发布v2.10 LTS版本

2023年5月25日,MeterSphere一站式开源持续测试平台正式发布v2.10 LTS版本。这是继2022年5月发布v1.20 LTS版本后,MeterSphere开源项目发布的第三个LTS(Long Term Support)版本。MeterSphere开源项目组将对MeterSphere v2.10 LTS版…

一个完整的APP定制开发流程是怎样的?

随着移动互联网的发展,越来越多的 APP应用软件进入人们的生活,让我们的生活更便捷、更舒适。而随着互联网技术的进步,移动互联网应用软件开发行业也越来越成熟,为了适应市场需求,各种功能强大、性能良好的 APP应用软件…

电商API接口系列封装(提高工程师时效性,降低错误率)

API接口封装是指将原本分散在各个模块或系统中的API接口进行封装,形成一个可重用且独立的API库。通过API接口封装,可以提高系统的可维护性和可扩展性,降低开发成本和维护难度。 API接口封装通常分为两个步骤: 定义API接口&#x…

涨知识!一文带你读懂空气质量数据(附Java 和小程序接入示例代码)

空气污染对人类健康和环境造成了巨大的危害。据统计,每年因空气污染导致的早逝人数超过数百万人。长期暴露在污染物中,人们易患呼吸系统疾病、心血管疾病、癌症等。此外,空气污染还对生态系统、农作物和能源消耗产生负面影响。 在解决空气质…

首届百度商业AI技术创新大赛启动 点燃AIGC革新“星火”

随着生成式AI在全球范围的热议,AIGC前沿技术也在快速迭代,正如百度CEO李彦宏所说 “人工智能发生了方向性改变,从辨别式AI走向生成式AI,生成式AI会带来极大的效率提升” 。而这一领域的发展,将推动AI产品应用深化&…

Spark入门这篇就够了(万字长文)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 Spark是什么Spark组件Spark的优势Word Count Spark基本概念ApplicationDriverMaster和WorkerExecutorJobTaskStageStage的划分 窄依赖 & 宽依赖ShuffleRDDDAG Spark执行流程Spark运行模式RDDRDD…

项目开发-依赖倒置、里式替换、接口隔离的应用深入理解

文章目录 前言依赖倒置定义不符合依赖倒置原则是什么样子😄完善 里式替换定义具体应用 接口隔离定义具体应用 前言 最近在做.net项目和学习这个设计模式中的依赖倒置和工厂方法,这个过程当中发现在开发这个.net项目中有很多不合理的地方,就是…

(转载)基于粒子群算法的多目标搜索算法(matlab实现)

1 理论基础 在实际工程优化问题中,多数问题是多目标优化问题。相对于单目标优化问题,多目标优化问题的显著特点是优化各个目标使其同时达到综合的最优值。然而,由于多目标优化问题的各个目标之间往往是相互冲突的,在满足其中一个…

KD7742交直流耐压绝缘分析仪

一、产品简介 KD7742交直流耐压绝缘分析仪具有交/直流耐压、绝缘电阻等项目的测试分析功能,能显示电压、电流和电阻的波形图以及趋势图,以便更直观的监测分析绝缘性能和绝缘崩溃时的各项指标,适用于高要求的测试分析场合。 产品具有测试参数范…