Background & Summary

The electric grid is one of the largest sources of carbon emissions, and is expected to play a key role in tackling climate change1. The electricity sector around the world is undergoing a major transition towards carbon neutrality with deepening penetration of renewable energy resources and vehicle electrification. The variability of renewable energy resources along with growing electricity demand and system vulnerability under extreme weather events pose pressing technological challenges during this transition2. Conventional physics-based modeling, optimization and control tools are becoming inadequate in these evolving systems due to the high degree of uncertainty and variability in power generation, consumption, and environmental factors such as climate change.

During this period of energy sector transition, there are enormous opportunities for artificial intelligence (AI) and machine learning (ML)-based methods3 to improve grid operations ranging from more accurate forecasting of renewables and load4,5,6, to planning7,8,9, real-time monitoring10,11,12, control13,14 and protection15. Conversely, power systems are highly nonlinear dynamical systems with interesting physical phenomena over various time scales; indeed, we believe that the breadth of problems available in this domain can stimulate the development of new algorithms, tools, and techniques in ML.

In order to foster advances that are mutually beneficial to both the ML and power system communities, it is necessary to develop well-documented and calibrated open-source datasets and use cases that are relevant to real-world power engineering problems, while simultaneously being accessible and usable to ML researchers with limited backgrounds in power/energy systems. There have been attempts at developing ML benchmarks for various power system tasks such as renewable16,17 and load forecasting18,19,20, and fault and anomaly detection21,22,23,24. Other researchers have attempted to accelerate algorithm development by providing online simulation platforms for specific tasks, such as the L2RPN competition25,26 and the oscillation source location contest27.

However, the development of a cross time-and-spatial scale, open-source dataset from the power engineering domain that can be utilized by the broader ML community is still at a nascent stage, with several gaps in existing sources. Firstly, most benchmarks for ML in power systems employ datasets that are either scattered across multiple independent system operators, as in the case of load and renewable data, or not publicly available, as in the case of dynamic data. Secondly, the identification of relevant problems, dataset generation, and implementation of dedicated ML-based algorithms, all require deep knowledge of the power engineering domain and diverse power system simulation tools. This lack of coherent comprehensive datasets along with well-defined tasks is the key barrier for ML communities to contribute to power system problems. Finally, there is a lack of consistent domain-relevant assessment metrics against which different ML algorithms can be compared.

In this paper, we bridge this gap by creating a comprehensive open-source dataset along with associated use cases and benchmarks that are relevant to the power system research community. The dataset contains minute-level real-world load, weather and renewable time series data over 3 years from 66 areas across the U.S., minute-level synchrophasor measurements of 1 year in 3 scenarios, and millisecond-level synchrophasor measurements in more than 1000 disturbance cases. This is synthesized from a joint transmission (bulk) and distribution (retail) electric grid that contains a rich and diverse set of energy resources and dynamic events. This dataset is self-contained and coherent across transmission and distribution-level dynamics at multiple time-scales, making it ideally suited for developing multi-scale ML-based algorithms. We then benchmark the performance of both traditional algorithms from the power engineering domain and common ML-based algorithms for three tasks of critical importance to the power engineering community, namely forecasting, monitoring, and simulating. Specifically, we consider the following use cases: (i) early detection, accurate classification and localization of dynamic disturbance events; (ii) robust hierarchical forecasting of load and renewable energy; and (iii) realistic synthetic generation of physical-law-constrained measurement time series.

In summary, we develop one of the first comprehensive open-source datasets with associated use cases and benchmarks from the power systems domain that can be leveraged by ML researchers interested in advancing the state-of-the-art in time series forecasting, classification, and generation, while contributing towards future zero-carbon energy systems. The full dataset and benchmark codes can be downloaded from GitHub28 and Zenodo29.

Methods

In this section, we describe the method used to create the multi-scale time-series dataset along with the benchmark models, which includes co-simulation model development, data generation methods, and benchmark algorithms for key tasks. A brief workflow overview is shown in Fig. 1, including (i) load and renewable data collection and generation, (ii) power, voltage and current data generation, and (iii) machine learning benchmarks for key tasks. The process starts with collecting the real-world weather and load time series data. We then generate the solar and wind generation profiles based on the physical renewable generation models given the corresponding weather data. To obtain the multi-scale measurement data, we conduct steady-state power flow simulation under different system conditions of load and renewable generation and perform transient dynamic simulation under various random disturbances by a novel joint transmission and distribution (T + D) grid simulation platform. We then benchmark the performance of traditional algorithms from the power engineering domain and common ML-based algorithms for selected key tasks of interests. Details about the methods for each step are elaborated in the rest of this section. Details about the source code and method implementations are explained in the Code availability section.

Fig. 1
figure 1

Conceptual block diagram of the data flow of the transmission + distribution co-simulation platform used to create PSML. While the simulation is a closely integrated process that combines all types of input data, results with different time-scales are generated at different simulation stages.

Remark: The voltage and current measurement time series are simulation data. The reason that we include simulation data in the PSML dataset consists of three aspects. First, real operational data of the power grid are typically confidential and most are forbidden to be publicly shared, due to policies such as critical energy/electric infrastructure information (CEII). Second, some high-impact events that are challenging for analysis, such as forced oscillations under resonance conditions, are rarely observed in real-world operational data. Considering such a small amount of challenging events is insufficient for the training, testing, and validation of ML algorithms. Third, while real measurement data can reflect the impact of a small amount of renewable energy in today’s power systems, it cannot capture the dynamics of the future grid with deep renewable penetration.

Co-simulation model development

