目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
1.背景
2013年,P Civicioglu等人受到当前种群与历史种群之间的差分向量的引导启发,提出了回溯搜索算法(Backtracking Search Algorithm, BSA)。
2.算法原理
2.1算法思想
BSA通过当前种群与历史种群之间的差分向量的引导来执行搜索任务,主要分为三部分:筛选-I、交叉和变异和筛选-II。
2.2算法过程
筛选-I
更新历史种群 Xoldt ,分为以下两步:
X
o
l
d
t
=
{
X
t
,
i
f
φ
>
θ
X
o
l
d
t
,
o
t
h
e
r
w
i
s
e
(1)
\boldsymbol{X}_{\mathrm{old}}^t=\begin{cases}\boldsymbol{X}^t,&\mathrm{if~}\varphi{>}\theta\\\boldsymbol{X}_{\mathrm{old}}^t,&\mathrm{otherwise}&\end{cases}\tag{1}
Xoldt={Xt,Xoldt,if φ>θotherwise(1)
其中,
φ
,
θ
\varphi,\theta
φ,θ为随机数。接下来:
X
o
l
d
t
=
p
e
r
m
u
t
i
n
g
(
X
o
l
d
t
)
(2)
\boldsymbol{X}_\mathrm{old}^t\mathrm{=permuting}{\left(\boldsymbol{X}_\mathrm{old}^t\right)}\tag{2}
Xoldt=permuting(Xoldt)(2)
permuting 是一个随机改组函数,使得历史种群 Xold t 中包含的 N 个个体随机排序。
交叉和变异
变异操作由历史种群 Xold t 引导:
z
i
t
=
x
i
t
+
F
×
(
x
o
l
d
,
i
t
−
x
i
t
)
(3)
\boldsymbol{z}_i^t=\boldsymbol{x}_i^t+F\times\left(\boldsymbol{x}_{\mathrm{old},i}^t-\boldsymbol{x}_i^t\right)\tag{3}
zit=xit+F×(xold,it−xit)(3)
F 为缩放因子,表述为:
F
=
3
×
ξ
(4)
F{=}3{\times}\xi \tag{4}
F=3×ξ(4)
交叉操作是由一个 N 行 D 列的二进制矩阵 M 来引导:
x
i
,
j
t
+
1
=
{
x
i
,
j
t
,
i
f
M
i
,
j
=
1
z
i
,
j
t
,
i
f
M
i
,
j
=
0
(5)
x_{i,j}^{t+1}=\begin{cases}x_{i,j}^t,\mathrm{if~}\boldsymbol{M}_{i,j}=1\\z_{i,j}^t,\mathrm{if~}\boldsymbol{M}_{i,j}=0\end{cases}\tag{5}
xi,jt+1={xi,jt,if Mi,j=1zi,jt,if Mi,j=0(5)
筛选-II
为了加快收敛过程,执行:
x
i
t
+
1
=
{
x
i
t
,
i
f
f
(
x
i
t
)
<
f
(
x
i
t
+
1
)
x
i
t
+
1
,
o
t
h
e
r
w
i
s
e
(6)
\boldsymbol{x}_i^{t+1}=\begin{cases}\boldsymbol{x}_i^t,&\mathrm{if~}f(\boldsymbol{x}_i^t)<f(\boldsymbol{x}_i^{t+1})\\\boldsymbol{x}_i^{t+1},&\mathrm{otherwise}&\end{cases}\tag{6}
xit+1={xit,xit+1,if f(xit)<f(xit+1)otherwise(6)
伪代码
3.结果展示
作者提供了拟合圆、图像聚类两个案例:
4.参考文献
[1] Civicioglu P. Backtracking search optimization algorithm for numerical optimization problems[J]. Applied Mathematics and computation, 2013, 219(15): 8121-8144.