我是靠谱客的博主 土豪酒窝,最近开发中收集的这篇文章主要介绍基于LSTM神经网络的负荷预测(Python代码实现),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

 

1.概述

2.负荷预测

3.LSTM

4.算例

5.Python代码实现

6.结果 

1.概述

电力系统负荷(电力需求量,即有功功率)预测是指充分考虑历史的系统负荷、经济状况、气象条件和社会事件等因素的影响,对未来一段时间的系统负荷做出预测。负荷预测是电力系统规划与调度的一项重要内容。短期(两周以内)预测是电网内部机组启停、调度和运营计划制定的基础;中期(未来数月)预测可为保障企业生产和社会生活用电,合理安排电网的运营与检修决策提供支持;长期(未来数年)预测可为电网改造、扩建等计划的制定提供参考,以提高电力系统的经济效益和社会效益。
复杂多变的气象条件和社会事件等不确定因素都会对电力系统负荷造成一定的影响,使得传统负荷预测模型的应用存在一定的局限性。同时,随着电力系统负荷结构的多元化,也使得模型应用的效果有所降低,因此电力系统负荷预测问题亟待进一步研究。

2.负荷预测

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

3.LSTM


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


 

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

  

4.算例

根据附件中提供的某地区电网间隔 15 分钟的负荷数据,建立中短期负荷预测模型: 给出该地区电网未来 10 天间隔 15 分钟的负荷预测结果,并分析其预测精度;

5.Python代码实现

# 划分训练集和测试集,80% 作为训练集
train_size = int(len(data_X) * 0.8)
test_size = len(data_X) - train_size
train_X = data_X[:train_size]
train_Y = data_Y[:train_size]
test_X = data_X[train_size:]
test_Y = data_Y[train_size:]

# 设置LSTM能识别的数据类型,形成tran_X的一维两个参数的数组,train_Y的一维一个参数的数组。并转化为tensor类型

# 把list转numpy三维数组,第一维自适应
train_X = train_X.reshape(-1, 1, input_len)
train_Y = train_Y.reshape(-1, 1, label_len)
test_X = test_X.reshape(-1, 1, input_len)
# numpy数组转tensor
train_x = torch.from_numpy(train_X)
train_y = torch.from_numpy(train_Y)
test_x = torch.from_numpy(test_X)

# 建立LSTM模型,第一层为LSTM神经网络,第二层为一个全连接层。
from torch import nn
from torch.autograd import Variable

class lstm(nn.Module):
    def __init__(self,input_size=input_len,hidden_size=input_len,output_size=label_len,num_layer=2):
        super(lstm,self).__init__()
        self.layer1 = nn.LSTM(input_size,hidden_size,num_layer)
        self.layer2 = nn.Linear(hidden_size,output_size)
    
    def forward(self,x):
        x,_ = self.layer1(x)
        s,b,h = x.size()
        x = x.view(s*b,h)
        x = self.layer2(x)
        x = x.view(s,b,-1)
        return x

6.结果 

最后

以上就是土豪酒窝为你收集整理的基于LSTM神经网络的负荷预测(Python代码实现)的全部内容,希望文章能够帮你解决基于LSTM神经网络的负荷预测(Python代码实现)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部