【原创】一键实现CPO-BiTCN-BiGRU预测!24年顶级SCI算法优化!先用先发!直接替换Excel出图!

本文主要是介绍【原创】一键实现CPO-BiTCN-BiGRU预测!24年顶级SCI算法优化!先用先发!直接替换Excel出图!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

目录

数据介绍

模型介绍

1.BiTCN层

2.BiGRU层

3.基于CPO算法优化的BiTCN-BiGRU模型

创新点

构建BiTCN-BiGRU创新点在于:

使用CPO冠豪猪优化算法创新点在于:

结果展示

完整代码


         今天为大家带来一期CPO-BiTCN-BiGRU回归预测代码,采用2024年顶级SCI期刊《Knowledge-Based Systems》上刚出来的CPO优化算法进行优化!这个模型是作者独家原创的!完全可以当作创新点!任何学术平台都搜索不到,创新性极高!直接替换Excel数据即可用!

          特别需要指出的是,别说加了CPO优化算法,就算不加优化算法,我们学术平台上搜索BiTCN-BiGRU,也是完全搜索不到这个模型的!!!

知网平台:

WOS平台:

数据介绍

作者采用的案例数据是某地光伏功率数据,特征包括气温, 方位角, 云层不透明度, 露点温度, DHI(太阳散射辐射指数), DNI(太阳直接辐射指数), GHI(太阳总水平辐射), GTI(固定倾角辐射), GTI(跟踪倾角辐射), 大气可降水量, 相对湿度, 降雪深度, 地面气压, 高度10m风向, 高度10m风速, 天顶角,输出即为实际功率一列。

图片

在实际处理时,由于光伏白天不发电,因此作者把功率为0的行都删除了!同时,由于时间关系,作者这边只选取了2022年1月份31天的功率数据进行预测,如图所示。更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可,无需更改代码,非常方便!

模型介绍

1.BiTCN层

TCN由具有相同输入和输出长度的扩张因果卷积层组成,结合了CNN和RNN的优势。然而,传统的TCN只对输入序列进行正向卷积计算,只提取正向数据特征,忽略了反向中的隐含信息。因此,采用双向时间卷积结构BiTCN来捕捉前后方向的隐藏特征,以更好地获得功率序列的长时间依赖性!BiTCN的网络结构如下图所示!非常新颖!

2.BiGRU层

接着,利用BiGRU层来进一步处理BiTCN的输出,通过考虑时间序列的前后文信息来提高预测的准确性,进一步提高预测精度!整个模型的结构如下图所示:

3.于CPO算法优化的BiTCN-BiGRU模型

但是,BiTCN-BiGRU模型的参数太多了,为了避免人工调参的局限性与盲目性,本文提出了基于冠豪猪算法CPO优化的BiTCN-BiGRU模型。通过优化学习率,BiGRU的神经元个数,滤波器个数, 正则化参数四个参数提高其预测精度,减少人工调参。

冠豪猪优化器(Crested Porcupine Optimizer, CPO)是一种新型的元启发式算法(智能优化算法),该成果由Abdel-Basset等人于2024年1月发表在中科院1区SCI期刊Knowledge-Based Systems上,模拟了冠豪猪的各种防御行为,原文作者采用CEC2014、CEC2017和CEC2020三个CEC基准函数对CPO进行了验证,效果非常不错!

具体原理和测试效果请看这篇推文:

2024年新算法-冠豪猪优化算法(CPO)-公式原理详解与性能测评 附赠Matlab代码

适用平台:Matlab2022及以上,没有的可免费提供安装包!

创新点

构建BiTCN-BiGRU创新点在于:

1. 混合模型架构的设计创新

BiTCN-BiGRU模型的核心创新之一在于它将BiTCN和BiGRU两种网络架构融合在一起。TCN通过使用膨胀卷积和残差连接优化了传统卷积神经网络(CNN)在时间序列分析中的应用,提高了模型对长期数据依赖的捕捉能力。而BiGRU则在捕获时间序列的前后依赖关系方面表现出色,能够同时考虑过去和未来的信息。这种混合架构利用了两种方法的优点,既能处理复杂的时间依赖关系,又能提高模型对时间序列动态特征的适应能力。

2. 膨胀卷积和因果卷积的应用

在TCN部分,膨胀卷积的使用大大增加了模型的感受野,使其能够捕捉到更长期的依赖性,而不会显著增加参数数量或计算复杂度。此外,通过应用因果卷积,确保了模型在预测当前时间点的值时,只会使用到当前时间点之前的信息,有效防止了未来信息的泄露。这些技术的应用使得BiTCN-BiGRU模型在处理长序列时间数据时,能够更准确地预测未来的趋势和模式。

3. 双向学习机制的优化

BiGRU部分的双向学习机制是模型另一大创新点。通过在时间序列的正向和反向上分别应用GRU单元,模型能够综合利用过去和未来的信息进行预测。这种机制特别适合于处理那些在时间上具有双向依赖性的序列数据。结合TCN部分的长期依赖捕捉能力,BiTCN-BiGRU模型能够更全面地理解和预测时间序列数据的复杂动态。

4. 网络参数和结构的自动优化

在BiTCN-BiGRU模型的训练过程中,采用了优化算法(如CPO)自动调整网络参数,包括学习率、神经元数量、滤波器数量等。这种自动优化机制不仅减少了手动调参的工作量,还能根据数据特性调整模型结构,从而在不同的时间序列预测任务中达到最佳性能。

使用CPO冠豪猪优化算法创新点在于:

冠豪猪优化器刚刚于2024年1月发表在中科院1区顶级SCI期刊Knowledge-Based Systems上!实验结果表明,NRBO算法在大部分函数上均取得了最优结果!​你先用,你就是创新!

图片

之前推文有做过​CPO和23年新算法RIME的比较,效果显而易见!

结果展示

迭代曲线:

由于时间关系,这里只跑了6次,实际使用时可跑更多次取得更好的效果!

训练集预测结果:

测试集预测结果:

可以看到,预测值非常贴近实际曲线,甚至可以说是完美一致!

线性拟合图:

误差直方图:

模型结构图:

预测结果指标:

完整代码

点击下方小卡片,后台回复关键字,不区分大小写:

CXYHB

其他更多需求或想要的代码均可点击下方小卡片后后台私信,看到后会秒回~

这篇关于【原创】一键实现CPO-BiTCN-BiGRU预测!24年顶级SCI算法优化!先用先发!直接替换Excel出图!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima