记忆回溯策略:一种元启发式算法的进化更新机制


在这里插入图片描述

1.摘要

元启发式算法的搜索域总是在不断变化,这使得适应多样化的优化问题变得困难。为了克服上述问题,提出了一种称为记忆回溯策略(Memory Backtracking Strategy,MBS)的进化更新机制,该机制包括思考阶段、回忆阶段和记忆阶段。总体而言,MBS的采用通过引入群体记忆、线索回忆和记忆遗忘机制,提升了元启发式算法的效率。这些策略提高了算法探索搜索空间、优化搜索过程以及逃避局部最优解的能力。

2.MBS策略

生命特征帮助人类从婴儿期就能区分生物和非生物,这种能力从进化的视角看是关键的生存工具。人类的感知系统优先处理生命信息,有助于适应环境。记忆在这个过程中扮演核心角色,包括自由回忆、识别和线索回忆。遗忘被视为记忆的一种功能,有助于适应不断变化的环境。

MBS将生物记忆机制应用于算法优化的方法,通过比较个体和事件、将适应性值与事件结果关联,以及将个体各维度值与条件相匹配。使用记忆周期的概念,通过限制记忆周期的数量来扩大单个周期的记忆容量,以提高回忆效率但增加回忆时间。MBS还模拟生物遗忘过程,优先遗忘不良记忆,从而更快适应新环境。

思维阶段

MBS模型首先通过回忆阶段确定是否有先前的经验。若无先前经验,直接计算适应性值并进入记忆阶段;若有,利用记忆结果作为新方法的结果,并尝试新的方法,再次经历回忆阶段以验证经验。算法在记忆内容有限的早期阶段不会执行记忆导向机制,而是执行记忆混淆机制,并在发现过去的经验后模拟生物行为,部分改变过程。h代表需要改变的过程数量,j代表需要改变的过程。

j = { w 1 , w 2 , . . . , w h } w = r a n d p e r m ( dim ⁡ ) h = c e i l ( dim ⁡ / 5 ) p o p n e w = p o p ( i , : ) j=\{w_1,w_2,...,w_h\}\\ w=randperm(\dim)\\ h=ceil(\dim/5)\\ popnew=pop(i,:) j={w1,w2,...,wh}w=randperm(dim)h=ceil(dim/5)popnew=pop(i,:)

其中,j 是 h 维中不重复的下标索引,取 w 的前 h 个值。popnew 是第 i 个个体的新位置,其初始值与第 i 个个体 pop(i,:) 一致。

在这里插入图片描述
为了模拟生物体渴望获得更好的结果并试图改变已知过程的行为,采用了记忆混淆机制。当个体回忆成功且a≤r1时:
p o p n e w ( j ) = p o p ( i , j ) + s t e p ( j ) , a ≤ r 1 s t e p ( j ) = tan ⁡ ( π ∗ ( r 2 − 0.5 ) ) ∗ ( u b ( j ) − l b ( j ) ) / log ⁡ 2 ( F E s ) \begin{aligned}&popnew(j)=pop(i,j)+step(j),a\leq r_{1}\\&step(j)=\tan(\pi*(r_{2}-0.5))*(ub(j)-lb(j)) /\log_{2}(FEs)\end{aligned} popnew(j)=pop(i,j)+step(j),ar1step(j)=tan(π(r20.5))(ub(j)lb(j))/log2(FEs)

为了模拟生物体渴望获得更好的结果并试图接近记忆中更好的位置的行为,引入了一种面向记忆的机制。当个体如此成功地回忆且a>r1时:
p o p n e w ( j ) = ∑ m i = M M m a x M e m o r y ( m i , j ) / ( M m a x − M + 1 ) , a > r 1 M = M max − c e i l ( dim ∗ ( 3 / 2 − r 3 ) ) popnew(j)=\sum_{mi=M}^{M\mathrm{max}}Memory(mi,j) / (M\mathrm{max}-M+1),a>r_1\\ M=M\text{max}-ceil(\text{dim}*(3 / 2-r_3)) popnew(j)=mi=MMmaxMemory(mi,j)/(MmaxM+1),a>r1M=Mmaxceil(dim(3/2r3))
其中 Mmax 是记忆大小的上限,其值为评估次数最大值的5%,Memory 是记忆中个体的位置。

回忆阶段
在回忆阶段,通过逐渐根据线索进行回忆,如果线索中断,则判断为无匹配经验。此过程通过模拟图示,用绿色虚线表示相等的值,红色虚线表示不等。特定的记忆索引和当前回忆维度用于筛选与输入数据匹配的记忆数据。若最终记忆索引缩减至单一值,则直接比较该记忆数据与输入数据的所有维度,以确认是否存在匹配结果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

记忆阶段

在记忆阶段,记忆位置索引(Mw)会在超过最大记忆容量(Mmax)时重置为起始位置。此阶段中,基于每个记忆周期的回忆和思考过程,系统会优先遗忘表现较差的记忆,并在之后遗忘表现较好的记忆。所有记忆会根据适应性值进行排序,适应性较低的记忆将被放在前面以便优先覆盖,从而有效管理记忆资源。

在这里插入图片描述
流程图

在这里插入图片描述

MBS改进算法与基本算法区别

在这里插入图片描述

3.结果展示

作者上传的Github链接已撤销,故复现一下MBS改进策略,应用到海洋捕食者算法MPA。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Jia H, Lu C, Xing Z. Memory backtracking strategy: An evolutionary updating mechanism for meta-heuristic algorithms[J]. Swarm and Evolutionary Computation, 2024, 84: 101456.

5.代码获取

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小O的算法实验室

谢谢大佬的肯定!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值