【原创】一键实现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

相关文章

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到