We create a joint T + D grid simulation platform that consists of one PSS/E 23-bus transmission system30 and two IEEE 13-bus distribution systems31 as shown in Fig. 2a. The model of the bulk transmission grid is implemented by PSS/E, modified from the original PSS/E 23 bus test system that has 6 thermal generators and 7 load buses. We replace one thermal generator with a wind turbine model to represent renewable-rich scenarios. We also connect two load buses to the distribution grid distribution systems while keeping the rest of the load buses connected to lumped load. To better comply with the ratings and size of the benchmark distribution systems, all load capacities are reduced by roughly 40% of their original values. The model of the distribution grids is the IEEE 13-bus feeder31 implemented by OpenDSS, which are connected to the corresponding load buses in the transmission system model. In each distribution grid, we respectively attach solar photovoltaic (PV) and power inverter models to load buses, which represents aggregated residential roof-top solar generation.

As OpenDSS has no template of solar generation dynamic models, we build an inverter-interfaced solar PV dynamic model in Python scripts that can be used as a customized dynamic model compatible with OpenDSS. Following the literature32, the model consists of several typical controller components as shown in Fig. 2b and the dynamics are summarized as follows. The dynamics of the power calculator follows Eqs. 1 and 2, where io and vo are instantaneous current and voltage at the terminal of the output filter, P and Q are the active and reactive output power, ωc is the upper frequency of the low-pass output filter, and iod, ioq, vod, and voq are respectively the direct and quadrature components of io and vo. The dynamics of the frequency droop controller follows Eqs. 35, where ω0 is the nominal frequency, P*, Q* and E* are the dispatched set points of the active power, reactive power and potential, \({v}_{{\rm{d}}}^{* }\) and \({v}_{{\rm{q}}}^{* }\) is the set point of the subsequent voltage controller, and Mf, Df, Mv and Dv are the predefined parameters of the controller. Specifically, Eqs. 3 and 4 describe the dynamics mimicing traditional synchronous generators while Eq. 5 describe the way how the droop controller adapts the set point of the subsequent voltage controller. The dynamics of the voltage and current controller is elaborated by Eqs. 611, where ξd and ξq are the state variables of the current controller, \({i}_{{\rm{ld}}}^{\ast }\) and \({i}_{{\rm{lq}}}^{\ast }\) are the set points of the current controller, \({v}_{{\rm{id}}}^{* }\) and \({v}_{{\rm{iq}}}^{* }\) are the set points of the inverter, Kiv, F and Kpv are the predefined parameters of the voltage controller, Kic and Kpc are the predefined parameters of the current controller, and Cf and Lf are the capacitance and inductance of the output filter. The dynamics of the output filter can be described by Eqs. 1215, where rf, Cf and Lf are the resistance, capacitance and inductance of the output filter Fig. 2.

$$\mathop{P}\limits^{.}=-{\omega }_{{\rm{c}}}P+{\omega }_{{\rm{c}}}\left({v}_{{\rm{od}}}{i}_{{\rm{od}}}+{v}_{{\rm{oq}}}{i}_{{\rm{oq}}}\right)$$
(1)
$$\mathop{Q}\limits^{.}=-{\omega }_{{\rm{c}}}P+{\omega }_{{\rm{c}}}\left({v}_{{\rm{od}}}{i}_{{\rm{od}}}+{v}_{{\rm{oq}}}{i}_{{\rm{oq}}}\right)$$
(2)
$$\mathop{\delta }\limits^{.}=\omega -{\omega }_{0}$$
(3)
$${M}_{{\rm{f}}}\mathop{\omega }\limits^{.}=-{D}_{{\rm{f}}}(\omega -{\omega }_{0})+{P}^{* }-P$$
(4)
$${M}_{v}{\mathop{v}\limits^{.}}_{od}^{* }={D}_{v}\left({Q}^{* }-Q\right)-\left({v}_{od}^{* }-{E}^{* }\right),\;\;{v}_{oq}^{* }=0$$
(5)
$${\mathop{\xi }\limits^{.}}_{{\rm{d}}}={v}_{{\rm{od}}}^{* }-{v}_{{\rm{od}}},\;\;{\mathop{\xi }\limits^{.}}_{{\rm{q}}}={v}_{{\rm{oq}}}^{* }-{v}_{{\rm{oq}}}$$
(6)
$${\mathop{\psi }\limits^{.}}_{{\rm{d}}}={i}_{{\rm{ld}}}^{* }-{i}_{{\rm{ld}}},\;\;{\mathop{\psi }\limits^{.}}_{{\rm{q}}}={i}_{{\rm{lq}}}^{* }-{i}_{{\rm{lq}}}$$
(7)
$${i}_{{\rm{ld}}}^{* }={K}_{{\rm{iv}}}{\xi }_{{\rm{d}}}+F{i}_{{\rm{od}}}+{K}_{{\rm{pv}}}({v}_{{\rm{od}}}^{* }-{v}_{{\rm{od}}})-{\omega }_{0}{C}_{{\rm{f}}}\,f{v}_{{\rm{oq}}}$$
(8)
$${i}_{{\rm{lq}}}^{* }={K}_{{\rm{iv}}}{\xi }_{{\rm{q}}}+F{i}_{{\rm{oq}}}+{K}_{{\rm{pv}}}\left({v}_{{\rm{oq}}}^{* }-{v}_{{\rm{oq}}}\right)-{\omega }_{0}{C}_{{\rm{f}}}\,f{v}_{{\rm{od}}}$$
(9)
$${v}_{{\rm{id}}}^{* }={K}_{{\rm{ic}}}{\psi }_{{\rm{d}}}+{K}_{{\rm{pc}}}({i}_{{\rm{ld}}}^{* }-{i}_{{\rm{ld}}})-{\omega }_{0}{L}_{{\rm{f}}}{i}_{{\rm{lq}}}$$
(10)
$${v}_{{\rm{iq}}}^{* }={K}_{{\rm{ic}}}{\psi }_{{\rm{q}}}+{K}_{{\rm{pc}}}\left({i}_{{\rm{lq}}}^{* }-{i}_{{\rm{lq}}}\right)-{\omega }_{0}{L}_{{\rm{f}}}{i}_{{\rm{ld}}}$$
(11)
$${L}_{{\rm{f}}}{\mathop{i}\limits^{.}}_{{\rm{ld}}}=-{r}_{{\rm{f}}}{i}_{{\rm{ld}}}+\omega {L}_{{\rm{f}}}{i}_{{\rm{lq}}}+{v}_{{\rm{id}}}-{v}_{{\rm{od}}}$$
(12)
$${L}_{{\rm{f}}}{\mathop{i}\limits^{.}}_{{\rm{lq}}}=-{r}_{{\rm{f}}}{i}_{{\rm{lq}}}+\omega {L}_{{\rm{f}}}{i}_{{\rm{ld}}}+{v}_{{\rm{iq}}}-{v}_{{\rm{oq}}}$$
(13)
$${C}_{{\rm{f}}}{\mathop{v}\limits^{.}}_{{\rm{od}}}=\omega {C}_{{\rm{f}}}{v}_{{\rm{oq}}}+{i}_{{\rm{ld}}}-{i}_{{\rm{od}}}$$
(14)
$${C}_{{\rm{f}}}{\mathop{v}\limits^{.}}_{{\rm{oq}}}=\omega {C}_{{\rm{f}}}{v}_{{\rm{od}}}+{i}_{{\rm{lq}}}-{i}_{{\rm{oq}}}$$
(15)
Fig. 2
figure 2

