爬行动物优化算法(Reptile Search Algorithm,RSA)(附Matlab代码,完整,免费)

一、算法灵感

  爬行动物优化算法(Reptile Search Algorithm, RSA)是2021年提出的一种元启发式优化算法,其灵感来自于鳄鱼的狩猎行为。鳄鱼的狩猎行为主要可以分为围猎(探索)和捕食(开发)两个阶段,通过大步行走(腹部离地行走)或小步行走(腹部贴地行走)进行围猎,通过狩猎协调或狩猎合作进行捕食。

二、算法介绍

2.1 初始化

  在RSA中,优化过程从公式(1)中所示的一组候选解 x x x 开始,这些候选解是随机生成的,在每次迭代中,获得的最佳解被视为近最优解。
x ( i , j ) = r a n d × ( U B − L B ) + L B , j = 1 , 2 , . . . , n (1) {x_{(i,j)}} = rand \times (UB - LB) + LB,j = 1,2,...,n \tag{1} x(i,j)=rand×(UBLB)+LB,j=1,2,...,n(1)其中, x ( i , j ) x_{(i,j)} x(i,j) 表示第 i i i 个解的第 j j j 个位置, N N N 表示候选解的数量, n n n 表示给定问题的维数。 r a n d rand rand 是一个随机值, L B LB LB U B UB UB 分别表示给定问题的下界和上界。

2.2 围猎(探索阶段)

  在本节中,将介绍RSA的围猎行为(探索阶段)。根据围捕行为,鳄鱼在围捕过程中有两种策略,即离地行走和贴地行走。这些行为致力于全局搜索,与开发阶段不同,这些策略(离地和贴地行走)不允许鳄鱼轻易接近猎物,因为它们会受到干扰。但是,这可以使他们探索更多的空间,经过几次探索,也许可以找到猎物密集区。此外,通过广泛的探索也有利于鳄鱼之后的捕猎。探索策略的切换取决于两个条件,离地行走策略以 t ≤ T 4 t \le {T \over 4} t4T 为执行条件,贴地行走策略以 t > T 4 t > {T \over 4} t>4T t ≤ T 2 t \le {T \over 2} t2T 为执行条件。

2.2.1 离地行走

  离地行走策略的数学公式如下:
x ( i , j ) ( t + 1 ) = B e s t j ( t ) × − η ( i , j ) ( t ) × β − R ( i , j ) ( t ) × r a n d (2) {x_{(i,j)}}(t + 1) = Bes{t_j}(t) \times - {\eta _{(i,j)}}(t) \times \beta - {R_{(i,j)}}(t) \times rand \tag{2} x(i,j)(t+1)=Bestj(t)×η(i,j)(t)×βR(i,j)(t)×rand(2)其中 B e s t j ( t ) Best_j(t) Bestj(t) 是迄今为止获得的最佳解中的第 j j j 个位置, r a n d rand rand 表示一个在 0 0 0 1 1 1 之间的随机数, t t t 是当前迭代的次数, T T T 是最大迭代次数。 η ( i , j ) η_{(i,j)} η(ij) 表示第 i i i 个解中第 j j j 个位置的狩猎算符,其使用公式(3)计算。 β β β 是一个敏感参数,控制迭代过程中离地行走的勘探精度,值为 0.1 0.1 0.1。缩减函数 R ( i , j ) R_{(i,j)} R(i,j) 是用于缩减搜索区域的值,其使用等式(4)计算。
η ( i , j ) = B e s t j ( t ) × P ( i , j ) (3) {\eta _{(i,j)}} = Bes{t_j}(t) \times {P_{(i,j)}} \tag{3} η(i,j)=Bestj(t)×P(i,j)(3)其中, P ( i , j ) P_{(i,j)} P(i,j) 是获得的最佳解的第 j j j 个位置与当前解的第 j j j 个位置之间的百分比差,使用公式(5)进行计算。
R ( i , j ) = B e s t j ( t ) − x ( r 1 , j ) B e s t j ( t ) + ε (4) {R_{(i,j)}} = {{Bes{t_j}(t) - {x_{(r_1,j)}}} \over {Bes{t_j}(t) + \varepsilon }} \tag{4} R(i,j)=Bestj(t)+εBestj(t)x(r1,j)(4)其中, r 1 r_1 r1 是介于 [ 1 , N ] [1, N] [1,N] 之间的随机数, ε \varepsilon ε 为一个极小值用于防止分母为零。
P ( i , j ) = α + x ( i , j ) − M ( x i ) B e s t j ( t ) × ( U B ( j ) − L B ( j ) ) + ε (5) {P_{(i,j)}} = \alpha + {{{x_{(i,j)}} - M({x_i})} \over {Bes{t_j}(t) \times (U{B_{(j)}} - L{B_{(j)}}) + \varepsilon}} \tag{5} P(i,j)=α+Bestj(t)×(UB(j)LB(j))+εx(i,j)M(xi)(5)式中, M ( x i ) M(x_i) M(xi) 是第 i i i 个解的平均位置,其使用等式(6)计算。 U B ( j ) UB_{(j)} UB(j) L B ( j ) LB_{(j)} LB(j) 分别是第 j j j 个位置的上边界和下边界。 α α α 是一个敏感参数,值为 0.1 0.1 0.1
M ( x i ) = 1 n ∑ j = 1 n x ( i , j ) (6) M({x_i}) = {1 \over n}\sum\limits_{j = 1}^n {{x_{(i,j)}}} \tag{6} M(xi)=n1j=1nx(i,j)(6)

