一、沙猫群优化算法灵感
沙猫群优化算法(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)创建一个初始化矩阵。此外,在每一次的迭代中都会输出对应的解。当下一次输出的值更优,则会替换当前的解。如果在下一次迭代中没有找到更好的解决方案,那么,这次迭代的解决方案就不会存储。
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)
三、改进的沙猫群优化算法
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+L22−2×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)
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中,
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)/2−x=h∗h(13) 令
k
=
h
h
∗
k= {h \over {{h^*}}}
k=h∗h,可以得到基于透镜成像原理的反向学习公式:
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+bj−kxj(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的算法伪代码
- 初始化沙丘猫数量 N N N 和最大迭代次数 T T T 等
- 初始化种群: P o s i ( i = 1 , 2 , . . . , N ) Pos_i(i=1,2,...,N) Posi(i=1,2,...,N)
- While t < = T t<=T t<=T do
- 更新 r r r、 r G r_G rG、 R R R
- 检查是否有沙丘猫超出了搜索空间并进行修改
- 计算每只沙丘猫的饥饿值(适应度值),并找到吃的最饱的沙丘猫 ( P o s b c ) (Pos_{bc}) (Posbc)
- For i = 1 i=1 i=1 to N N N do
- 利用轮盘选择算法获得随机角度 ( 0 º ≤ α ≤ 360 º ) (0º≤α≤360º) (0º≤α≤360º)
- If ∣ R ∣ < = 1 |R|<=1 ∣R∣<=1 then
- 根据等式(6)更新沙猫的搜索位置。
- 使用等式(12)执行Levy飞行游走策略以获得新位置。
- Else
- 根据等式(4)更新沙猫的搜索位置。
- 使用等式(11)进行三角游走策略以获得新位置.
- End If
- 根据等式(14)执行透镜成像反向学习策略
- End For
- t = t + 1 t=t+1 t=t+1
- End While
- 返回吃的最饱的猫(最优解) 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(∑j−1ixj)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[xi2−10cos(2πxi)+10] | 0.00 0.00 0.00 |
4.1 F3收敛曲线
4.2 F6收敛曲线
4.3 F9收敛曲线
文章来源:https://www.toymoban.com/news/detail-469021.html
四、参考文献
[1] 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.文章来源地址https://www.toymoban.com/news/detail-469021.html
到了这里,关于改进的沙猫群优化算法(Modified Sand Cat Swarm Optimization,MSCSO)(原文作者)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!