Diagram of the join transmission and distribution (T + D) simulation model. (a) One PSS/E 23-bus system and two IEEE 13-bus systems implement the co-simulation by exchanging the real-time voltage and power information, which are respectively simulated by the PSS/E and OpenDSS. (b) Details of the inverter-based solar PV dynamic model in the distribution system.

To implement the T + D co-simulation, we further create a Python control process to facilitate workflow coordination and data exchange between PSS/E, OpenDSS, PV inverter models and input data files. Specifically, the python control process is able to (i) start and pause the simulation in the PSS/E and OpenDSS every step, (ii) read and store the updated variables of the transmission and distribution grid models after each step, and (iii) overwrite the values of certain variables at the beginning of each step. In such way, we can exchange the voltage and power data between the transmission and distribution systems step by step that enables the T+D co-simulation. Please refer to the Code availability section for the details about the source code and method implementations.

Data generation

This subsection introduces the methods how we collect the real-world data and generate the measurement data via co-simulation. The source code of the data collection and simulation implementation can be found in the Github repository as elaborated in the Code availability section.

Load and renewable time series data generation

We collect real-world load time series and synthesize active power time series of renewable generation along with real-world weather data. For collecting the load power time series, we aggregate hourly real-world load data of representative 66 load zones ranging from 2018 to 2020, obtained from major power markets in the U.S. that regulate about 70% of U.S. electricity sales33. To incorporate renewable power and weather time series in PSML, we collect real weather data of 5-minute resolution of each load zone from 2018 to 2020 from National Solar Radiation Database (NSRDB)34. The selected weather station of each load zone locates around major cities within range. We calculate the renewable generation power based on the collected weather data of each load zone. The active power output of residential solar photovoltaic (PV) is estimated by the System Advisor Model (SAM)35, based on the solar radiation-related data. The active power output of wind turbines is estimated by the location-dependent wind turbine power curves36 based on the collected wind-related data. Finally, we aggregate time-stamped load, renewable and weather data of 66 load zones by interpolation in the PSML dataset. For the convenience of subsequent simulation, the load data are further normalized by their 3-year average value, while the renewable data are normalized by the nominal power values of the physical renewable models.

Minute-level voltage, current and power time series

The steady-state simulation produces minute-level data of the power transmission and distribution system using the load and renewable profiles. These profiles specifies the net real and reactive power consumption across the system except the buses where dispatch-able thermal generators are located. To keep the system frequency stable, the total real power generation from the thermal generators must be exactly the same as the total net real power consumption. Hence, the real power set-point of all generators are determined by their capacity limits and load level. A power-flow solution is performed to obtain the voltage of nodes and current of branches by solving a set of circuit theory derived algebraic equations (power flow equations) of the network model. The solution of the algebraic equations is determined by loads, renewable generation and thermal generation.

In our data generation procedure, we implement an iterative approach to create an uniform power-flow solution across the transmission system and multiple distribution systems. Each distribution system is represented as an equivalent load bus whose load value equals the sum of all nodes in the distribution system. We start with flat voltage level of 1.0 per-unit across the entire transmission system, change the loads and generator set-points according to the time-series data and solve standard power flow to obtain the voltage at the buses that has distribution system models. The voltage solutions are passed to each distribution system model as the voltage of the equivalent infinite source representing the transmission system. The distribution systems are then solved using the ‘actual’ voltage to obtain updated values of the real and reactive power consumption, as the load power consumption are related to the system voltage. The total powers of distribution systems are then passed back to the transmission system model and are used to update the power flow solution. This process is repeated until the voltage difference between two iterations converges to be less than a very small tolerance factor. The detailed simulation procedure is listed in Algorithm 1 and the source code of our implementation using PSS/E and OpenDSS can be found in our GitHub repository.

Algorithm 1

Iterative Steady-State Power Flow Method for T+D Joint Simulation.

Millisecond-level voltage, current and power time series

In power systems there are many disturbances with different extent of types and severity, common ones include faults (short circuit between conductors or with the ground), unexpected equipment tripping and forced oscillation. These disturbances must be detected and handled as quickly as possible, or they may cause cascading failures and the damage can be out of control. Specifically, disturbances must be cleared within the Critical Clearing Time (CCT), usually at the order of 100 ms, after which the larger system will become unstable. Before the occurrence of a disturbance, the power system, at a larger time-scale, is assumed to be operating around a stable equilibrium point that is determined by the steady-state power flow solution related to generation and demand profiles. The initial conditions of dynamic components, including generators, wind turbines, solar PV systems and their many control devices, are determined by continuing random variations of the generation and demand capacity. During disturbances, the dynamics of the grid can be described by differential algebraic equations (DAEs). A transient simulation is essentially the process of solving those DAEs and obtaining timeseries of voltages, currents frequencies and other state variables. Figure 1 encapsulates the simulation mechanism, and Fig. 3 illustrates several typical events of interested in co-simulation.