2.2.2 贴地行走

  贴地行走策略的数学公式如下:
x ( i , j ) ( t + 1 ) = B e s t j ( t ) × x ( r 2 , j ) × E S ( t ) × r a n d (7) {x_{(i,j)}}(t + 1) = Bes{t_j}(t) \times {x_{(r_2,j)}} \times ES(t) \times rand \tag{7} x(i,j)(t+1)=Bestj(t)×x(r2,j)×ES(t)×rand(7)进化意义 E S ( t ) ES(t) ES(t) 是在整个迭代次数内随机取 2 2 2 − 2 -2 2 之间的递减值的概率比,使用公式(8)计算, r 2 r_2 r2 是介于 [ 1 , N ] [1,N] [1N] 之间的随机数。
E S ( t ) = 2 × r 3 × ( 1 − 1 T ) (8) ES(t) = 2 \times {r_3} \times (1 - {1 \over T}) \tag{8} ES(t)=2×r3×(1T1)(8)在等式(8)中, r 3 r_3 r3 表示介于 − 1 -1 1 1 1 1 之间的随机整数。

2.3 捕食(开发阶段)

  在本节中,将介绍RSA的捕食行为(开发阶段)。根据鳄鱼的捕食行为,鳄鱼在捕食过程中有两种策略:狩猎协调和狩猎合作。这些策略用于局部开发,与探索阶段不同,这些策略使鳄鱼更容易接近猎物。因此,开发阶段可能会在几次迭代后发现近似最优的解。此外,开发阶段会在最优解附近进行强化搜索,并加强鳄鱼之间的沟通,其数学公式如等式(9)和(10)所示。当 t > T 2 t > {T \over 2} t>2T t ≤ 3 T 4 t \le {{3T} \over 4} t43T 时为狩猎协调,当 t > 3 T 4 t > {3T \over 4} t>43T t ≤ T t \le T tT 时为狩猎合作。

2.3.1 狩猎协调

  狩猎协调策略的数学公式如下:
x ( i , j ) ( t + 1 ) = B e s t j ( t ) × P ( i , j ) ( t ) × r a n d (9) {x_{(i,j)}}(t + 1) = Bes{t_j}(t) \times {P_{(i,j)}}(t) \times rand \tag{9} x(i,j)(t+1)=Bestj(t)×P(i,j)(t)×rand(9)

