智能优化算法:回溯搜索优化算法-附代码

2024-06-18 07:38

本文主要是介绍智能优化算法:回溯搜索优化算法-附代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

智能优化算法:回溯搜索优化算法

文章目录

  • 智能优化算法:回溯搜索优化算法
    • 1.算法原理
      • 1.1 初始化种群
      • 1.2 选择I
      • 1.3 变异
      • 1.4 交叉
      • 1.5 选择II
    • 2.算法结果
    • 3.参考文献
    • 4.Matlab代码

摘要:回溯搜索优化算法(BSA)是 Civicioglu于2013年提出 的 一种 基 于种群的元启发式算法。被广泛应用于寻优问题中,具有收敛速度快等特点。

1.算法原理

BSA是一种基于种群的新型启发式算法,与大多数元启发式算法类似,该算法通过种群的变异、交叉和选择来达到寻优的目的。BSA有着一个记忆种群的功能,该功能赋予了BSA一个强大的挖掘历史信息能力。BSA的繁殖算子即变异和交叉算子,作为自身算法的标志性特征,与其他进化算法有着本质的区别。BSA算法的基本流程图如图1所示,由5个步骤构成:初始化种群、选择I、变异、交叉和选择II。每个步骤的具体内
容如下:

在这里插入图片描述

图1.BSA基本流程图

1.1 初始化种群

BSA 随机产生种群 P P P 和历史种群 o l d P oldP oldP,如式(1)所示:
P i , j − U ( l o w j , u p j ) , o l d P − U ( l o w j , u p j ) (1) P_{i,j}-U(low_j,up_j),oldP-U(low_j,up_j) \tag{1} Pi,jU(lowj,upj),oldPU(lowj,upj)(1)
式(1)中: i ∈ [ 1 , 2 , . . . , N ] , j ∈ [ 1 , 2 , . . . , D ] i\in [1,2,...,N],j\in [1,2,...,D] i[1,2,...,N],j[1,2,...,D] N N N D D D分别代表种群 个 体 数 和 种 群 维 数;体数和种群维数; l o w j low_j lowj u p j up_j upj分别表示第 j j j维分量的下界和上界; U U U为随机均匀分布函数。该步骤仅为算法提供随机的初始数据,不参与后面的迭代过程。

1.2 选择I

BSA的选择I过程是算法迭代起点。首先更新历史种群 o l d P oldP oldP,如(2)所示;再利用式(3)对其中个体位置进行随机排序。
i f a < b , t h e n o l d P = P (2) if \, a<b,\,then\,\, oldP=P \tag{2} ifa<b,thenoldP=P(2)

o l d P = p e r m u t i n g ( o l d P ) (3) oldP = permuting(oldP) \tag{3} oldP=permuting(oldP)(3)

式(2)中: a a a b b b是(0,1)中产生的两个均匀分布随机数。

该步骤相当于是以0.5的概率从前 n n n代历史种群 o l d P oldP oldP和上代种群 P P P中选出新的 o l d P oldP oldP,由此形成了独特的依概率记忆前代种群功能,这是算法能够进行“回溯”搜索的前提。该选择机制有一个特点:随着算法的迭代次数增多,选择前代历史种群 o l d P oldP oldP的概率会越来越小,而选择前代种群 P P P的概率一直保持0.5不变,显然,选择前代种群 P P P作为当代历史种群 o l d P oldP oldP的可能性更大。

1.3 变异

BSA采用式(4)对种群 P P P进行扰动,得到变异种群 M M M
M = P + F ∗ ( o l d P − P ) (4) M = P +F*(oldP - P) \tag{4} M=P+F(oldPP)(4)
式(4)中: F F F为变异控制参数, F = 3. r a n d n F= 3.randn F=3.randn , r a n d n randn randn是标准正态分布随机数。该过程从生物学角度看,表示当代种群 P P P向前代种群 o l d P oldP oldP 进行
学习,通过因子 F F F加以控制,从而达到变异效果。该操作赋予了算法强大的全局搜索能力。

1.4 交叉

BSA的交叉过程较同类算法更为精密,可以分为两步。第一步,产生一个N*D大小的映射矩阵map,其初始元素值均为0,然后采用两种策略等概率更新映射矩阵map,如式(5)所示;第二步,根据生成的矩阵map确定种群P中交叉个体元素的位置,然后将P中的此类个体元素与种群M中对应位置元素进行互换,进而得到试验种群T,如式(6)或(7)所示。

简单来讲,该交叉过程由0-1矩阵map决定。当map中元素为1时,将M中对应元素赋给种群T;否则,将P中对应元素赋给种群T。
{ m a p i , u ( 1 , c e i l ( m i x r a t e ∗ r a n d ∗ D ) ) = 1 , i f c < d u = p e r m u t i n g ( 1 , 2 , . . . , D ) m a p i , r a n d i ( D ) = 0 , e l s e (5) \begin{cases} map_{i,u(1,ceil(mixrate*rand*D))} = 1,if \, c<d\\ u=permuting(1,2,...,D)\\ map_{i,randi(D)} = 0, \, else \end{cases}\tag{5} mapi,u(1,ceil(mixraterandD))=1,ifc<du=permuting(1,2,...,D)mapi,randi(D)=0,else(5)

T i , j = { M i , j , i f m a p i , j = 1 P i , j , e l s e (6) T_{i,j} = \begin{cases} M_{i,j},if\,map_{i,j}=1\\ P_{i,j}, \, else \end{cases} \tag{6} Ti,j={Mi,j,ifmapi,j=1Pi,j,else(6)

T i , j = P i , j + m a p i , j ∗ F ∗ ( o l d P i , j − P i , j ) (7) T_{i,j} = P_{i,j} + map_{i,j}*F*(oldP_{i,j} - P_{i,j})\tag{7} Ti,j=Pi,j+mapi,jF(oldPi,jPi,j)(7)

式(5)中: c c c d d d为(0,1)上的均匀随机数; c e i l ( . ) ceil(.) ceil(.)是向上取整函数; r a n d ( . ) rand(.) rand(.)为均匀分布的随机整数函数; m i x r a t e mixrate mixrate表示交叉概率参数,在原始BSA中其值设置为1。式(6)和(7)在数学表达上不同,但具体交叉操作过程一致。式(6)偏向更直观理解交叉过程的原理,而式(7)则更清晰地描
述了试验种群 T T T与种群 P P P之间的关系。边界控制:交叉结束后,对试验种群 T T T中个体进行边界控制,若 T T T个体中存在越界元素,则这些元素均采用式(1)重新生成。

1.5 选择II

BSA的选择II过程由个体适应度决定。通过比较种群 P P P和试验种群 T T T 中对应个体适应度值的大小,选择出具有更优适应度的个体,进而产
生新的种群 P P P,如式(8)所示。
P i = { T i , f i t n e s s ( T i ) < f i t n e s s ( P i ) P i , e l s e (8) P_i = \begin{cases} T_i,\,fitness(T_i)<fitness(P_i)\\ P_i,else \end{cases} \tag{8} Pi={Ti,fitness(Ti)<fitness(Pi)Pi,else(8)
BSA 利用选择II这一步骤更新种群 P P P,再回到选择I步骤参与下一次迭代,直至满足终止条件,输出最优解。

2.算法结果

在这里插入图片描述

3.参考文献

[1]王海龙,苏清华,胡中波.回溯搜索优化算法研究进展[J].湖北工程学院学报,2018,38(03):33-42.

4.Matlab代码

https://mianbaoduo.com/o/bread/aJaWk50=

这篇关于智能优化算法:回溯搜索优化算法-附代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071677

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设