Fig. 3
figure 3

Visualization of different types of disturbances in the PSS/E 23-bus transmission system that induce the transient millisecond-level voltage, current and power measurements.

The approach to perform T + D co-simulation for transient events use a similar iterative algorithm to ensure that the data obtained from different systems and simulators are closely correlated with each other. The iteration process of exchanging voltage and power data between the bulk transmission system model and distribution system models is repeated for every time step in transient simulation. Beside the power system circuit and component models in PSS/E and OpenDSS, interver-interfaced solar PV dynamic models are implemented in Python and run separately. The simulation model developed for generating synthetic time series in PSML possesses the following features to obtain high-fidelity data: (i) The dynamic model of both the transmission and distribution systems are benchmark systems which are extensively used in power system research; (ii) we model the impact of deep penetration of renewables by incorporating detailed models of renewable generation and representative load and weather patterns in the U.S.; and (iii) the interaction between the transmission and the distribution systems in the fast time scale is modeled in the transient simulation, which is not captured in existing publicly available synthetic datasets, e.g., the oscillation dataset27.

Algorithm 2

Transient Event Simulation Method for T+D Joint Simulation.

Machine learning benchmarks

In this subsection, we select three types of grid-domain use cases for ML approaches. The use cases are (i) event detection, classification and localization, (ii) forecasting of renewable generation and load; and (iii) synthetic synchrophasor data generation. The reason that these use cases are selected is that they essentially can be formulated as classical ML problems which have been extensively studied during the past half-century. As a result, methods developed in the ML communities have great potential to provide solutions to these power grid use cases. Compared with conventional approaches heavily relying on grid physical models and network topology (line connectivity), such as the line outage detection algorithm37, and the energy approach to forced oscillation localization38, one attractive advantage of the ML-based approaches is that they do not require availability of information on grid physical model and topology. In addition, the sparsity, size, and scale of these time-series measurements provide a unique playground for the advancement of new ML methods. In what follows, we introduce the goal of each use case and present the benchmark of the performance of popular learning methods in terms of solving these three types of power system problems. We refer readers to our Github repository for more details on data structure and instructions on use cases.

Event detection, classification and localization

Renewable energy resources, such as wind/solar farms, are not as dispatchable as conventional fossil fuel generators due to their stochastic nature. As a result, those renewables introduce uncertain disturbances which may compromise the safe operation of the grid. Therefore, it is imperative for Independent System Operators (ISOs) to accurately recognize disturbances and perform corrective measures timely so as to ensure the safety of the grid. The health of the power grid is monitored by sensors such as synchrophasors/phasor measurement units (PMUs). These sensors stream time-stamped measurements to ISOs. Based on these streaming measurements, ISOs may have the following three questions: (i) When is an event happening; (ii) What type of event is happening? and (iii) Where is the source that caused the event? Answering these questions is critical to maintaining reliable operation of a power grid integrated with rich renewable energy resources.

The streaming measurements can be denoted by \(X\in {{\mathbb{R}}}^{T\times M}\), where T is the number of time stamps by now and M is the number of measurements. Event detection aims to answer the first ISO question by recognizing the disturbance occurrence once it takes place, hence a model \({\mathscr{H}}\) is learned to be able to identify the disturbance occurrence given sequence X, i.e., \({\mathscr{H}}:X\to \{0,1\}\). Suppose the event takes place at time τ: when T<τ, the model is expected to be quiet without any alarms (0 predicted); when T ≥ τ, the model should alarm as soon as possible (1 predicted). Event classification answers the second ISO question based on streaming sensor measurements. Given the measurement X, the objective of this task is to learn a model \({\mathscr{F}}\) that can classify the underlying event type y, i.e., \({\mathscr{F}}\): Xy. In PSML, y is a subset of disturbances \({\mathscr{C}}\) where \({\mathscr{C}}\) := {branch fault, branch tripping, bus fault, bus tripping, generator tripping, forced oscillation}. Event localization focuses on locating events (for branch fault, branch tripping, bus fault, bus tripping, generator tripping) or the root cause of events (for forced oscillations) by observing measurements. We are aimed at learning a model \({\mathscr{G}}\) that can map measurement X to the bus(es) z nearest to the events detected or the root cause of the events, i.e., \({\mathscr{G}}:X\to z\), where z is a subset of buses Z in the entire system. It is worth noting that compared with the size of the whole grid, the sensor coverage might be sparse in practice, rendering the tasks of event detection, classification and localization more challenging.

We select the following representative benchmark algorithms for this task. We implement InceptionTime, MC-DCNN and ResNet (with the help of sktime-dl39 package), and MLSTM-FCN40 in Tensorflow. We implemented all other methods by ourselves in Pytorch except TapNet41 and MiniRocket42. For deep learning approaches, we use grid search to select general hyperparameters such as layer size, number of layers, normalization approach, etc.

  • Power domain: Event localization is implemented by calculating the event signature of each PMU, where the event signature is estimated by several statistical parameters including Shannon entropy, standard deviation, range, mean difference and crest factor as introduced in the literature43. The PMU with the most dominant event signature indicates the location of the event.

  • Traditional machine learning methods: with generally good performance across different time series datasets, 1-nearest neighbor (1-NN) related approaches have been widely employed as standard benchmarks in the their corresponding benchmarks, e.g., UCR44 and UEA45. We consider three measures for sample distance computation: Euclidean and dynamic time warping with each feature dimension treated independently (DTW-i) or dependently (DTW-d). We also adopt MiniRocket, where kernel transformations are firstly applied to time series followed by simple linear classifiers for time series classification42.

  • Convolutional Neural Networks: benefiting from the deep convolutional neural networks (CNNs) and residual connections, vanilla and different variants of CNNs are consider to perform classification tasks: (i) InceptionTime46: an ensemble of deep CNNs inspired by Inception-v447 architecture; (ii) MLSTM-FCN40: concatenation of LSTM of CNN for feature representation learning with an additional squeeze-and-excitation block for further performance improvement; (iii) ResNet48: adaptation of residual network from images49 to multivariate time series; (iv) MC-DCNN50: multi-channels deep CNNs where different temporal patterns are transformed firstly and then learned through separate convolutional layers; and (v) TapNet41: an attentional prototype network was incorporated into the convolutional layers to learn latent features for time series classification.

  • Other deep learning methods: we also analyze the performance of general deep neural networks (i.e., fully-connected neural network) and specific time series deep models (i.e., RNN and its two variants51,52, transformer53) is evaluated.

