改进的沙猫群优化算法(Modified Sand Cat Swarm Optimization,MSCSO)(原文作者)

文章介绍了沙猫群优化算法的灵感来源和基本原理,包括沙猫的猎物搜索和攻击行为的模拟。接着详细阐述了改进算法的三个方面:三角形游走策略、Levy飞行游走策略和透镜成像反向学习,这些策略旨在提高算法的探索性和全局优化能力。实验结果显示,MSCSO在F3、F6和F9等测试函数上的收敛性能得到提升,证明了改进的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、沙猫群优化算法灵感

  沙猫群优化算法(Sand Cat Swarm Optimization, SCSO)的灵感受自然界中沙猫(沙丘猫)行为的启发。沙猫拥有检测低频噪声的能力,无论猎物在地面还是在地下,沙猫都能找到猎物。由于这一重要的特性,它可以快速地捕捉猎物。沙猫群优化算法模拟了沙猫的两个主要行为:搜寻猎物和攻击猎物。由于自然界中的沙丘猫是独立生活的,为了提出种群智能的概念,假设沙丘猫是群体性的。

二、沙猫群优化算法介绍

2.1 初始化

  在 d i m dim dim 维优化问题中,每只沙猫都是一个 1 × d i m 1×dim 1×dim 阵列,它表示问题的解,如图1所示。在一组变量值 ( P o s 1 , P o s 2 , . . . , P o s d i m ) (Pos_1, Pos_2, ..., Pos_{dim}) (Pos1,Pos2,...,Posdim)中,每个 P o s Pos Pos 必须位于下边界和上边界之间。在初始化算法中,首先根据问题的大小 ( N × d i m ) (N×dim) (N×dim)创建一个初始化矩阵。此外,在每一次的迭代中都会输出对应的解。当下一次输出的值更优,则会替换当前的解。如果在下一次迭代中没有找到更好的解决方案,那么,这次迭代的解决方案就不会存储。
沙猫初始化过程

图1 沙猫初始化过程

2.2 搜索猎物(探索阶段)

  沙猫的猎物搜索机制依赖于低频噪声发射。每只沙猫的位置都表示为 P o s i Pos_i Posi 。SCSO算法受益于沙猫在低频检测中的听力能力,每一只沙猫都能感知到2KHz以下的低频。因此,在数学建模中,通过公式(1)定义敏感度 r G r_G rG,使沙丘猫的敏感范围为2kHz到0。另外,根据等式(2)获得参数 R R R 并控制算法探索和开发能力。
r G = S M − ( S M × t T ) (1) {r_G} = {S_M} - ({{{S_M} \times t} \over T}) \tag{1} rG=SM(TSM×t)(1) R = 2 × r G × r a n d ( 0 , 1 ) − r G (2) R = 2 \times {r_G} \times rand(0,1) - {r_G} \tag{2} R=2×rG×rand(0,1)rG(2)其中, S M S_M SM 模拟了沙丘猫的听觉特性值为2, t t t 是当前迭代次数, T T T 是最大迭代次数。
  在搜索猎物时,每只沙猫会在敏感度范围内随机寻找一个新的位置。这样更有利于算法的探索和开发。为避免陷入局部最优,每只沙丘猫的灵敏度范围是不同的。
r = r G × r a n d ( 0 , 1 ) (3) r = {r_G} \times rand(0,1) \tag{3} r=rG×rand(0,1)(3)其中, r r r 用于探索或开发阶段的操作, r G r_G rG 用于导引参数 R R R 实现这两个阶段的转移。
  每只沙猫会根据最优候选位置 ( P o s b c ) (Pos_{bc}) (Posbc),当前位置 ( P o s c ( t ) ) (Pos_c(t)) (Posc(t))和其灵敏度范围®进行搜索猎物的位置,具体公式如(4)所示。
P o s ( t + 1 ) = r × ( P o s b c ( t ) − r a n d ( 0 , 1 ) × P o s c ( t ) ) (4) Pos(t + 1) = r \times (Po{s_{bc}}(t) - rand(0,1) \times Po{s_c}(t)) \tag{4} Pos(t+1)=r×(Posbc(t)rand(0,1)×Posc(t))(4)

2.3 攻击猎物(开发阶段)

  为模拟沙猫攻击猎物的过程,沙猫与猎物的距离 ( P o s r n d ) (Pos_{rnd}) (Posrnd)由公式(5)计算。同时,假设沙丘猫的灵敏度范围是一个圆,移动的方向利用轮盘选择算法为每只沙丘猫选择一个随机角度 ( α ) (α) (α)。由于所选的随机角度在0度到360度之间,其值在−1到1之间。这样,群体中的每个成员都能够在搜索空间中沿着不同的圆周方向移动,如图2所示。之后,根据公式(6)攻击猎物。用这种方法,沙丘猫可以更快接近狩猎位置。
