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

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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
优化算法(Sailfish Optimization, SFO)是一种启发式优化算法,灵感来自于旗鱼的捕食行为和群体协作。旗鱼是一种快速和协作的海洋鱼类,通过捕食行为展示出了高效的搜索和追逐目标的能力。 以下是旗鱼优化算法的基本步骤: 1. 个体表示:将待优化问题转化为一个个体的表示形式,通常使用向量或数组来表示个体的解。 2. 种群初始化:随机生成一定数量的个体作为初始种群。每个个体对应一个可能的解。 3. 旗鱼行为模拟:模拟旗鱼的搜索和追逐目标行为。每个个体被视为一个旗鱼,并根据当前的解进行搜索和调整位置。 4. 适应度评估:对每个个体计算适应度值,用于评估其优劣。适应度函数根据具体问题设定,可以是目标函数的值,也可以是其他评估指标。 5. 旗鱼位置更新:根据旗鱼行为模拟的结果,更新旗鱼的位置。可以使用迭代公式来更新位置,以便更好地接近目标。 6. 旗鱼群体协作:通过旗鱼之间的交流和协作来提高搜索效率。可以引入一些策略,如信息共享、领导者选择等。 7. 终止条件判断:根据预设的终止条件(如达到最大迭代次数、满足特定目标等),判断是否结束算法。如果未满足终止条件,则返回步骤4;否则,进入下一步。 8. 最优解提取:从旗鱼群体中选择适应度最好的旗鱼作为最优解。 旗鱼优化算法通过模拟旗鱼的捕食行为和群体协作,具有较强的全局搜索和优化能力。该算法在解决连续优化问题、离散优化问题以及组合优化问题等方面都有应用。然而,算法的性能受到参数设置和问题建模的影响,需要根据具体问题进行调整和优化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

algorithmzzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值