人类记忆优化算法:针对全局优化问题的记忆启发优化器

Human memory optimization algorithm: A memory-inspired optimizer for global optimization problems
24年 Expert Systems With Applications sci一区
原文链接: https://doi.org/10.1016/j.eswa.2023.121597
Zhu D, Wang S, Zhou C, et al. Human memory optimization algorithm: A memory-inspired optimizer for global optimization problems[J]. Expert Systems with Applications, 2024, 237: 121597.

Human memory optimization algorithm: A memory-inspired optimizer for global optimization problems

摘要: 随着科学技术的进步,优化问题变得更加复杂。 元启发式算法在解决优化问题时具有效率高、全局搜索能力强的优点,因此越来越多的元启发式算法被提出并深入研究,而如何提高算法的普适性是一个重要的问题。 本文提出一种模拟人类记忆行为的优化算法,全称为人类记忆优化算法,简称HMO,它模拟人类在生产中的行为方式,存储人类对成功和失败的偏好,模拟人类的行为方式 在他们的记忆中,逐渐朝着更好的方向和结果寻找合理的最优解决方案。 结果在CEC 2013测试集中与其他元启发式算法进行比较,表明HMO具有更好的优化能力,并从收敛性分析和参数分析实验验证了算法的可行性。 在三个工程优化问题中,HMO都能在合理的参数范围内找到最优解,验证了HMO的实用性。
只记录算法原理与过程,具体自行看原文


目录

  • 一、介绍
  • 二、算法
    • 2.1 启示
    • 2.2 算法各阶段
    • 2.3 算法流程


一、介绍

以最小化问题为例,本文开发了一种受人类记忆行为启发的启发式算法。 人类的记忆是多模态的行为,人们常常会对指导未来行为的失败和成功印象深刻,同时,人类会时不时地回忆起最近的记忆,但也会忘记最近的记忆。 具体示意图如图1所示。(a)中的人到处寻找手机,结果发现手机在自己手里,这是人类记忆暂时遗忘的过程; (b)中的人以前被蛇咬过,所以非常怕蛇,而且那段痛苦的记忆也很深刻。 受人类记忆行为的启发,本文提出了一种人类记忆优化算法,简称HMO,该算法存储人类行为产生的成功和失败的记忆,并通过人类特有的思维方式进行回忆,从而不断激励人们走向更好的地方 。 与CEC 2013中各种启发式算法的比较表明,HMO更加通用,具有更好的优化能力; 此外,HMO在多种工程案例中都有较好的优化结果,验证了HMO的实用性和可行性。

在这里插入图片描述


二、算法

2.1 启示

当人们在日常生活中不断进行活动并产生形成记忆的事件记录时,我们也正是通过对过去事件的不断回忆来指导我们当前的行为。 在大多数情况下,我们会尽力避免犯过去犯过的错误。 另一方面,我们需要在过去取得的成就的基础上再接再厉。 研究表明,人类会记住不愉快的事情和愉快的事件(LaBar,2007),并且这些记忆会在大脑中保留很长时间,而在最近的过去,我们仍然会怀念它们,Kornell 等人。 也表明我们的记忆是有偏差的(Kornell&Bjork,2009),特别是在最近或平常的时间,更容易被错过。 生活和行为(Mahr & Csibra,2020)。 正是因为有这些记忆的影响,我们才能通过记忆产生的经验不断地引导我们走向更好的方向,在失败与成功的交替循环中共同推动人类的发展。

本文提出了一种人类记忆优化算法,通过人类的行为活动和回忆不断更新新的搜索方向,逐渐逼近优化问题的最优解。 具体示意图如图2所示。HMO模型有以下主要阶段:
•人类需要通过生产活动产生记忆或事件。
• 失败和成功会被特别记住,人们会继续回忆起这些事件。 值得注意的是,失败的事件是那些痛苦的经历,成功的事件是那些快乐的经历。
• 人类也许能够回忆或忘记当前的记忆。
• 记忆过程也是一种人类活动,也可以产生记忆或事件。
• 回忆不同的事件时,心情是不同的。

2.2 算法各阶段

在这里插入图片描述

在这里插入图片描述
~X是平均位置,
T 是最大迭代次数。
∀由模拟人类行为状态的散度函数组成。
k是属于(0.1,1.3)的随机常数。
dim是优化问题的维数。
lb和ub分别表示整个问题空间的下界和上界。

本文将人类记忆的过程分为成功记忆和失败记忆,以模拟现实世界中不同的存储活动(参见算法1)。 存储每次产生的成功和失败事件。 内存存储的矩阵是有限容量的,设置为N*dim,当存储最新的内存时,如果超过容量则一次替换最旧的内存,N代表种群数量。 根据人类记忆的本质,记忆的存储只存储比之前更好和更坏的事件。 值得注意的是,这里保留了全局最优解和最差解,因此会存在存储相同解的情况
在这里插入图片描述