p o s r n d = ∣ r a n d ( 0 , 1 ) × p o s b ( t ) − p o s c ( t ) ∣ (5) po{s_{rnd}} = |rand(0,1) \times po{s_b}(t) - po{s_c}(t)| \tag{5} posrnd=rand(0,1)×posb(t)posc(t)(5) p o s ( t + 1 ) = P o s b ( t ) − r × P o s r n d × cos ⁡ ( α ) (6) pos(t + 1) = Po{s_b}(t) - r \times {\rm{ }}Po{s_{rnd}} \times \cos (\alpha ) \tag{6} pos(t+1)=Posb(t)r×Posrnd×cos(α)(6)在这里插入图片描述

图2 沙猫群在 t 次迭代的位置

在这里插入图片描述

图3 沙猫群在 t+1 次迭代的位置

三、改进的沙猫群优化算法

3.1 游走策略

3.1.1 三角形游走策略

  在沙猫进行搜索过程中,沙猫会逐渐的向猎物靠近。三角游走策略是沙猫在靠近猎物的同时在周围进行游走。首先,得到沙猫和猎物之间的距离 L 1 L_1 L1,在获得沙猫游走的步长范围 L 2 L_2 L2,之后,根据公式(9)定义行走的方向 β β β L 1 L_1 L1 L 2 L_2 L2 的如公式(7)和(8)所示。获得 L 1 L_1 L1 L 2 L_2 L2 后,通过公式(10)求出游走所得的位置与猎物之间的距离 P P P。具体如图4所示。之后,通过公式(11)获得沙猫游走后得到的位置。
L 1 = p o s b ( t ) − p o s c ( t ) (7) {L_1} = po{s_b}(t) - po{s_c}(t) \tag{7} L1=posb(t)posc(t)(7) L 2 → = r a n d ( ) × L 1 → (8) \overrightarrow {{L_2}} = rand() \times \overrightarrow {{L_1}} \tag{8} L2 =rand()×L1 (8) β = 2 × p i × r a n d ( ) (9) \beta {\rm{ = 2}} \times pi \times rand() \tag{9} β=2×pi×rand()(9) P = L 1 2 + L 2 2 − 2 × L 1 × L 2 × cos ⁡ ( β ) (10) P = {L_1}^2 + {L_2}^2 - 2 \times {L_1} \times {L_2} \times \cos (\beta ) \tag{10} P=L12+L222×L1×L2×cos(β)(10) P o s n e w = p o s b ( t ) + r × P (11) Po{s_{new}} = po{s_b}(t) + r \times P \tag{11} Posnew=posb(t)+r×P(11)其中, P o s n e w Pos_{new} Posnew 是通过游走策略获得的位置。

3.1.2 Levy飞行游走策略

  在攻击猎物时,沙猫与猎物的距离十分的接近。Levy飞行是一种非常有效的提供随机因子的数学方法。Levy飞行可以提供步长符合Levy分布的随机游走方法。但Levy飞行有时步长过长,为了更加符合沙猫攻击猎物的行为,在Levy飞行乘以常数 C = 0.35 C=0.35 C=0.35,从而减少步长,使沙猫尽可能在猎物旁边进行游走,如图5所示。Levy飞行游走策略的公式如(12)所示。
P o s n e w = p o s b ( t ) + ( p o s b ( t ) − p o s c ( t ) ) × C × L e v y (12) Po{s_{new}} = po{s_b}(t) + (po{s_b}(t) - po{s_c}(t)) \times C \times Levy \tag{12} Posnew=posb(t)+(posb(t)posc(t))×C×Levy(12)
三角游走策略

图4 三角游走策略

levy飞行游走策略

图5 levy飞行游走策略

3.2 透镜成像反向学习

  透镜成像反向学习主要的思想是以当前坐标为基准通过凸透镜成像的原理生成一个反向位置来扩大搜索范围,这样可以既能跳出当前位置,又可以扩大搜索范围,提高了种群的多样性。由图6可知,在二维坐标中, x x x 轴的搜索范围是 ( a , b ) (a,b) (a,b) y y y 轴表示凸透镜。假设一个物体 A A A x x x 轴上的投影是 x x x,高度是 h h h,通过透镜成像可以得到另一侧的成像为 A ∗ A^* A A ∗ A^* A x x x 轴上投影为 x ∗ x^* x,高度为 h ∗ h^* h。通过以上原理可得到 x x x 的反向投影 x ∗ x^* x
