LSTM对比Bi-LSTM的电力负荷时间序列预测(Matlab)

news2024/12/25 0:36:56

  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

0 概述

1 电力负荷预测

2 滑动窗输入结构的构建

3 LSTM

4 Bi-LSTM

5 运行结果

6 Matlab代码实现

7 参考文献


0 概述

      本文使用LSTM和Bi-LSTM,以电力负荷预测为例对比了两者的预测性能,其中将电力负荷构造为滑动时间窗的形式作为网络输出输入,实现LSTM与Bi-LSTM网络的多输入单输出模型,相比于单输入单输出的模型有更高的准确性。本文的电力负荷滑动窗输入构建方式具有一定的参考价值。

电力负荷预测

      电力负荷预测是一种典型的时间序列回归预测任务。电力负荷预测是保证电力供需平衡的基础,并为电网、电源的规划建设以及电网企业、电网使用者的经营决策提供信息和依据。负荷预测分为长期、中期、短期和超短期负荷预测,预测对象包括系统负荷和母线负荷,由电网企业负责组织编制。大用户应根据有关规定,按时报送其主要接装容量和年、月用电量预测及日用电负荷变化过程。                           

滑动窗输入结构的构建

      由于电力负荷具有很强的时间相关性,仅通过上一时刻的负荷预测下一时刻的负荷并不能有效的反应复杂的时间关系,同时也没有充分的利用历史负荷数据的全部信息。所以本文通过滑动时间窗技术将多个历史时间内的负荷情况组合起来,预测下一时刻的负荷情况,并不断向前移动,以完成全天内的负荷预测。具体的构造方法如下:

        如上图所示,在t时刻时黄色每一个小框都表示一个时间节点的输入数据,蓝色的小框表示输出数据,将3个黄色小框作为输入预测蓝色小框中的数据;而在t+1时刻,整体往前移动一个时间节点,以此不断前进,直到预测完全体的数据。

3 LSTM

      传统RNN网络由于结构存在固有缺陷,在参数更新时会存在梯度消失以及梯度爆炸的问题,导致长距离的历史信息丢失,进一步造成网络极难收敛,无法训练出理想的模型。LSTM作为一种改进的循环神经网络,在原有网络结构的基础上加入了细胞状态(cell state)的结构来控制全局信息的传输,并通过遗忘门,输入门,输出门三种门控单元控制细胞状态信息值的更新。LSTM在极大程度上缓解了传统RNN模型存在的长期依赖问题,减少了长距离历史信息的丢失,输出的预测结果更准确 。LSTM的具体模型如下:

LSTM通过以下公式进行更新权值矩阵和偏置参数等网络信息:

                      

4 Bi-LSTM

     Bi-LSTM 神经⽹络结构模型分2个独⽴LSTM,输⼊序列分别以正序和逆序输⼊⾄2个LSTM神经⽹络进⾏特征提取,将2个输出向量(即提取后的特征向量)进⾏拼接后形成的词向量作为该词的最终特征表达。Bi-LSTM 的模型设计理念是使 t 时刻所获得特征数据同时拥有过去和将来之间的信息,实验证明,这种神经⽹络结构模型对⽂本特征提取效率和性能要优于单个 LSTM 结构模型。

5 运行结果

     本文的数据集是一个包含60日的电力时间序列负荷数据,数据的颗粒度为15min,一天中共有96个点,使用前59日的数据进行训练,用最后一日的数据作为测试集进行负荷预测。滑动时间窗口大小设置为8,即过去两个小时内的负荷预测下一时刻的负荷。

部分代码:

function [layer_lstm,layer_bilstm,options] = Net_definition(numFeatures,numResponses,numHiddenUnits,Train_number,dorp_rate)
%% LSTM
layer_lstm = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    dropoutLayer(dorp_rate)
    fullyConnectedLayer(numResponses)
    regressionLayer];
%% BI-LSTM
layer_bilstm = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    dropoutLayer(dorp_rate)
    fullyConnectedLayer(numResponses)
    regressionLayer];
%% 
options = trainingOptions('adam', ...
    'MaxEpochs',Train_number, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.005, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',Train_number/2, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',0, ...
    'Plots','training-progress');
end

6 Matlab代码实现

7 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]李玉志,刘晓亮,邢方方,温国强,卢楠滟,何慧,焦润海.基于Bi-LSTM和特征关联性分析的日尖峰负荷预测[J].电网技术,2021,45(07):2719-2730.DOI:10.13335/j.1000-3673.pst.2020.1390.

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

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

相关文章

小程序api的promise化

小程序根目录cmd运行安装命令 npm install --save miniprogram-api-promise1.0.4 安装完成之后先到根目录中删除miniprogram_npm文件夹(不删除构建npm时可能会出现问题) 删除之后再在工具中点击构建npm 构建成功之后会看到根目录中重新出现了miniprogram_npm文件夹 在app.j…

P1747 好奇怪的游戏

好奇怪的游戏 题目背景 《爱与愁的故事第三弹shopping》娱乐章。 调调口味来道水题。 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似…

修复漏洞(三)升级Docker里面的镜像(MySQL、Nginx等)

前言 因原版本检测出来存在漏洞,故需升级底层镜像 步骤 先看看自己现在的是什么版本,教你们一个骚操作,查看Docker里面的Mysql或者其他容器版本都不用百度出来的这么麻烦首先docker images,查看镜像ID然后docker inspect 镜像I…

