SCI一区顶刊优化算法改进:基于强化学习的神经网络算法RLNNA,你绝对没见过,非常新颖!

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~  

目录

神经网络优化算法NNA:

基于强化学习的神经网络优化算法RLNNA:

改进点1:基于强化学习的修正因子

改进点2:基于历史种群的迁移算子

改进点3:设计的反馈算子

改进算法框架图与伪代码:

效果展示

参考文献

部分代码展示与程序目录

完整代码获取


        应小伙伴要求,今天为大家带来一期在2023年SCI一区顶刊上的算法改进:基于强化学习的神经网络优化算法代码与原理讲解,非常新颖!相信大家也从来没见过,效果不错!

        注意!这里的神经网络并不是传统意义上的神经网络,而是一种优化算法,大家可以类比为动物园优化算法,只是这位作者借用了神经网络的思想取名为神经网络优化算法(NNA),其本质上还是随机搜索的群智能优化算法,有点唬人!

神经网络优化算法NNA:

        首先介绍一下原始的神经网络优化算法NNA!

        神经网络算法灵感来自于生物神经系统的结构。一般来说,人工神经网络用于预测目的,它试图通过频繁改变权值来减小预测解与目标解之间的差距。然而,解决优化问题就是从给定的搜索空间中找到目标解。为了使人工神经网络适合作为一种优化技术,NNA的作者首先将当前最优解作为目标解。然后,通过调整每个神经细胞的权重值来获得更好的解。

        NNA的结构由以下四个阶段组成:

        (1)生成种群:

        (2)更新权重矩阵:

        (3)产生偏置:分别使用偏置算子和转移算子来进行勘探和开发。采用修正因子βt来分配勘探开发时间。

        (4)转移算子:围绕当前搜索空间找到更好的解决方案。

        此处就不再讲解原始神经网络算法的细节,具体内容大家可以查看原始文献!参考文献放在下面了!

        Ali Sadollah, Hassan Sayyaadi, Anupam Yadav (2018).A dynamic metaheuristic optimization model inspired by biological nervous systems: Neural network algorithm, Applied Soft Computing, 71, pp. 747-782.

基于强化学习的神经网络优化算法RLNNA:

        强化学习是机器学习的一个非常重要的分支,并与元启发式相结合在许多领域得到了应用。RL系统通常由五个部分组成:一个环境,一个学习代理,一组离散的环境状态,一组离散的代理行为和一个奖励分配机制。RL可以描述如下。首先,agent在时间t接收到状态和奖励,然后基于收到的奖励和状态,agent将采取行动。最后,随着行动的执行,环境将发生变化,这将在时间t + 1产生新的奖励和状态。根据RL的工作原理,RL的主要优点可归纳为以下几点:

        1)强化学习只需要很少的环境信息,适合于复杂的任务。

        2)强化学习的学习过程是在线的,可以直接与环境进行交互。

        3) RL通过简单的奖励函数来评价得到的解的质量,而不是复杂的数学运算,可以提高计算效率。

        废话不多说,直接来看一下是如何改进的!

改进点1:基于强化学习的修正因子

        针对NNA中修正因子生成方法的不足,提出了一种基于RL的修正因子调整方法。该方法的基本思想可以表述为:如果一个个体能够在一个循环中找到更好的解,那么它就具有一些寻找全局最优解的有益信息,可以称为优秀个体。也就是说,为了不错过更好的解,优秀个体在自身周围执行搜索算子(即局部开发)是一个不错的选择。根据这一思想,RL的设计规则是基于得到的一个回路中每个个体的两个适应度值,定义为:

        其中βti是第I个个体在时间t时的修正因子,τ是惩罚因子,h(x)和s(x)是两个差分函数,g(x)是控制函数。h(x)、s(x)、g(x)可以表示为(以最小问题为例):

        其中,ft1为第I个个体在时刻t的适应度值,f(t+1)i,1为第i个个体在时刻t+1的适应度值。f(t+1)i,2是第i个个体在t+1时刻通过第二次函数评估得到的适应度值。根据公式(30),有两种候选动作,即保持动作和激活动作。对于一个个体,如果触发“keep action”,则该个体使用与上次迭代相同的修改因子来完成下一个搜索;如果触发了“activate action”,则该个体使用一个新的修改因子来执行下一个搜索。由(28)-(30)可知,当一个个体是RLNNA中的优秀个体时,会触发“激活动作”,其在下一次迭代中的修改因子会更小,这意味着它在下一次迭代中有更多的机会执行转移算子(即利用)。所设计的修正因子更新方法如下图所示。

