电力系统短期负荷预测(Python代码+数据+详细文章讲解)

  👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

 🌈4 Python代码+数据+文章


💥1 概述

本文包括以下5个部分

模型构建: 

训练出模型,然后就可以预测任意一天的96个时刻点的负荷。

📚2 运行结果

  预测日:

部分代码:

max_tempe = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '最高温度'), [2]].values / 20
min_tempe = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '最低温度'), [2]].values / 20
avg_tempe = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '平均温度'), [2]].values / 20
humidity = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '湿度'), [2]].values / 100
weather_data = np.concatenate([max_tempe, min_tempe, avg_tempe, humidity]).reshape((1, -1))


type_of_day = np.eye(7)[date.dayofweek]
holiday = np.eye(2)[int(is_holiday(date))]
time_data = np.concatenate([type_of_day, holiday]).reshape((1, -1))


features = np.concatenate([load_data, weather_data, time_data], axis=1).reshape(1, 685)
features = Tensor(features)

print('Loading model...')
net = load('./model.pt', map_location='cpu')

print('Start predicting...')
net.eval()
labels = net(features).detach().numpy() * 7000
print('=========预测==============')
max_tempe = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '最高温度'), [2]].values / 20
min_tempe = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '最低温度'), [2]].values / 20
avg_tempe = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '平均温度'), [2]].values / 20
humidity = df_weather.loc[(df_weather[0] == predict_date) & (df_weather[1] == '湿度'), [2]].values / 100
weather_data = np.concatenate([max_tempe, min_tempe, avg_tempe, humidity]).reshape((1, -1))


type_of_day = np.eye(7)[date.dayofweek]
holiday = np.eye(2)[int(is_holiday(date))]
time_data = np.concatenate([type_of_day, holiday]).reshape((1, -1))


features = np.concatenate([load_data, weather_data, time_data], axis=1).reshape(1, 685)
features = Tensor(features)

print('Loading model...')
net = load('./model.pt', map_location='cpu')

print('Start predicting...')
net.eval()
labels = net(features).detach().numpy() * 7000
print('=========预测==============')

🎉3 参考文献

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

[1]陆继翔,张琪培,杨志宏,涂孟夫,陆进军,彭晖.基于CNN-LSTM混合神经网络模型的短期负荷预测方法[J].电力系统自动化,2019,43(08):131-137.

[2]罗澍忻,陆秋瑜,靳冰洁,麻敏华.考虑相关因素的长短时记忆网络短期负荷预测方法[J].机电工程技术,2019,48(12):126-129.

[3]王增平,赵兵,纪维佳,高欣,李晓兵.基于GRU-NN模型的短期负荷预测方法[J].电力系统自动化,2019,43(05):53-62.

[4] 牛腾腾.电力系统短期负荷预测  2017,01104

 🌈4 Python代码+数据+文章

为了克服BP的这些缺陷,本人对算法做了一些改进确定连接权修正值的计算过程,实际上是优化计算的梯度下降法。当能量公式对应的误差曲面为窄长型时,这种算法在谷的两壁跳来跳去,影响了网络的收敛速度,对算法最普通的改进方法是增加附加动量项。利用附加动量项可以起到平滑梯度方向的剧烈变化,增加算法的稳定性。在具体计算中,学习率η越大,学习速度会越快,但过大时会引起震荡效应;而动量因子α取得过大可能导致发散,过小则收敛速度过慢。并为了解决BP易于陷于极小值现象,用人工遗传算法来优化BP网络的初始权值。遗传算法是根据生物进化思想而启发得出的一种全局优化算法,在本质上是一种不依赖具体问题的直接搜索方法,它仅需给出目标函数的描述,从一组随机产生的称为“种群(population)”的初始解开始,从全局空间出发搜索问题的最优解。由于遗传算法善于全局搜索,且能以较大的概率找到全局最优解,故用它来完成前期搜索能较好的克服BP算法的局部极小的缺陷。将GA和BP结合起来,形成GA-BP混合训练算法,以GA优化BP网络的初始权值和阈值,再由BP算法按负梯度方向修正网络权值及阈值,进行网络训练。这种方法避免了BP网络易陷入局部极小问题,达到优化网络目的,更能精确的实现城市用电量预测。 实例讲解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值