For the training process, we randomly select 439 time-series from the millisecond transient PMU data as training samples and the remaining 110 time-series for testing. Each sequence has a metadata associated with the event type similar to the classification use case, i.e. branch_fault, branch_trip, bus_fault, bus_trip, gen_trip. Each time-series has a sequence length of 960 observations, representing 4 seconds in the system recorded at 240 Hz. There are 91 dimensions for each time-series, including voltage, current and power measurements across the transmission system. In the test process, with class imbalance in consideration, we adopt balanced accuracy to obtain performance of different classification methods for event classification and localization: balanced_acc = (sensitivity + specificity)/2. Since both too early (false positive where no event happens yet) or too late (false negative where damage/cost accumulates along time without alarm or action) event detection are undesired, we leverage the macro-averaged mean absolute error, which considers the divergence between actual and predicted labels for ordinal regression on imbalanced datasets54.

Load and renewable energy forecasting

The ultimate goal of the power grid is to balance generation and load. Today, this is mostly achieved by load forecasting and generation scheduling based on the forecast before real-time operation. In real-time operation, the relatively small mismatch between scheduled generation and actual load is compensated by dispatchable generation units that can respond quickly, i.e., the spinning reserve. The spinning reserve may rely on fossil fuel and incur high operational costs. However, with increasing renewable integration, this operational paradigm is not feasible without accurate renewable and load forecasting. Renewable generations, e.g., wind/solar farms, have their maximum output apparent power determined by weather, which cannot be actively increased (but can be curtailed), due to their stochastic and volatile nature. A poor forecast of renewable generation therefore leads to a large amount of expensive, fossil fuel-based spinning reserve being committed. Compounding the challenge, loads will become less predictable in the future grid, due stochastic loads like electric vehicles, and small-probability yet high-impact events, e.g., COVID-19 pandemic (Fig. 4) and the Texas winter storm in 2021. Therefore, accurate forecasting of renewable generation and load is critical to support reliable operation of the future grid.

Fig. 4
figure 4

Illustration of daily load, solar and wind power profiles with 1-minute resolution sampled in Houston, capturing seasonal disparity, strong variation of renewables, and unprecedented load drop during pandemic. The solid lines represent the average and shaded areas represent standard deviation.

We focus on the following two important subtasks: (i) Point Forecast (PF): given a time sequence in the past k time steps, the current time t and the forecasting horizon τ, we have the past targets \({y}_{t-k:t}\), the past observations \({x}_{t-k:t}\), as well as the past, current and future known variables \({u}_{t-k:t+\tau }\) (e.g., date, holiday). We aim to predict the targets τ time steps ahead: \({\widehat{y}}_{t+\tau }=r\left({y}_{t-k:t},{x}_{t-k:t},{u}_{t-k:t+\tau }\right)\). (ii) Prediction Interval (PI): Uncertainty quantification can provide more reference information for decision-making and has received growing research and industrial interests these years55,56. For high-quality uncertainty quantification, we would also like to obtain the prediction interval, \([{\widehat{y}}^{L},{\widehat{y}}^{H}]\), to cover the ground truth y with at least the expected tolerance probability, i.e., p = 0.95 in our load and renewable energy forecasting task.

We select the following representative benchmark algorithms for this task. We implement the time-series models with statsmodels57, the traditional machine learning models with sklearn58, N-BEATS59, WaveNet60, TCN61, LSTNet62, DeepAR63, Informer64 and Neural ODE65 with codes published officially (or unofficially), and all other deep learning approaches by ourselves in Pytorch. For deep learning approaches, we use grid search to select general hyperparameters such as layer size, number of layers, normalization approach, etc.

  • Time-series models: besides the naive method takes the current value directly as the prediction, we also consider autoregressive integrated moving average (ARIMA) and exponential smoothing (ETS).

  • Traditional machine learning methods: we select the top four widely used machine learning methods in load and renewable energy forecasting literature66: support vector regression (SVR), random forest (RF), gradient boosted decision trees (GBDT), and linear regression (LR).

  • Multilayer perceptron: besides fully-connected neural newotks (FNN) and extreme learning machines (ELM), we also list performance of N-BEATS, a deep stacked neural architecture based on backward and forward residual links, which outperformed the winner of M4 competition59.

  • Convolutional Neural Networks: we study performance of vanilla CNN, WaveNet60 composed of dilated causal convolutions for audio generation, Temporal convolutional neural networks (TCN67) with additional residual blocks.

  • Recurrent Neural Networks: both basic recurrent neural networks (vanilla RNN, LSTM51 and GRU52) and advanced variants are studied: LSTNet62 with patterns extracted from convolutional layers and fed to recurrent neural networks, DeepAR63 with output from recurrent neural networks as likelihood parameters for probabilistic forecasting.

  • Transformer-based: we list performance from vanilla transformer53 and its variant, informer64, with self-attention distilling and generative style decoder for long sequence forecasting.

  • Neural ODE: motivated by the Euler discretization of continuous transformations in residual networks and recurrent neural network decoders, Neural ODEs parameterize the derivative of hidden state using a neural network and compute the network output with a differential equation solver65

