获取更多资讯,赶快关注上面的公众号吧!
沙丘猫群优化算法(Sand Cat swarm optimization,SCSO)是土耳其学者Amir Seyyedabbasi于2022年最新提出的一种模拟沙丘猫生存行为的元启发式算法。扫码关注公众号,后台回复"沙丘猫"或"SCSO"获取源码和原文。
灵感来源
沙丘猫是猫科动物中的一种,属于哺乳动物家族。它们生活在沙质和石质沙漠的恶劣环境中,如中亚撒哈拉沙漠、非洲撒哈拉沙漠和阿拉伯半岛。沙丘猫虽然和家猫在外形上差别不断,但在捕食和生存方面有着不同的生活行为。它们能够探测低于2kHz的低频,也具有难以置信的挖掘猎物的能力。作者提出的沙丘猫算法就是受这两种特性的启发,也包括两个阶段:搜索和攻击,此外,还提出一种用于平衡探索和利用的机制。
数学模型和优化算法
沙丘猫群优化模拟了沙丘猫的两个主要行为:搜寻猎物和攻击猎物。由于自然界中的沙丘猫是独立生活的,那么在提出的算法中,为了提出种群智能的概念,作者假设沙丘猫是群体性的。
初始化种群
对于
d
d
d维优化问题,沙丘猫就是一个
1
×
d
1 \times d
1×d维的表达问题解的数组,如图2。
每个变量值
(
x
1
,
x
2
,
…
,
x
d
)
\left(x_{1}, x_{2}, \ldots, x_{d}\right)
(x1?,x2?,…,xd?)都是浮点型,且每个
x
x
x都必须处于上下边界之间(
?
x
i
∈
[
\forall x_{i} \in[
?xi?∈[ lower, upper
]
]
])。
算法运行时首先根据问题的规模
(
N
pop?
×
N
d
)
,
(
\left(N_{\text {pop }} \times N_{d}\right),(
(Npop??×Nd?),( pop
=
1
,
.
.
.
,
n
=1,...,n
=1,...,n)利用沙丘猫群创建一个候选矩阵,然后就目标函数对每个沙丘猫进行适应度评估,选择出其中最优的个体,其他的个体都朝向该个体移动。
搜索猎物(探索)
沙丘猫的猎物搜索机制依赖于低频噪声发射。每只沙丘猫的解表达为
X
i
=
(
x
i
1
,
x
i
2
,
x
i
3
,
…
,
x
i
d
)
X_{i}=\left(x_{i 1}, x_{i 2}, x_{i 3}, \ldots, x_{i d}\right)
Xi?=(xi1?,xi2?,xi3?,…,xid?)。SCSO算法得益于沙丘猫在低频探测方面的听觉能力,这样就声明了每只猫的敏感范围,前面提到,沙丘猫可以感知低于2kHz的低频,在数学模型中,根据算法的工作原理,这个值(
r
G
→
\overrightarrow{r_{G}}
rG?
?)将随着迭代过程的进行从2线性地降低为0,以逐渐靠近猎物而不会丢失或跳过。因此为了搜索猎物,假设沙丘猫的敏感范围为2kHz到0(等式1),
S
M
S_M
SM?模拟了沙丘猫的听觉特性,其假设为2(当然对于不同问题可以适当调整以确定代理行为的速度)。值得一提的是,控制探索和利用之间转换的主要参数是
R
R
R,其是根据等式2获得的向量。
r
G
→
=
s
M
?
(
2
×
S
M
×
?iter?
c
?iter?
M
a
x
+
?iter?
max
?
)
(1)
\overrightarrow{r_{G}}=s_{M}-\left(\frac{2 \times S_{M} \times \text { iter }_{\mathrm{c}}}{\text { iter }_{\mathrm{Max}}+\text { iter }_{\max }}\right)\tag{1}
rG?
?=sM??(?iter?Max?+?iter?max?2×SM?×?iter?c??)(1)
R
?
=
2
×
r
G
→
×
rand
?
(
0
,
1
)
?
r
G
→
(2)
\vec{R}=2 \times \overrightarrow{r_{G}} \times \operatorname{rand}(0,1)-\overrightarrow{r_{G}}\tag{2}
R
=2×rG?
?×rand(0,1)?rG?
?(2) 搜索空间在定义的边界之间随机初始化。在搜索步骤中,每个当前搜索代理的位置更新都是基于一个随机位置。这样,搜索代理就能够在搜索空间中探索新的空间。为避免陷入局部最优,每只沙丘猫的灵敏度范围是不同的,如等式3。因此,
r
G
→
\overrightarrow{r_{G}}
rG?
?表示常规的灵敏度范围(从2线性下降到0),而
r
?
\vec{r}
r
是每只猫的灵敏度范围。此外,
r
?
\vec{r}
r
用于探索或利用阶段的操作,而
r
G
→
\overrightarrow{r_{G}}
rG?
?用于导引参数
R
R
R以实现在这些阶段间转移控制。
r
?
=
r
G
→
×
rand
?
(
0
,
1
)
(3)
\vec{r}=\overrightarrow{r_{G}} \times \operatorname{rand}(0,1)\tag{3}
r
=rG?
?×rand(0,1)(3)
其中
?iter?
c
\text { iter }_{\mathrm{c}}
?iter?c?为当前迭代,
?iter?
M
a
x
\text { iter }_{\mathrm{Max}}
?iter?Max?为最大迭代次数。
每只沙丘猫会根据最优解(
Pos
?
b
c
→
\overrightarrow{\operatorname{Pos}_{b c}}
Posbc?
?)、自己当前位置(
Pos
?
c
→
\overrightarrow{\operatorname{Pos}_{c}}
Posc?
?)和其灵敏度范围(
r
→
\overrightarrow{r}
r
)更新自己的位置。因此沙丘猫能找到其他最好的猎物位置(等式4),该等式使得算法可以找到新的局部最优,因此新的位置位于当前位置和猎物位置之间,同时随机性保证了算法的运行成本低和复杂度低。
Pos
?
→
(
t
+
1
)
=
r
?
?
(
Pos
?
b
c
→
(
t
)
?
rand
?
(
0
,
1
)
?
Pos
?
c
→
(
t
)
)
(4)
\overrightarrow{\operatorname{Pos}}(t+1)=\vec{r} \cdot\left(\overrightarrow{\operatorname{Pos}_{b c}}(t)-\operatorname{rand}(0,1) \cdot \overrightarrow{\operatorname{Pos}_{c}}(\mathrm{t})\right)\tag{4}
Pos
(t+1)=r
?(Posbc?
?(t)?rand(0,1)?Posc?
?(t))(4)
攻击猎物(利用)
为了表达SCSO的攻击阶段,最优位置
Pos
?
b
→
\overrightarrow{\operatorname{Pos}_{b}}
Posb?
?与当前位置(
Pos
?
c
→
\overrightarrow{\operatorname{Pos}_{c}}
Posc?
?)的距离根据等式5计算得到。同时假设沙丘猫的灵敏度范围是一个圆,这样移动的方向就可以通过圆上的一个随机角度(
θ
\theta
θ)确定。由于所选的随机角度在0到360之间,其值将在?1到1之间。这样,群体中的每个成员都能够在搜索空间中沿着不同的圆周方向移动。SCSO利用轮盘选择算法为每只沙丘猫选择一个随机角度。用这种方法,沙丘猫可以接近狩猎位置,为避免陷入局部最优,采用了随机角度。SCSO两次连续迭代的位置更新过程如图3所示。
Pos
?
r
n
d
→
=
∣
rand
?
(
0
,
1
)
?
Pos
?
b
→
(
t
)
?
Pos
?
c
→
(
t
)
∣
Pos
?
→
(
t
+
1
)
=
Pos
?
b
→
(
t
)
?
r
?
?
Pos
?
r
n
d
→
?
cos
?
(
θ
)
(5)
\begin{aligned} &\overrightarrow{\operatorname{Pos}_{\mathrm{rnd}}}=\left|\operatorname{rand}(0,1) \cdot \overrightarrow{\operatorname{Pos}_{b}}(t)-\overrightarrow{\operatorname{Pos}_{c}}(\mathrm{t})\right| \\ &\overrightarrow{\operatorname{Pos}}(t+1)=\overrightarrow{\operatorname{Pos}_{b}}(t)-\vec{r} \cdot \overrightarrow{\operatorname{Pos}_{\mathrm{rnd}}} \cdot \cos (\theta) \end{aligned}\tag{5}
?Posrnd?
?=∣∣∣?rand(0,1)?Posb?
?(t)?Posc?
?(t)∣∣∣?Pos
(t+1)=Posb?
?(t)?r
?Posrnd?
??cos(θ)?(5)
探索和利用
探索和利用是通过自适应的
r
G
r_G
rG?和
R
R
R保证的,这些参数允许SCSO在两个阶段之间无缝切换。由于参数
R
R
R取决于
r
G
r_G
rG?,其波动范围也会变小。
R
R
R是区间
[
?
2
r
G
,
2
r
G
]
[-2r_G,2r_G]
[?2rG?,2rG?]的随机值,而
r
G
r_G
rG?线性从2下降到0。当R的随机值为[-1,1]时,沙丘猫的下一个位置可以是当前位置与狩猎位置之间的任意位置。SCSO算法在
R
R
R小于或等于1时强制搜索代理进行利用,否则强制搜索代理进行探索和寻找猎物,如等式6。
X
?
(
t
+
1
)
=
{
Pos
?
b
→
(
t
)
?
Pos
?
rnd?
→
?
cos
?
(
θ
)
?
r
?
∣
R
∣
≤
1
;
?exploitation?
r
?
?
(
Pos
?
b
c
→
(
t
)
?
rand
?
(
0
,
1
)
?
Pos
?
c
→
(
t
)
)
∣
R
∣
>
1
;
?exploration?
(6)
\vec{X}(t+1)=\left\{\begin{array}{cl} \overrightarrow{\operatorname{Pos}_{b}}(t)-\overrightarrow{\operatorname{Pos}_{\text {rnd }}} \cdot \cos (\theta) \cdot \vec{r} & |R| \leq 1 ; \text { exploitation } \\ \vec{r} \cdot\left(\overrightarrow{\operatorname{Pos}_{b c}}(t)-\operatorname{rand}(0,1) \cdot \overrightarrow{\operatorname{Pos}_{c}}(\mathrm{t})\right) & |R|>1 ; \text { exploration } \end{array}\right.\tag{6}
X
(t+1)=????Posb?
?(t)?Posrnd??
??cos(θ)?r
r
?(Posbc?
?(t)?rand(0,1)?Posc?
?(t))?∣R∣≤1;?exploitation?∣R∣>1;?exploration??(6)
SCSO算法
|