在这里插入图片描述

图6 透镜成像反向学习过程

  在图6中, x x x o o o 为基点得到其对应的反向点 x ∗ x^* x,由透镜成像原理可得:
( a + b ) / 2 − x x ∗ − ( a + b ) / 2 = h h ∗ (13) {{(a + b)/2 - x} \over {{x^*} - (a + b)/2}} = {h \over {{h^*}}} \tag{13} x(a+b)/2(a+b)/2x=hh(13)  令 k = h h ∗ k= {h \over {{h^*}}} k=hh,可以得到基于透镜成像原理的反向学习公式:
x j ∗ = a j + b j 2 + a j + b j 2 k − x j k (14) x_j^* = {{{a_j} + {b_j}} \over 2} + {{{a_j} + {b_j}} \over {2k}} - {{{x_j}} \over k} \tag{14} xj=2aj+bj+2kaj+bjkxj(14)其中, x j x_j xj 为个体在第 j j j 维的位置, x j ∗ x_j^* xj x j x_j xj 的反向解。 a j a_j aj b j b_j bj 分别为搜索空间中第 j j j 维的最大边界和最小边界。

3.3 MSCSO的算法伪代码

  1. 初始化沙丘猫数量 N N N 和最大迭代次数 T T T
  2. 初始化种群: P o s i ( i = 1 , 2 , . . . , N ) Pos_i(i=1,2,...,N) Posi(i=1,2,...,N)
  3. While t < = T t<=T t<=T do
  4.   更新 r r r r G r_G rG R R R
  5.   检查是否有沙丘猫超出了搜索空间并进行修改
  6.   计算每只沙丘猫的饥饿值(适应度值),并找到吃的最饱的沙丘猫 ( P o s b c ) (Pos_{bc}) (Posbc)
  7.   For i = 1 i=1 i=1 to N N N do
  8.     利用轮盘选择算法获得随机角度 ( 0 º ≤ α ≤ 360 º ) (0º≤α≤360º) (α360º)
  9.     If ∣ R ∣ < = 1 |R|<=1 R<=1 then
  10.       根据等式(6)更新沙猫的搜索位置。
  11.       使用等式(12)执行Levy飞行游走策略以获得新位置。
  12.     Else
  13.       根据等式(4)更新沙猫的搜索位置。
  14.       使用等式(11)进行三角游走策略以获得新位置.
  15.     End If
  16.     根据等式(14)执行透镜成像反向学习策略
  17.   End For
  18.    t = t + 1 t=t+1 t=t+1
  19. End While
  20. 返回吃的最饱的猫(最优解) P o s b c Pos_{bc} Posbc

四、实验结果

MSCSO和SCSO在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F3、F6、F9中的收敛曲线,测试函数公式如下:

函数公式理论值
F3 F 3 ( x ) = ∑ i = 1 n ( ∑ j − 1 i x j ) 2 {F_3}(x) = \sum\nolimits_{i = 1}^n {{{(\sum\nolimits_{j - 1}^i {{x_j}} )}^2}} F3(x)=i=1n(j1ixj)2 0.00 0.00 0.00
F6 F 6 ( x ) = ∑ i = 1 n ( x i + 5 ) 2 {F_6}(x) = {\sum\nolimits_{i = 1}^n {({x_i} + 5)} ^2} F6(x)=i=1n(xi+5)2 0.00 0.00 0.00
F9 F 9 ( x ) = ∑ i = 1 n [ x i 2 − 10 cos ⁡ ( 2 π x i ) + 10 ] {F_9}(x) = \sum\nolimits_{i = 1}^n {[x_i^2 - 10\cos (2\pi {x_i}) + 10]} F9(x)=i=1n[xi210cos(2πxi)+10] 0.00 0.00 0.00

4.1 F3收敛曲线

在这里插入图片描述

4.2 F6收敛曲线

在这里插入图片描述

4.3 F9收敛曲线

在这里插入图片描述

四、参考文献

[1] 贾鹤鸣, 智能优化算法及 MATLAB 实现[M], 清华大学出版社, 2024。
[2] Di Wu, Honghua Rao, Changsheng Wen, et al. Modified Sand Cat Swarm Optimization Algorithm for Solving
Constrained Engineering Optimization Problems[J]. Mathematics. 2022, 10(22), 4350.

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鹤鸣优化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值