Given load and renewable energy data recorded from 66 locations in minute-level, we split the sequence from each location according to years firstly and have three cases: (i) use data from Jan to Nov in 2018 for training and Dec in 2018 for testing; (ii) use data from Jan, 2018 to Nov, 2019 for training and Dec in 2019 for testing; (iii) use data from Jan, 2019 to Nov, 2020 for training and Dec in 2020 for testing. Noted that we adopt the rolling strategy during testing, so that testing data before current time step is observable for model forecasting. In the test process, we adopt three commonly leveraged metrics in load and renewable energy forecasting literature66: root mean square error (RMSE), mean absolute error (MAE) and mean absolute percentage error (MAPE). Following practice in the M4 competition56, the performance of generated point intervals is evaluated using the mean interval score (MIS)68:

$${\rm{MIS}}=\frac{1}{N}\mathop{\sum }\limits_{i=1}^{N}\left({\widehat{y}}_{i}^{u}-{\widehat{y}}_{i}^{l}\right)+\frac{2}{a}\left({\widehat{y}}_{i}^{l}-{{\rm{y}}}_{i}\right){\mathscr{I}}\left({y}_{i} < {\widehat{y}}_{i}^{l}\right)+\frac{2}{a}\left({y}_{i}-{\widehat{y}}_{i}^{u}\right){\mathscr{I}}\left({y}_{i} > {\widehat{y}}_{i}^{u}\right)$$
(16)

where N is the number of instances for each prediction horizon, \({\mathscr{I}}\) is the indicator function with value 1 when the inequality holds and 0 otherwise, and a = 0.05 for 95% prediction intervals generation.

Synthetic time-series generation

A major hurdle in applying deep learning models to power system problems is usually the lack of sufficient and high-quality datasets for training, as it is well-known that more eventful data usually lead to better classification performance69,70,71. The accessibility of real-world power grid PMU measurement data is limited due to the regulation CEII72 for national security and sensitivity concerns. While researchers recently have contributed to the creation of large-scale synthetic simulation models73 for analysis74,75, there are always gaps between simulation models and real-world systems and the unique values of real-world PMU time series data cannot be exploited for research purposes. It is therefore critical to investigating methods for synthesizing power system datasets that follow the same properties of the real system data while complying with physical laws for the network and its underlying dynamic behaviors.

This task involves multi-channel time series generation, for which the training data are disturbance-induced dynamic voltage, current and power measurements across power grids. The expected outputs are dynamic voltage, current and power measurements that preserve certain dynamic patterns and physical laws. The key challenges that distinguish this task from normal image generation are: (i) multi-channel time series are governed by unknown algebraic and differential equations derived from physical laws, and (ii) dynamic time series incorporate discrete disturbance events. Our evaluations are carried out over simulated voltage, current and power data from PSML.

We select the following representative benchmark algorithms for this task. All models are trained with a fixed hidden dimensionality of 256, a fixed number of two or three layers for recurrent networks, and a tuned dropout ratio {0.0, 0.5}.

  • NaiveWGAN: we show the performance of a naive GAN architecture (MLP generator and discriminator) with the Wasserstein loss76.

  • RCGAN: a conditional recurrent GAN architecture77 is tested that leverage recurrent generator and discriminator and conditioned on auxiliary information.

  • COT-GAN: we test a recurrent GAN trained with a Causal Optimal Transport (COT) loss suitable for learning time dependent data distributions78.

  • TimeGAN: we list the performance of a recurrent GAN architecture that combines unsupervised GAN learning with a supervised teacher-forcing component in the loss function79.

  • DoppelGANger: we test a state-of-the-art GAN architecture80 that leverages two generators and discriminators to first generate auxiliary metadata before generating the time-series.

For training and testing the models, we set the first 400 millisecond transient time-series as training samples and the next 150 time-series for testing, where each time-series has a sequence length of 960 observations, representing 4 seconds in the system recorded at 240 Hz, and has 91 dimensions. As the task is to synthesize multiple realistic-looking PMU streams that respect the physical constraints from real PMU streams, we define the following metrics to assess the quality of generated data: (i) Fidelity: samples should be indistinguishable from the real data. We train a post-hoc time-series classification model (by optimizing a 2-layer LSTM) to distinguish between sequences from the original and generated datasets and report the error, and (ii) Diversity: samples should be distributed to cover the real data. We apply PCA analyses on both the original and synthetic datasets (flattening the temporal dimension) and visualize how closely the distributions are in 2D space.

Data Records

The dataset is hosted on Zenodo29. The folders in the dataset are organized by data type, including minute-level load and renewable data, minute-level PMU measurements data, and millisecond-level PMU measurements data.