改进点2:基于历史种群的迁移算子

        如前所述,NNA的迁移算子仅以当前最优解为指导,这是增加NNA陷入局部极小的可能性的潜在风险。为了在一定程度上避免这种风险,我们引入历史种群信息来传递算子。在RLNNA中,传递算子包括一个当前传递项和一个历史传递项,可以表示为:

        式中,κ1和κ2为两个标准正态分布的随机数,xt(old),i为历史种群xt old在时间t的第i个个体。Xt(old)由下式更新:

        式中λ5为0 ~ 1之间均匀分布的随机数。那么,xt(old)的最终形式为:

        其中φ(·)是一个排列函数,这意味着Xt old中的向量是随机排序的。

        最后,基于贪婪策略完成更新:

        与NNA的转移算子相比,RLNNA中的转移算子的优势可以概括为:

        一方面,在迁移算子中引入历史种群,如(31)所示,迁移算子在搜索过程中起两个作用。首先,它可以增加种群多样性,从而在一定程度上降低过早收敛的风险。其次,在式(31)中,xt Best - xt,i和xt Best - xt old,i可以看作是两个微分向量。根据(32)和式(33)所示的Xt old的生成机制,更有可能的情况是|Xt Best - Xt old,i|大于|Xt Best - Xt,i|,这意味着所设计的传递算子比NNA具有更大的搜索空间

        另一方面,原始随机数是0 ~ 1之间的均匀分布,而改进的随机数κ1和κ2 in(31)服从标准正态分布。显然,标准正态分布产生的随机数比均匀分布产生的随机数具有更大的波动性。因此,(31)中的随机数κ1和κ2非常有助于RLNNA增加其搜索空间,增强其逃避局部最优的能力。

改进点3:设计的反馈算子

        为了克服NNA收敛缓慢的缺点,我们设计了一个反馈算子,它是由偏置算子或传递算子对得到的试验种群Vt的进一步优化,可以表示为:

        与迁移算子一样,在完成反馈算子步骤之后,执行贪婪选择策略,即:

        公式(35)中,κ3、κ4为两个标准正态分布的随机数,m为1 ~ N之间的随机整数,f ~ m为第m个个体的适应度值。另外,m不等于i。由(35)可知,所设计的反馈算子具有以下两个优点:

        一方面,它不仅考虑了当前反馈,还考虑了局部反馈。在当前反馈项中,vti从随机选择的vtm中学习,历史反馈项以历史种群为指导。需要注意的是,由于f (xt old,i)和f (vt i)之间存在不确定性关系,历史反馈项也可以称为随机扰动项。因此,所设计的反馈算子具有较强的随机性,有利于增加种群多样性。

        另一方面,κ3和κ4也服从标准正态分布,其作用与κ1和κ2公式(31)相同。

改进算法框架图与伪代码:

        为了使大家更好地理解,这边给出算法框架和伪代码,非常清晰!

        如果实在看不懂,不用担心,可以看下代码,再结合上文公式理解就一目了然了!

效果展示

        为了方便大家比较,这里采用经典的23个标准测试函数,也就是CEC2005与原始神经网络优化算法NNA进行对比!其他的大家可以回去慢慢试!效果都很好!

        以上截的11个测试函数的图,可以看到,RLNNA在大部分函数上均远远超过原始的神经网络算法NNA,仅有一两个算法不如原算法,存在很明显的差距,大家应用到回归、分类、时序预测模型(如RLNNA-SVM)或应用到信号分解故障诊断领域都是一个不错的选择!

        以上所有图片,均可一键运行main文件即可出图!!(其中测试函数图像仅需手动切换函数)

        适用平台:Matlab(暂无版本限制)

参考文献

        [1]Zhang Y. Neural network algorithm with reinforcement learning for parameters extraction of photovoltaic models[J]. IEEE Transactions on Neural Networks and Learning Systems, 2021, 34(6): 2806-2816.

部分代码展示与程序目录