2、Java入门教程【IDEA】

1、下载 IDEA社区版:下载地址 IDEA管理JAVA程序的结构: project 项目、工程module 模块package 包class 类 2、创建工程 创建【project】 点击【create】后,项目结构如下: 创建【package】 我们继续在【src】目录下创建【pack…

Python中的break和continue语句应用举例

Python中的break和continue语句应用举例 在进行Python编程时候,有时需要,对循环中断或跳过某部分语句,此时常会用到break语句或continue语句。本文将通过实际例子阐述这两个语句的用法。 1.break语句 break语句是实现在某个地方中断循环&a…

js逆向补环境-b站志远二期最后8节课笔记

目录 一、基础知识1、什么是纯净V82、什么是BOM和DOM3、node环境/浏览器环境/V8引擎区别4、如何本地调试js补环境5、补环境相对于逆向算法的好处6、vm和vm2介绍 二、8个视频内容笔记概括1、补环境基本知识/头条案例手动插桩补2、Proxy代理/toString函数保护介绍3、补环境框架设…

安卓UI:Switch和ToggleButton

目录 一、Switch和ToggleButton介绍 Switch常用属性: ToggleButton属性: 二、Switch和ToggleButton常用方法 Switch常用方法: ToggleButton常用方法: 三、Switch和ToggleButton的使用 MainActivity: activity_main&#xff1…

【代码随想录 | Leetcode | 第四天】数组 | 螺旋矩阵 | 59

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏,今天将为大家带来螺旋矩阵的分享✨ 目录 前言59. 螺旋矩阵 II总结 59. 螺旋矩阵 II 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 …

【C语言进阶(八)】动态内存管理

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 动态内存规划 1. 前言2. 为什么要学…

ElasticSearch索引(index)当中的增删改查操作

文章目录 一、创建索引(Create Index):二、更新索引的设置(Update Index Settings):三、获取当前索引的设置(Get Index Settings):四、删除索引(Delete Index…

Python(十三)数据类型——整数类型

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

N!9个OA高危漏洞利用工具v1.1.6

工具介绍 该工具使用了ExpDemo-JavaFX项目,保留了核心的数据包请求接口,使用jdk1.8环境开发。目前只编写了oa系列,对相关漏洞进行复现和分析,极力避免exp的误报和有效性。 关注【Hack分享吧】工众号,回复关键字【2305…

基于linux下的高并发服务器开发(第一章)- fcntl函数

13 / fcntl函数 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ...); 参数&#xff1a; fd : 表示需要操作的文件描述符 cmd: 表示对文件描述符进行如何操作 - F_DUPFD : 复制文件描述符,复制的是第一个参数fd&#xff0c; …

【运维工程师学习六】LAM部署搭建个人Discuz论坛

【运维工程师学习六】LAM部署搭建个人Discuz论坛 1、先卸载Mariadb再安装Mysql2、MySQL官网rpm包下载3、在rpm包路径下安装 YUM Repo 文件4、更新软件仓库本地数据库信息5、开始部署——php的安装6、搜索yum包7、开始部署——配置apache以支持php&#xff08;1&#xff09;配置…

Spring MVC 运行原理 【深度理解】

什么是MVC&#xff1f; MVC 是 Model、View 和 Controller 的缩写&#xff0c;分别代表 Web 应用程序中的 3 种职责&#xff0c;MVC是一种软件设计规范。它将业务逻辑、数据、显示分离的方法来组织代码&#xff0c;降低了视图与业务逻辑之间的双向耦合。 Model(模型)&#xf…

newMap和newSet

newMap Map 对象存有键值对&#xff0c;其中的键可以是任何数据类型。Map字典是以[键&#xff0c;值]的形式存储** 1:键值对的键类型比较灵活 可以用任意类型的变量来做键名&#xff0c; 2 遍历键值对 for … in循环还有一些限制&#xff1a;它仅仅遍历可枚举属性、非Symb…

进程概念与进程控制

1.冯诺伊曼体系结构: 数据按照二进制存储 数据存储在存储器&#xff08;内存&#xff09;当中 输入设备 存储器 中央处理器 输出设备 2.操作系统&#xff1a; 先组织&#xff0c;再描述 系统调用与库函数&#xff1a; 系统调用 系统调用指运行在用户空间的程序向操作系统内核…

小程序-----vant weapp安装以及自定义主题色

首先查看小程序根目录中是否存在package.json文件 没有的话,在项目根目录打开cmd,输入npm init -y初始化一下,初始化一个包管理 安装vant weapp包 在根目录的cmd中输入npm i vant/weapp1.3.3 -S --production进行安装 后面可以指定版本 修改 app.json 将 app.json 中的 “…

【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )

文章目录 一、使用 注释语法 设置 类型注解1、使用 注释语法 设置 类型注解语法介绍2、为 基础类型变量 设置 " 类型注解 "3、为 类 的 对象类型 设置 " 类型注解 "4、为 基础容器类型变量 设置 简易 " 类型注解 "5、为 基础容器类型变量 设置 详…

Node.js下载安装和环境变量配置(详细教程)

目录 一、官网地址下载安装包 二、安装程序 三、环境配置 四、测试 五、安装淘宝镜像 5.1、附加&#xff1a;如果有出现问题的小伙伴们可以检查一下自己的配置有没有出错 一、官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择你的项目或系统对应的node.js版本…