智能优化算法:旗鱼优化算法-附代码

2019智能优化算法:旗鱼优化算法-附代码


摘要:旗鱼优化器(Sailed fish Optimizer,SFO)是于2019提出的一种新型优化算法,具有寻优能力强,收敛快的优点。

1.算法原理

旗鱼优化器(SFO),它的灵感来自一群捕猎的旗鱼。这一方法由两个方面组成,一是加强对目前为止最佳群体的搜索,二是沙丁鱼种群的多样性搜索空间。

1.1初始化

旗鱼算法初始化包括旗鱼的初始化和沙丁鱼的初始化。其初始化是在给定的搜索空间内随机初始化。其中旗鱼种群用 X S F X_{SF} XSF表示,沙丁鱼种群用 X F X_F XF表示。初始化后,其中旗鱼适应度值最好的种群用 X e l i t e S F X_{eliteSF} XeliteSF表示。沙丁鱼适度值最好的种群用 X i n j u r e d S X_{injuredS} XinjuredS表示。

1.2 旗鱼位置更新

旗鱼的位置更新用下式表示:
X n e w S F i = X e l i t e S F i − λ i ∗ ( r a n d ( 0 , 1 ) ∗ ( + X e l i t e S F i + X i n j u r e d S i 2 ) − X o l d S F i ) (1) X_{newSF}^i=X_{eliteSF}^i - \lambda_i*(rand(0,1)*(\frac{ + X_{eliteSF}^i + X_{injuredS}^i}{2}) - X_{oldSF}^i) \tag{1} XnewSFi=XeliteSFiλi(rand(0,1)(2+XeliteSFi+XinjuredSi)XoldSFi)(1)
其中 X e l i t e S F i X_{eliteSF}^i XeliteSFi表示在当前迭代次数i时,旗鱼的最佳位置。 X i n j u r e d S i X_{injuredS}^i XinjuredSi表示在当前迭代次数i时,沙丁鱼的最佳位置。其中 λ i \lambda_i λi系数的定义入下:
λ i = 2 ∗ r a n d ( 0 , 1 ) ∗ P D − P D (2) \lambda_i = 2*rand(0,1)*PD-PD \tag{2} λi=2rand(0,1)PDPD(2)

其中PD代表猎物群的密度用如下表达式表示:
P D = 1 − N S F N S F + N S (3) PD = 1 - \frac{N_{SF}}{N_{SF} + N_S}\tag{3} PD=1NSF+NSNSF(3)
其中 N S F , N S N_{SF},N_S NSF,NS分别代表旗鱼和沙丁鱼的数量。

1.3 沙丁鱼的位置更新

沙丁鱼的位置更新如下式:
X n e w S i = r ∗ ( X e l i t e S F i − X o l d S i + A P ) (4) X_{newS}^i = r*(X_{eliteSF}^i - X_{oldS}^i + AP) \tag{4} XnewSi=r(XeliteSFiXoldSi+AP)(4)
其中 X e l i t e S F i X_{eliteSF}^i XeliteSFi表示在当前迭代次数i时,旗鱼的最佳位置。AP代表旗鱼的攻击力度。其计算方式如下:
A P = A ∗ ( 1 − 2 ∗ I t r ∗ e ) (5) AP = A*(1-2*Itr*e) \tag{5} AP=A(12Itre)(5)
其中A,e控制控制攻击力度的变换,使A线性变换到0.当AP>0.5时用上式更新沙丁鱼全部位置。当AP<0.5时。更新沙丁部分位置。

部分位置的范围定义如下:
α = N S ∗ A P (6) \alpha = N_S*AP\tag{6} α=NSAP(6)

β = d i ∗ A P (7) \beta = d_i*AP \tag{7} β=diAP(7)

其中 α \alpha α代表要更新沙丁鱼的数量, β \beta β表示要更新的维度数量。

1.4 综合考虑旗鱼和沙丁鱼的位置

如果沙丁鱼的位置优于旗鱼的位置,将沙丁鱼的位置付给旗鱼,并且被移除。
X S F i = X S i , i f   f ( S i ) < f ( S F i ) (8) X_{SF}^i = X_S^i , if\, f(Si)<f(SF_i) \tag{8} XSFi=XSi,iff(Si)<f(SFi)(8)
算法流程如下:

Step1. 初始化种群和参数。

Step2.计算旗鱼和沙丁鱼的适应度值,并且记录最优适应度值和位置。

Step3.更新旗鱼位置。更新沙丁鱼位置。如果攻击力度小于0.5,计算 α , β \alpha,\beta α,β的值,并且更新部分位置。否则,全部跟新更新沙丁鱼位置。

Step4 . 沙丁鱼,旗鱼位置替换。

Step5.计算所有适应度值,并更新记录最优适应度值和位置。

Step7.是否满足迭代停止条件,如果满足则输出结果,否则重复Step2 - Step7;

2.算法结果

在这里插入图片描述

3.参考文献

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

4.Matlab代码

5.Python代码

个人资料介绍

  • 9
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
基于旗鱼优化的机器人路径规划算法是一种启发式算法,用于解决机器人在给定环境中的路径规划问题。该算法借鉴了旗鱼捕食行为中的优化策略,通过模拟旗鱼的搜索和追逐目标的行为来寻找最优路径。 以下是基于旗鱼优化的机器人路径规划算法的基本步骤: 1. 环境建模:将机器人运动的环境进行建模,包括地图或场景的表示。可以使用网格地图或连续空间表示,根据具体情况选择合适的表示方法。 2. 目标和约束定义:定义机器人的起始位置和目标位置,同时考虑可能存在的障碍物或其他约束条件。 3. 旗鱼优化算法初始化:初始化旗鱼群体的位置和速度。每个旗鱼在环境中被视为一个解决方案,并具有一个适应度值来评估其优劣。 4. 旗鱼行为模拟:模拟旗鱼的行为,包括搜索和追逐目标。每个旗鱼根据其当前位置和速度,以及周围环境信息来决定下一步的移动方向和速度。 5. 适应度评估:根据机器人在环境中的位置和路径,计算适应度值。适应度值可以考虑路径长度、避障能力、平滑性等因素。 6. 更新旗鱼位置:根据旗鱼的当前位置和速度,更新其下一步的位置。可以使用旗鱼优化算法中的迭代公式来更新位置。 7. 终止条件判断:根据预设的终止条件(如达到最大迭代次数或满足特定目标),判断是否结束算法。如果未满足终止条件,则返回步骤4;否则,进入下一步。 8. 最优路径提取:从旗鱼群体中选择适应度最好的旗鱼作为最优路径解决方案。 基于旗鱼优化的机器人路径规划算法可以帮助机器人在复杂环境中高效地规划路径,同时考虑了避障和路径优化的问题。然而,该算法的性能也受到参数设置和环境建模的影响,需要根据具体场景进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值