【智能算法】回溯搜索算法(BSA)原理及实现

目录


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.

相关推荐
XH华2 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生2 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_2 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子2 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡2 小时前
滑动窗口 + 算法复习
数据结构·算法
Lenyiin3 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码3 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
scan7243 小时前
LILAC采样算法
人工智能·算法·机器学习
菌菌的快乐生活3 小时前
理解支持向量机
算法·机器学习·支持向量机
大山同学3 小时前
第三章线性判别函数(二)
线性代数·算法·机器学习