当取得某些成就时,例如获奖感言,很容易记住之前的辛勤工作。 这些艰难时期可以被视为失败。 为了模仿这种行为,我们使用以下更新来表示每个人回忆失败事件的过程:
在这里插入图片描述
其中 δ 是常数值 4,φ 是大小为 1 × dim 且遵循正态分布的随机向量。 xbest表示历史最优内存。 a 表示最差矩阵内随机选择的第 a 个位置。 β表示情绪的状态因子。 r1和r2都是[0,1]的均匀随机数,它们代表的是提取到队列中的比例。 故障存储器的存储方案更新得更慢,因为最坏的解决方案在早期被锁定,并且在后期更难以找到最差的解决方案。 在这种情况下,Worst中的位置与当前种群位置信息的差异更大,并提供更好的全局探索能力。 同样,回忆一次成功事件的表示如下:
在这里插入图片描述
Besta2代表最优记忆矩阵中随机选择的a2段记忆。 在成功事件的回忆中,成功之间的差异正在迅速变小,因此成功事件的回忆行为正在从全局探索快速转向局部利用。

值得一提的是,人们在回忆当前事件时往往会记不住,本文将其称为短暂性记忆丧失。 在这种情况下,失去的记忆只能通过印象深刻的事件来找回。 因此,我们使用以下更新来模拟寻找丢失的记忆:
在这里插入图片描述
其中σ代表随机数,代表此时的状态因子。 Pworst 表示最近最糟糕的记忆。 Xr(t) 代表群体中随机选择的个体。 注意,这个方程的意义在于对当前记忆状态的不满与最近不幸事件的关联,从而为未来的行为提供一些指导。 从等式可以看出。 (4)算法的优化过程不考虑成功事件,而是与当前种群位置相关,因此记忆丢失的行为是一种具有一定全局探索性的行为。
最后,如果当前记忆没有丢失的话,可以用下式表示:
在这里插入图片描述
其中Xl代表当前最优解,它代表当前种群中的最佳解。 r2表示此时的情绪状态,是服从[0,1]的均匀随机数。 这个方程的意义在于表明人类认同当前的记忆状态,从而按照当前的行为来发展它。 从方程。 (5),可以看出,最优位置与局部最优位置一起考虑,并且它们是相同迭代次数的固定位置,从而实现了一些局部开发。 回想过程也是人类活动,因此其产生的最优解和最差解也需要存储,如算法1所示:

2.3 算法流程

HMO算法主要分为两个部分,一个是对人体活动行为的模拟,另一个是对记忆行为的模拟。其中,记忆行为分为四个部分。为简便起见,本文采用参数r来进行记忆行为的选择,其中失败和成功的选择概率相同;召回当前事件的概率也与当前事件丢失的概率相同。另外两种方法的选择概率也相同。算法部分描述了所提出的HMO算法的流程

在这里插入图片描述
r是回想失败事件的概率值,需要设置,其中回想成功事件和失败事件的概率相同,回想电流和记忆损失的概率相同,因此只需要一个R就可以调整四种回想类型的选择。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/696430.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】GPT-4中的机器学习如何塑造人类与AI的新对话

🚀时空传送门 🔍引言📕GPT-4概述🌹机器学习在GPT-4中的应用🚆文本生成与摘要🎈文献综述与知识图谱构建🚲情感分析与文本分类🚀搜索引擎优化💴智能客服与虚拟助手&#x1…

Web--CSS基础

文章目录 定义方式选择器文本字体背景边框元素展示格式内边距与外边距盒子模型位置浮动flex布局响应式布局 定义方式 行内样式表 直接定义在style属性中&#xff0c;作用于当前标签 <img src "/imges/logo.jpg" alt "" style "width 400"…

时钟影响ADC性能不仅仅是抖动

时钟影响ADC性能除了抖动&#xff0c;还有占空比。 在高速AD采样中&#xff0c;时钟占空比是非常重要的一个参数。时钟信号的上升沿控制ADC的采样&#xff0c;而下降沿控制着信号的保持&#xff0c;在一个周期内才可以完成量化输出&#xff0c;所以必须保持时钟的占空比为50%&…

自动化决策和业务流程类控制的系统前端UI设计开发

自动化决策和业务流程类控制的系统前端UI设计开发

NLP——电影评论情感分析

python-tensorflow2.0 numpy 1.19.1 tensorflow 2.0.0 导入库 数据加载 数据处理 构建模型 训练 评估 预测 1.基于2层dropout神经网络 2.基于LSTM的网络 #导入需要用到的库 import os import tarfile import urllib. request import tensorflow as tf import numpy a…

使用Python批量处理Excel的内容