clear
clc
closeSearchAgents=30;     % 种群数量
Function_name='F7';  % 函数名称
Max_iterations=1000; % 最大迭代次数[lb,ub,dim,fobj]=Get_Functions_details(Function_name);[Best_RLNNAs,Best_score,~,NNA_curve]=NNA(SearchAgents,Max_iterations,lb,ub,dim,fobj);        % 调用NNA算法
[Alpha_RLNNAs,Alpha_score,RLNNA_curve]=RLNNA(SearchAgents,Max_iterations,lb,ub,dim,fobj); % 调用RLNNA算法figure('Position',[290   206   648   287])
%Draw the search space
subplot(1,2,1);
func_plot(Function_name);
title('Test function')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
grid off

完整代码获取

         如果需要免费获得图中的完整测试代码,只需点击下方小卡片,后台回复关键字:

RLNNA

        也可点击小卡片,后台回复个人需求(比如RLNNA-SVM)定制此改进算法RLNNA优化模型(看到秒回):

        1.回归/时序/分类预测类:SVM、RVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~

        2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM/RVM/ELM/LSTM/BiLSTM/GRU/BiGRU/Attention机制类等均可(可任意搭配非常新颖)~

        3.分解类:EMD、EEMD、VMD、REMD、FEEMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~

        4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~

        5.原创改进优化算法(适合需要创新的同学):2024年的新算法CPO等或麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!

        更多代码链接:更多代码链接

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用Python进行数据可视化Plotly与Dash的应用【第157篇—数据可视化】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 利用Python进行数据可视化Plotly与Dash的应用 数据可视化是数据分析中至关重要的一环&…

SpringBoot集成 itextpdf 根据模板动态生成PDF

目录 需求说明前期准备Spring Boot 集成添加依赖构建工具类构建MultipartFile编辑PDF模板Java代码设置对应form的key-value 需求说明 根据合同模板,将动态的合同标签,合同方以及合同签约时间等动态的生成PDF,供用户下载打印。 前期准备 安…

Linux学习_进程

1.进程 概念:程序的一个执行实例,正在执行的程序等,担当分配系统资源(CPU时间,内存)的实体,进程PCB自己的代码和数据 PCB:进程信息被放在一个叫做进程控制块的数据结构中&#xff…

左手医生:医疗 AI 企业的云原生提效降本之路

相信这样的经历对很多人来说并不陌生:为了能到更好的医院治病,不惜路途遥远奔波到大城市;或者只是看个小病,也得排上半天长队。这些由于医疗资源分配不均导致的就医问题已是老生长谈。 云计算、人工智能、大数据等技术的发展和融…

【嵌入式——C语言】VScode编写C程序、交叉编译

【嵌入式——C语言】VScode编写C程序、交叉编译 第一步第二步第三步第四步第五步第六步第七步第八步 第一步 下载Visual Studio Code下载地址 然后直接安装就可以了。 第二步 前提是你的电脑上安装了WSL。。。 打开vscode的扩展,输入WSL进行安装 安装完之后在窗…

装饰器模式实战运用(功能增强)

目录 前言 装饰器模式与代理模式的区别 UML plantuml 类图 实战代码 mybatis cache 前言 装饰器模式和代理模式在使用上很相似,都是在不修改原始类代码的情况下,动态地给真实对象的方法做增强。 装饰器模式是通过创建一个包装对象来包裹原有对象…

c# RichTextbox添加行号

使用另一个RichTextBox放在要添加行号的左边 使用以下代码 //uiRichTextBox1为右侧文本框,uiRichTextBox2为左侧文本框int lineIndex 0;private void uiRichTextBox1_TextChanged(object sender, EventArgs e){if (lineIndex > uiRichTextBox1.Lines.Length){L…

腾讯云4核8G12M云服务器一年646元,送3个月时长

2024年腾讯云4核8G服务器租用优惠价格:轻量应用服务器4核8G12M带宽646元15个月,CVM云服务器S5实例优惠价格1437.24元买一年送3个月,腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图: 腾讯云4核8G服务器优惠价格 轻…

若依 3.8.7版本springboot前后端分离 整合mabatis plus

