基于深度神经网络进行实时电力系统状态估计和预测

深度神经网络进,电力系统状态估计,负荷预测,为了训练模型并获得估计性能,请将上述数据放在根文件中,然后运行simple_test.py。要获取图,请运行get_plots.py。 请随时使用您自己的数据。基于深度神经网络进行实时电力系统状态估计和预测

预览截图

应用介绍

为了训练模型并获得估计性能,请将上述数据放在根文件中,然后运行simple_test.py。要获取图,请运行get_plots.py。 请随时使用您自己的数据。基于深度神经网络进行实时电力系统状态估计和预测

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

SEED=1234
import numpy as np
import math
from matplotlib import pyplot as plt
np.random.seed(SEED)
import keras
from keras import backend as K
import tensorflow as tf
import os, shutil, scipy.io
from model import *

# configure args
tf.set_random_seed(SEED)
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
K.set_session(sess)
K.set_learning_phase(1)

# data loading part
caseNo = 118
weight_4_mag = 100
weight_4_ang = 1#2*math.pi/360

psse_data = scipy.io.loadmat('dist2_118FASE_data.mat')
print(psse_data['inputs'].shape, psse_data['labels'].shape)

data_x = psse_data['inputs']
data_y = psse_data['labels']

# scale the mags,
data_y[0:caseNo,:] = weight_4_mag*data_y[0:caseNo,:]
data_y[caseNo:,:] = weight_4_ang*data_y[caseNo:,:]


# seperate them into training 80%, test 20%
split_train = int(0.8*psse_data['inputs'].shape[1])
split_val = psse_data['inputs'].shape[1] - split_train #int(0.25*psse_data['inputs'].shape[1])
train_x = np.transpose(data_x[:, :split_train])
train_y = np.transpose(data_y[:, :split_train])
val_x   = np.transpose(data_x[:, split_train:split_train+split_val])
val_y   = np.transpose(data_y[:, split_train:split_train+split_val])
test_x  = np.transpose(data_x[:, split_train+split_val:])
test_y  = np.transpose(data_y[:, split_train+split_val:])

print(train_x.shape, val_x.shape)
#Train the model
input_shape = (train_x.shape[1],)

epoch_num = 200
psse_model = nn1_8H_psse(input_shape, train_y.shape[1])
psse_model.fit(train_x, train_y, epochs=epoch_num, batch_size=64)

save_file = '_'.join([str(caseNo), 'nn1_8H_PSSE',
                      'epoch', str(epoch_num)]) + '.h5'

if not os.path.exists('model_logs'):
    os.makedirs('model_logs')
save_path = os.path.join('model_logs', save_file)
print('\nSaving model weights to {:s}'.format(save_path))
psse_model.save_weights(save_path)


# evaluate the model
K.set_learning_phase(0)
val_predic = psse_model.predict(val_x)
scores = psse_model.evaluate(val_x, val_y)
print("\n%s: %.2f%%" % (psse_model.metrics_names[1], scores[1]*100))


#the self.defined distance metric since, to access the distance between predicted and the true
print(val_y.shape[0])
test_no = 3706
def rmse(val_predic, val_y, voltage_distance = np.zeros((test_no,caseNo)), voltage_norm = np.zeros((test_no,1))):
    for i in range(test_no):
        for j in range(caseNo):
            predic_r, predic_i = (1/weight_4_mag)* val_predic[i, j]*math.cos(val_predic[i, j+caseNo]*2*math.pi/360), (1/weight_4_mag)*val_predic[i,j]*math.sin(val_predic[i, j+caseNo]*2*math.pi/360)
            val_r, val_i = (1/weight_4_mag)*val_y[i,j]*math.cos(val_y[i,j+caseNo]*2*math.pi/360), (1/weight_4_mag)*val_y[i][j]*math.sin(val_y[i][j+caseNo]*2*math.pi/360)
            voltage_distance[i,j] = (predic_r-val_r)**2 + (predic_i-val_i)**2
            #print(i, j, val_predic[i, j], val_predic[i, j+caseNo], val_y[i,j], val_y[i,j+caseNo])
        voltage_norm[i,] = (1/caseNo)*np.sqrt(np.sum(voltage_distance[i,:]))
    return np.mean(voltage_norm) *100
print("\n distance from the true states in terms of \|\|_2: %.4f%%" % rmse(val_predic, val_y))



文件列表(部分)

名称 大小 修改日期
118_bus_GStest_err.mat6,438.87 KB2019-05-20
get_plots.py1.91 KB2019-05-20
model.py1.17 KB2019-05-20
118_lav_PSSE_epoch_200.h57,359.98 KB2019-05-20
118_nn1_6H_PSSE_epoch_200.h55,623.68 KB2019-05-20
118_nn1_8H_PSSE_epoch_200.h57,357.56 KB2019-05-20
Read_me0.04 KB2019-05-20
simple_test.py1.23 KB2019-05-20
model.py1.99 KB2019-05-20
README0.03 KB2019-05-20
RNN v2v.py1.92 KB2019-05-20
model_logs0.00 KB2019-05-20
State-Forecasting0.00 KB2019-05-20
PSSE0.00 KB2020-07-02
1811.06146.pdf481.98 KB2020-07-02

立即下载

相关下载

[电力系统状态估计] 电力系统状态估计(电力网系统辨识)-最小二乘法-matlab txt文件为IEEE30节点电力网数据 导入其它电力网数据时,可按txt文档内格式保存数据,也可修改m文件代码 辨识后的数据将会存储在oStateEstimation.txt文件内
[基于深度神经网络的50kW光伏系统MPPT算法] 这是基于深度神经网络实现50kW光伏系统MPPT算法,simulink模型,希望对大家有帮助
[电力负荷预测] 这是应用在澳大利亚市场的电力负荷预测的matlab代码,该示例演示了如何使用MATLAB在澳大利亚悉尼构建短期负荷预测系统。它还谈到了如何将其转换为价格预测模型以及澳大利亚市场面临的挑战。准确的负荷预测对于公用事业的配电计划至关重要。负荷预测会影响许多决策,包括在给定期间内必须使用哪些发电机,并且会广泛影响电力批发市场的价格。在电力价格的混合模型中,负荷预测算法通常也很突出,这是一些最精确的电力市
[基于深度神经网络进行实时电力系统状态估计和预测] 深度神经网络进,电力系统状态估计,负荷预测,为了训练模型并获得估计性能,请将上述数据放在根文件中,然后运行simple_test.py。要获取图,请运行get_plots.py。 请随时使用您自己的数据。基于深度神经网络进行实时电力系统状态估计和预测
[基于深度学习电力负荷预测] 电力负荷预测,深度学习电力负荷预测,深度学习负荷数据,负荷预测 深度学习模型在电力负荷预测问题中的应用正在引起研究人员和整个行业的兴趣,但是在文献中尚无不同架构之间全面而合理的比较。这项工作旨在通过对比深度学习,通过审查和实验评估两个真实数据集的最新电力负荷预测趋势来填补空白。

评论列表 共有 3 条评论

Liqizhou 11月前 回复TA

123

Katherine 1年前 回复TA

报错欸 这个跑不通 怎么联系作者啊

zwdianli 1年前 回复TA

这个有118节点的状态估计么

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部