In the folder of the minute-level load and renewable data, we store the data in the CSV files by zonal location.

  • File ISO_zone_#.csv: for example, CAISO_zone_1.csv is a CSV file containing munute-level laod, renewable and weather data from 2018 to 2020 in the zone 1 of CAISO.

    • Field time: time of minute resolution.

    • Field load_power: time of minute resolution.

    • Field wind_power: time of minute resolution.

    • Field solar_power: time of minute resolution.

    • Field DHI: diffuse horizontal irradiance.

    • Field DNI: direct normal irradiance.

    • Field GHI: global horizontal irradiance.

    • Field Dew Point: dew point in degree Celsius.

    • Field Solar Zeinth Angle: angle in degree between the sun’s rays and the vertical direction.

    • Field Wind Speed: wind speed in meter per second.

    • Field Relative Humidity: relative humidity in percentage.

    • Field Temperature: temperature in degree Celsius.

    In the folder of the minute-level PMU measurements data, we store the data in the subfolders by scenario setting. Each subfolders contains a TXT file and a CSV file that respectively store the metadata and simulation measurements data.

  • Folder case #: for example, case 0 is a folder corresponding to the scenario setting #0.

    • File pf_input_#.txt: the TXT file contains the metadata of the selected load and renewable data for the simulation.

    • File pf_result_#.csv: the CSV file contains the voltage at buses and power on branches in the transmission system via T + D simulation.

      • Field time: time of minute resolution.

      • Field Vm_#: voltage magnitude in per unit at the bus #.

      • Field Va_#: voltage angle in rad at the bus #.

      • Field P_#_#_#: for example, P_3_4_1 means the active power in the #1 branch from the bus 3 to 4.

      • Field Q_#_#_#: for example, Q_5_20_1 means the reactive power in the #1 branch from the bus 5 to 20.

    In the folder of the millisecond-level PMU measurements data, we seperate the data into two folders by oscillation type, namely forced oscillation and natural oscillation. In each folder, the data are organized in the following way.

  • Folder row_#: for example, row_0 is a folder corresponding to the disturbance scenario #0.

    • File dist.csv: the CSV file contains the three-phased voltage at nodes in the distribution system.

      • Field Time(s): time of millisecond resolution.

      • Field #.#.#: for example, 3005.633.1 means the per-unit voltage magnitude of the phase A at the bus 633 of the distribution grid, the one connecting to the bus 3005 in the transmission system.

    • File trans.csv: the CSV file contains the voltage at buses and power on branches in the transmission system.

      • Field Time(s): time of millisecond resolution.

      • Field VOLT #: voltage magnitude in per unit at the bus #.

      • Field POWR # TO # CKT #: for example, POWR 151 TO 152 CKT ‘1’ means the active power transferring in the #1 branch from the bus 151 to 152.

      • Field VARS # TO # CKT #: for example, VARS 151 TO 152 CKT ‘1’ means the reactive power transferring in the #1 branch from the bus 151 to 152.

    Besides, the algorithm codes are available on Github28. In the folder Code, we organize the codes for algorithm reproduction as follows. Please refer to the Usage Notes for the details of installation, package usage and navigation.

    • File dataloader.py: Pytorch data loaders with both data processing and splitting included.

    • File evaluator.py: evaluators to support fair comparison among different approaches.

    • Folder BenchmarkModel:

      • Folder EventClassification: the folder contains all files for the event classification task.

        • Folder configs: the folder contains all trained model configurations (YAML files).

          • File #.yaml: for example, RNN.yaml stores the model parameters of the RNN model.

        • Folder models: the folder contains all model codes (PY files).

          • File #.py: for example, RNN.py implements the RNN model.

        • File evaluating.py: codes to evaluate the trained benchmark models for event classification.

        • File processing.py: codes to process the millisecond-level measurements data.

        • File requirements.txt: the required Python packages for model use.

      • Folder LoadForecasting: the folder contains all files for the forecasting task.

      • Folder configs: the folder contains all trained model configurations (YAML files).

        • File #.yaml: for example, FNN.yaml stores the model parameters of the FNN model.

      • Folder models: the folder contains all model codes (PY files).

        • File #.py: for example, FNN.py implements the FNN model.

      • File evaluating.py: the codes to evaluate the trained banchmark models for forecasting.

      • File processing.py: the codes to process the minute-level load and renewable data.

      • File requirements.txt: the required Python packages for model use.

      • Folder SyntheticDataGeneration: the folder contains all files for the synthetic data generation task.

      • Folder ##: for example, RGAN contains all files for the RGAN model.

        • File requirements.txt: the required Python packages for model use.

        • Other files: other files contained in the folder depends on the model, of which the usage are instructed in the README file.

      • File evaluating.py: the codes to evaluate the trained banchmark models for forecasting.

      • File processing.py: the codes to process the minute-level load and renewable data.

Technical Validation

Dataset explorations

Load and renewable time series

The zonal load and weather data are collected from multiple real-world sources, of which the fidelity is guaranteed by manual data quality control. The associated physical models for renewable estimation are commonly used in the power system. We illustrate daily load and renewable power profiles in Fig. 4, which shows seasonal disparity and strong variation of renewable energy. We can also observe a significant load reduction during the COVID-19 pandemic, which is valuable for investigating the impacts of unprecedented events on the energy sector.

Minute-level voltage, current and power time series

To demonstrate the data fidelity, we illustrate the power spectral density analysis that quantifies the periodicity on one selected 1-year-long minute-level synthetic PMU measurement data. Specifically, we calculate the power spectral density of the voltage angle at each transmission system bus. Figure 5 shows the average power spectral density, where the highest power density appear at the period of 12 hours, 24 hours and 1 week. It is consistent with our prior observation in other real-world PMU dataset that the major periodic patterns are derived from the loads that mainly possess periods of 12 hours, 24 hours and 1 week.

Fig. 5
figure 5

Power spectral density of minute-level PMU measurements of 1 year. It demonstrates the data fidelity by the high power density at the periods of 12 hours, 24 hours and 1 week, which is consistent with our prior observations in other real-world PMU dataset.

Millisecond-level voltage, current and power time series

Figure 6 visualizes some typical events obtained from the co-simulation, compared with the profiles by traditional simulation. It shows that the co-simulation method reveals more details. We further perform modal analysis on the generated power time series to demonstrate the fidelity. We observe in Fig. 7 that the generated power time series data possess only few dominant modes of high energy, which match our prior knowledge.

Fig. 6
figure 6

Illustration of voltage magnitude time series of millisecond resolution in cases of different types of disturbances, where the black solid profiles are critical features captured by the novel T + D co-simulation, some of which are missed by the red dashed lines obtained conventional transmission system simulation alone.

Fig. 7
figure 7

Modal analysis of millisecond-level PMU measurements, showing limited number of dominant modes of high energy.

Machine learning benchmark evaluation

Event detection, classification and localization