1.去掉mybatis 这一步我没有操作&#xff0c;看别人的博客有说不去掉可能冲突&#xff0c;也可能不冲突&#xff0c;我试下来就没去掉如需要去除&#xff0c;到总的pom.xml中properties标签下的<mybatis-spring-boot.version>x.x.x</mybatis-spring-boot.version>…

iPad Pro安装Code APP结合内网穿透实现公网SSH远程连接服务器云开发

文章目录 1. 在iPad下载Code APP2.安装cpolar内网穿透2.1 cpolar 安装2.2 创建TCP隧道 3. iPad远程vscode4. 配置固定TCP端口地址4.1 保留固定TCP地址4.2 配置固定的TCP端口地址4.3 使用固定TCP地址远程vscode 本文主要介绍开源iPad应用IDE Code App 如何下载安装&#xff0c;并…

qt-C++笔记之QSpinBox控件

qt-C笔记之QSpinBox控件 code review! 文章目录 qt-C笔记之QSpinBox控件1.运行2.main.cpp3.main.pro4.《Qt6 C开发指南》&#xff1a;4.4 QSpinBox 和QDoubleSpinBox 1.运行 2.main.cpp #include <QApplication> #include <QSpinBox> #include <QPushButton&g…

electron打包桌面版.exe之vue项目踩坑(vue3+electron 解决打包后首页打开空白,打包后路由不跳转及请求不到后端数据等问题)

vue项目https://www.qingplus.cn/components-web/index打包桌面版问题集合 一、静态资源加载问题 npm run electron_dev桌面版运行后页面空白&#xff0c;内容未加载。 填坑&#xff1a; 打包配置要用相对路径 vite.config.ts文件中的base要改成./&#xff0c;之前加了项目…

软件接口安全设计规范及审计要点

1.token授权安全设计 2.https传输加密 3.接口调用安全设计 4.日志审计里监控 5.开发测试环境隔离&#xff0c;脱敏处理 6.数据库运维监控审计 项目管理全套资料获取&#xff1a;软件开发全套资料_数字中台建设指南-CSDN博客

Java 学习和实践笔记(49):用javabean和一维数组的方式来存储表格数据

还是存储下面这个表格的数据&#xff0c;但使用另一种方法来做。 用javabean和一维数组的方法来做&#xff0c;示例代码如下&#xff1a; /*先创建一个类&#xff0c;其实就是创建好一个只有各属性列的空表格*/ class Employees {private int id;private String name;private …

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题&#xff0c;即使是非zookeeper的节点&#xff0c;或者是非集群内部节点&#xff0c;也可以通过nc扫描2181端口&#xff0c;获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述&#xff1a;CVE-2018-8012: A…

Self-Consistency Improves Chain of Thought Reasoning in Language Models阅读笔记

论文链接&#xff1a;https://arxiv.org/pdf/2203.11171.pdf 又到了读论文的时间&#xff0c;内心有点疲惫。这几天还是在看CoT的文章&#xff0c;今天这篇是讲如何利用self-consistency&#xff08;自我一致性&#xff09;来改进大语言模型的思维链推理过程。什么是self-cons…

Android-Handler详解_原理解析

为了方便阅读将文章分为使用篇和源码解析两篇&#xff0c;上一篇已经写了Handler是什么、有什么、怎们用&#xff0c;这一片从源码的角度分析完整流程&#xff0c;看看Handler消息机制到底是啥原理。才疏学浅&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;多谢。 完整…

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数&#xff08;二&#xff09; 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录

ClickHouse10-ClickHouse中Kafka表引擎

Kafka表引擎也是一种常见的表引擎&#xff0c;在很多大数据量的场景下&#xff0c;会从源通过Kafka将数据输送到ClickHouse&#xff0c;Kafka作为输送的方式&#xff0c;ClickHouse作为存储引擎与查询引擎&#xff0c;大数据量的数据可以得到快速的、高压缩的存储。 Kafka大家…

Ubuntu 配置 kubernetes 学习环境,让外部访问 dashboard

Ubuntu 配置 kubernetes 学习环境 一、安装 1. minikube 首先下载一下 minikube&#xff0c;这是一个单机版的 k8s&#xff0c;只需要有容器环境就可以轻松启动和学习 k8s。 首先你需要有Docker、QEMU、Hyperkit等其中之一的容器环境&#xff0c;以下使用 docker 进行。 对…