2.3.2 狩猎合作

  狩猎合作策略的数学公式如下:
x ( i , j ) ( t + 1 ) = B e s t j ( t ) − η ( i , j ) ( t ) × ε − R ( i , j ) ( t ) × r a n d (10) {x_{(i,j)}}(t + 1) = Bes{t_j}(t) - {\eta _{(i,j)}}(t) \times \varepsilon - {R_{(i,j)}}(t) \times rand \tag{10} x(i,j)(t+1)=Bestj(t)η(i,j)(t)×εR(i,j)(t)×rand(10)

2.4 RSA的伪代码

  1. 初始化鳄鱼数量 N N N 和最大迭代次数 T T T
  2. 初始化RSA参数 α \alpha α β \beta β,等
  3. 随机初始化鳄鱼种群: x i : i = 1 , . . . , N x_i:i=1,...,N xi:i=1,...,N
  4. While t < T t<T t<T do
  5.   检查是否有鳄鱼超出了搜索空间并进行修改
  6.   计算每条鳄鱼的饥饿值(适应度值),并找到吃的最饱的鳄鱼 ( B e s t Best Best)
  7.   使用公式(8)更新 E S ES ES
  8.   For i = 1 i=1 i=1 to N N N do
  9.     For j = 1 j=1 j=1 to n n n do
  10.       使用公式(4),(5),(7)更新 η η η R R R P P P 的值
  11.       If t ≤ T 4 t \le {T \over 4} t4T then
  12.         使用公式(2)执行离地行走策略
  13.       Else If t > T 4 t > {T \over 4} t>4T and t ≤ T 2 t \le {T \over 2} t2T then
  14.         使用公式(7)执行贴地行走策略
  15.       Else If t > T 2 t > {T \over 2} t>2T and t ≤ 3 T 4 t \le {3T \over 4} t43T then
  16.         使用公式(9)执行狩猎协调策略
  17.       Else
  18.         使用公式(10)执行狩猎合作策略
  19.       End If
  20.     End For
  21.   End For
  22.    t = t + 1 t=t+1 t=t+1
  23. End While
  24. 返回吃的最饱的鳄鱼(最优解) ( B e s t Best Best).

三、实验结果

RSA在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F1、F11、F23中的收敛曲线,测试函数公式如下:

函数公式理论值
F1 F 1 ( x ) = ∑ i = 1 n x i 2 {F_1}(x) = \sum\nolimits_{i = 1}^n {x_i^2} F1(x)=i=1nxi2 0.00 0.00 0.00
F11 F 11 ( x ) = 1 400 ∑ i = 1 n x i 2 − Π i = 1 n cos ⁡ ( x i i ) + 1 {F_{11}}(x) = {1 \over {400}}\sum\nolimits_{i = 1}^n {x_i^2 - \Pi _{i = 1}^n\cos ({{{x_i}} \over {\sqrt i }}) + 1} F11(x)=4001i=1nxi2Πi=1ncos(i xi)+1 0.00 0.00 0.00
F23 F 23 ( x ) = − ∑ i = 1 10 [ ( X − a i ) ( X − a i ) T + c i ] − 1 {F_{23}}(x) = - \sum\nolimits_{i = 1}^{10} {{{[(X - {a_i}){{(X - {a_i})}^T} + {c_i}]}^{ - 1}}} F23(x)=i=110[(Xai)(Xai)T+ci]1 − 10.5363 -10.5363 10.5363

3.1 F1收敛曲线

F1

3.2 F11收敛曲线

F11

3.3 F23收敛曲线

在这里插入图片描述

四、Matlab代码

代码在资源中,可自行免费下载。
快速跳转:RSA源代码
     SO源代码
     SCSO源代码

五、参考文献

[1] L. Abualigah, M. A. Elaziz, P. Sumari, et al. Reptile Search Algorithm (RSA): A nature-inspired meta-heuristic optimizer[J]. Expert Systems with Applications. 2021, 191, 116158.

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值