System
Originally Contributed by: Clayton Barrows
An example of how to parse add time series data to a System
using PowerSystems.jl
For example, a System
created by parsing a MATPOWER file
doesn't contain any time series data. So a user may want to add time series to the System
Let's use the 5-bus dataset we parsed in the MATPOWER example
using PowerSystems
using TimeSeries
using JSON3
base_dir = PowerSystems.download(PowerSystems.TestData; branch = "master");
sys = System(joinpath(base_dir, "matpower", "case5_re.m"))
sys
┌ Error: Generator voltage set-points for bus 3 are inconsistent. This can lead to unexpected results
└ @ PowerSystems ~/.julia/packages/PowerSystems/zVsmd/src/parsers/pm_io/matpower.jl:245
┌ Error: Generator voltage set-points for bus 10 are inconsistent. This can lead to unexpected results
└ @ PowerSystems ~/.julia/packages/PowerSystems/zVsmd/src/parsers/pm_io/matpower.jl:245
Property | Value |
---|---|
System Units Base | SYSTEM_BASE |
Base Power | 100.0 |
Base Frequency | 60.0 |
Num Components | 30 |
Type | Count | Has Static Time Series | Has Forecasts |
---|---|---|---|
Arc | 6 | false | false |
Area | 1 | false | false |
Bus | 5 | false | false |
Line | 5 | false | false |
LoadZone | 1 | false | false |
PhaseShiftingTransformer | 2 | false | false |
PowerLoad | 3 | false | false |
RenewableDispatch | 2 | false | false |
ThermalStandard | 5 | false | false |
For example, if we want to add a bunch of time series files, say one for each load and one for each renewable generator, we need to define pointers to each .csv file containing the time series in the following format (PowerSystems.jl also supports a CSV format for this file)
base_dir = PowerSystems.download(PowerSystems.TestData; branch = "master");
FORECASTS_DIR = joinpath(base_dir, "forecasts", "5bus_ts")
fname = joinpath(FORECASTS_DIR, "timeseries_pointers_da.json")
open(fname, "r") do f
JSON3.@pretty JSON3.read(f)
end
[
{
"simulation": "DAY_AHEAD",
"resolution": 3600,
"category": "Generator",
"component_name": "SolarBusC",
"module": "PowerSystems",
"type": "SingleTimeSeries",
"name": "max_active_power",
"scaling_factor_multiplier": "get_max_active_power",
"scaling_factor_multiplier_module": "PowerSystems",
"normalization_factor": 1,
"data_file": "./gen/Renewable/PV/da_solar5.csv"
},
{
"simulation": "DAY_AHEAD",
"resolution": 3600,
"category": "Generator",
"component_name": "WindBusA",
"module": "PowerSystems",
"type": "SingleTimeSeries",
"name": "max_active_power",
"scaling_factor_multiplier": "get_max_active_power",
"scaling_factor_multiplier_module": "PowerSystems",
"normalization_factor": 1,
"data_file": "./gen/Renewable/WIND/da_wind5.csv"
},
{
"simulation": "DAY_AHEAD",
"resolution": 3600,
"category": "ElectricLoad",
"component_name": "bus2",
"module": "PowerSystems",
"type": "SingleTimeSeries",
"name": "max_active_power",
"scaling_factor_multiplier": "get_max_active_power",
"scaling_factor_multiplier_module": "PowerSystems",
"normalization_factor": 1,
"data_file": "./load/da_load5.csv"
},
{
"simulation": "DAY_AHEAD",
"resolution": 3600,
"category": "ElectricLoad",
"component_name": "bus3",
"module": "PowerSystems",
"type": "SingleTimeSeries",
"name": "max_active_power",
"scaling_factor_multiplier": "get_max_active_power",
"scaling_factor_multiplier_module": "PowerSystems",
"normalization_factor": 1,
"data_file": "./load/da_load5.csv"
},
{
"simulation": "DAY_AHEAD",
"resolution": 3600,
"category": "ElectricLoad",
"component_name": "bus4",
"module": "PowerSystems",
"type": "SingleTimeSeries",
"name": "max_active_power",
"scaling_factor_multiplier": "get_max_active_power",
"scaling_factor_multiplier_module": "PowerSystems",
"normalization_factor": 1,
"data_file": "./load/da_load5.csv"
}
]
System
using these parameters.add_time_series!(sys, fname)
sys
Property | Value |
---|---|
System Units Base | SYSTEM_BASE |
Base Power | 100.0 |
Base Frequency | 60.0 |
Num Components | 30 |
Type | Count | Has Static Time Series | Has Forecasts |
---|---|---|---|
Arc | 6 | false | false |
Area | 1 | false | false |
Bus | 5 | false | false |
Line | 5 | false | false |
LoadZone | 1 | false | false |
PhaseShiftingTransformer | 2 | false | false |
PowerLoad | 3 | true | false |
RenewableDispatch | 2 | true | false |
ThermalStandard | 5 | false | false |
Property | Value |
---|---|
Components with time series data | 5 |
Total StaticTimeSeries | 5 |
Total Forecasts | 0 |
Resolution | 60 minutes |