【智能算法】回溯搜索算法(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.

相关推荐
薇茗1 分钟前
【初阶数据结构】 升沉有序的平仄 排序 3
c语言·开发语言·数据结构·算法·排序算法·文件归并排序
薇茗3 分钟前
【初阶数据结构】 升沉有序的平仄 排序 2
c语言·数据结构·算法·排序算法·快排精讲
AI科技星8 分钟前
强哥德巴赫猜想(1+1)终极证明(2026 年5月 21 日)
开发语言·人工智能·算法·计算机视觉·量子计算
人道领域8 分钟前
【LeetCode刷题日记】654.最大二叉树:递归算法详解
java·算法·leetcode
Controller-Inversion12 分钟前
105. 从前序与中序遍历序列构造二叉树
数据结构·算法
故事和你9113 分钟前
洛谷-【图论2-4】连通性问题2
开发语言·数据结构·c++·算法·动态规划·图论
扫地的小何尚13 分钟前
掌握 Agentic AI 技术:AI Agent 定制方法全景与实践路径
大数据·人工智能·算法·ai·llm·agent·nvidia
Brilliantwxx14 分钟前
【C++】 二叉搜索树
开发语言·c++·算法
吃好睡好便好9 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅9 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法