正文共&#xff1a;1500 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 在前面的文章中&#xff08;如何使用Python提取Excel中固定单元格的内容&#xff09;&#xff0c;我们介绍了如何安装Python环境和PyCharm工具&#xff0c;还利用搭好的环境简单测试了一下ChatGPT提…

小程序名片怎么生成?AI名片生成器源码系统 为企业店铺创建自己的数字名片

在数字化时代&#xff0c;小程序名片已经成为企业店铺展示自身形象、推广产品和服务的重要工具。分享一个AI名片生成器源码系统春哥AI雷达智能名片小程序系统企业商业运营版&#xff0c;含完整代码包和详细的图文安装部署搭建教程&#xff0c;新手也能轻松使用&#xff0c;源码…

MySQL: 索引与事务

文章目录 1. 索引 (Index)1.1 概念1.2 作用1.3 使用场景1.4 索引的使用1.5 索引的使用案例 (不要轻易尝试)1.6 索引背后的数据结构1.7 重点总结 2.事务2.1 为什么要使用事务2.2 事务的概念2.3 事务的使用2.4 对事务的理解2.5 事务的基本特性 1. 索引 (Index) 1.1 概念 索引是…

Python Requests库详解

大家好&#xff0c;在现代网络开发中&#xff0c;与Web服务器进行通信是一项至关重要的任务。Python作为一种多才多艺的编程语言&#xff0c;提供了各种工具和库来简化这一过程。其中&#xff0c;Requests库作为Python中最受欢迎的HTTP库之一&#xff0c;为开发人员提供了简单而…

12-Gateway网关-网关作用介绍

12-Gateway网关-网关作用介绍 1.为什么需要网关&#xff1a; 网关功能&#xff1a; ​ 1.身份认证和权限校验 ​ 2.服务路由、负载均衡 ​ 3.请求限流 2.网关的技术实现&#xff1a; 在SpringCloud中网关的实现包括两种“ ​ gateway ​ zuul Zuul是基于Servlet的实…

node-mysql的批量插入

此前我批量插入都是用类似这样的命令&#xff1a; sqlcmdinsert into table(field1,field2,...) values ? indata[["f1v1","f2v1"],["f1v2","f2v2"],...] mysqlconn.query(sqlcmd,[indata],(err,res)>{...})但是感觉不太舒服&…

VueRouter3学习笔记

文章目录 1&#xff0c;入门案例2&#xff0c;一些细节高亮效果非当前路由会被销毁 3&#xff0c;嵌套路由4&#xff0c; 传递查询参数5&#xff0c;命名路由6&#xff0c;传递路径参数7&#xff0c;路径参数转props8&#xff0c;查询参数转props9&#xff0c;replace模式10&am…

Vue--》从零开始打造交互体验一流的电商平台(二)

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

SAP Build 1-工作流表单开发

1. BTP SAP Build环境配置 1.1 启用试用账号 访问BTP trial&#xff0c;启用试用账号&#xff0c;没有的话注册一个即可 https://account.hanatrial.ondemand.com/trial/#/home/trial 注册完之后就会让选择区域&#xff0c;要选US的区域才有自动化相关的功能 然后就开始生成…

什么是Java?

什么是Java&#xff1f;java是什么&#xff1f;下面我们来总结一下。 java是什么&#xff1f; java是一个静态编程语言&#xff0c;具有强大的多线程特征&#xff0c;目前java不仅采用c语言的优点&#xff0c;还去掉了一些多继承指针&#xff0c;等复杂的概念&#xff0c;我们…

跟着大佬学RE(六)

findKey 嗯&#xff0c;就是一个窗口程序&#xff0c;没有输入&#xff0c;flag 应该就藏在程序里面 第一遍自己直接莽做&#xff0c;在string窗口&#xff0c;找到 flag{} 看到标红直接 nop 然后&#xff0c;然后就不知道怎么搞了 这串字符提示不能随便 nop &#xff0c;重新…

优设AI导航

1、优设AI导航 优设AI导航

13. UDP协议与RTP协议

UDP协议 UDP协议比较简单&#xff1a; UDP的长度是固定的&#xff0c;用总长度-UDP长度就是数据长度。 UDP是不保证他的有序性和可靠性的。对于音频和视频是这样是比较好的&#xff0c;因为这段丢了&#xff0c;我们可以从下一段在开始解码。 RTP RTP 协议概述 RTP&#x…

【前端】详解JavaScript事件代理(事件委托)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

简单了解java中的异常

异常 1、异常的概述 1.1、概述 异常就是程序出现了不正常的情况&#xff0c;程序在执行过程中&#xff0c;数据导致程序不正常&#xff0c;最终导致JVM的非正常停止。语句错误不算在异常体系中。 1.2、异常的存在形式 异常有类型之分&#xff0c;比如我们比较熟悉的数组越…