As listed in Table 1, we evaluate methods from four main categories: (i) PMU score from the power community, (ii) standard classification benchmarks based on 1-nearest neighbor (1-NN), (iii) convolutional neural networks and (iv) other popular deep learning methods. For both event classification and detection, we observe in general that approaches composed of convolutional neural networks perform much better than 1-NN based standard benchmarks and other deep learning approaches. However, to localize the event across the grid, the majority of deep learning approaches fail to achieve competitive performance as 1-NN approaches: only MC-DCNN reaches above 0.40 balanced accuracy besides 1-NN Euclidean, 1-NN DTW-i and 1-NN DTW-d. In analyzing PMU measurements from the transmission system, we attribute the success of convolutional neural networks to their explicit spatial correlation modeling, where the voltage and current evolve along time according to both the external oscillation events and the inherent network connectivity.

Table 1 Classification performance on simulation measurements for event detection, classification and localization.

Based on the above observations, we expect more accurate classifications can be obtained by proposing more powerful deep learning methods from but not limited to the following directions. We hope that these interesting directions will motivate the ML community in addressing the challenging problems of event detection, classification and localization for dynamical systems that exhibit tight multi-scale spatio-temporal coupling.

  • Graph neural networks with both spatial and temporal dependencies: event localization is a great challenge when only temporal dependencies are modeled in deep learning approaches. Given bus locations and their connectivity, graph neural networks may be promising in modeling spatial dependencies and locating the actual event bus.

  • Incorporating contrastive learning into representation learning: by comparing two instances (\({x}_{i}\) and \({x}_{j}\)) rather than learning the mapping from X to y, 1-NN based approaches outperform deep learning approaches in event localization. Recently, representation learning based on comparing three instances (that is, one anchor, positive, and negative sample in triplet loss) or two instances (e.g., two similar samples by transformation or same annotated label in Siamese approaches) shows effectiveness in capturing underlying patterns and further benefits downstream tasks in domains like computer vision81, reinforcement learning82, etc.

Load and renewable energy forecasting

We list the performance of different forecasting methods on 1-hour ahead load forecasting in years from 2018 to 2020 in Table 2, while we list the performance on all the forecasting tasks on our Github. For short-term load forecasting, exponential smoothing outperforms the other benchmarks both in point forecast and prediction interval, while deep learning approaches fail to achieve competitive performance on par with time series models and traditional machine learning methods. Similar observations can be discovered in both short- and long-term forecasting of wind and solar. As visualized in Fig. 8, we can observe strong periodicity in both the observational features (such as wind speed, relative humidity, and temperature) as well as target features (such as solar power, wind power, and load) from the year 2018 to year 2020. However, deep learning approaches fail to capture such significant trends for accurate future forecasting due to their limited memorizing capabilities. For extremely long time series, it’s difficult to efficiently extract and leverage useful past time steps without tedious feature engineering83. Taking our forecasting task as an example: simply enlarging the scope of considered historical data to cover information from the previous 1440-th, 10,080-th, 43,200-th time step in our minute-level data for the reference of the same time in the last day, same weekday in the previous week, and same day in the previous month, is both time-consuming during processing crowded useless information and will deteriorate forecasting performance in the end.

Table 2 Performance on 1-hour-ahead load point forecast and interval prediction.
Fig. 8
figure 8

Visualization of feature trends in three years from one sampled location of the forecasting task.

Accordingly, we suggest the following directions for further exploration. We believe that this task can motivate the development of novel deep learning based forecasting algorithms that take into account long-term memory and exploit spatio-temporal patterns in the data.

  • Memory network to remember and utilize past history efficiently: approaches such as memory networks84 could be potential solutions to identify key information from long histories for real-time forecasting.

  • Cross-learning: using information from multiple series to predict individual ones has shown promising results in top approaches of past Kaggle competitions85. Taking into account load and renewable energy time series from other locations, such as nearby locations in the same time zone or with similar social and economic patterns, could potentially enhance forecasting accuracy.

Synthetic time-series generation

We observe that current SOTA time-series generation methods cannot properly capture the necessary characteristics from PMU data to generate realistic time-series. This is reflected in the fidelity metrics in Table 3, where a post-hoc 2-layer LSTM can easily separate real vs. generated samples. Time-GAN79 and COT-GAN78 are current SOTA methods published in NeurIPS 19 and 20 respectively and they both achieve relatively low auto-correlation and cross-correlation error compared to real data (Fig. 9a). In addition, we apply PCA analyses on both the original and synthetic datasets (flattening the temporal dimension) and visualize how closely the distributions are in 2D space (Fig. 9c). We observe that overall, the methods also fail to cover the underlying data distribution. DoppelGANger80 is the only method that can model metadata, i.e., fault type in this case, and can generate sensible results. However, it still struggles to learn the distribution of the metadata (Fig. 9b). One of the main challenges from this time-series dataset is its size (dimensionality and sequence lengths). Compared to the datasets from their original papers, fast-sampled PMU data from PSML nearly double or triple the number of observations at 960 observations with 91 channels for measurements including voltage magnitude, voltage phase angle, current magnitude, current phase angle, real power, reactive power, and frequency. Current generation approaches leveraging recurrent networks do a poor job of modelling the long-term temporal correlations seen in the data. For long time series, RNNs take many passes to generate the entire samples, which causes them to forget long temporal correlation. Besides, one particular challenge in the power grid data is that each dimension of the time series cannot be handled separately, since the whole system is governed by the Kirchhoff’s voltage and current laws at each snapshot. This provides an interesting direction for future generation work to address not only the scalability problem but also the constrained generation problem.

Table 3 Run-time and fidelity metrics on millisecond-level eventful PMU datasets.
Fig. 9
figure 9

Performance of generative methods. (a) Autocorrelation on PMU datasets for all generative methods. (b) Distribution of generated faults for DoppelGANger. (c) PCA coverage evaluation on millisecond-level eventful PMU datasets.

Usage Notes

The dataset and codes are licensed under the CC BY 4.0, meaning everyone can use it only for non-commercial research purpose. We recommend users to follow the guidance on Github28, including the details of installation, package usage, dataset navigation, and code navigation.