Operations problems with PowerSimulations.jl

Originally Contributed by: Clayton Barrows

Introduction

PowerSimulations.jl supports the construction and solution of optimal power system scheduling problems (Operations Problems). Operations problems form the fundamental building blocks for sequential simulations. This example shows how to specify and customize the mathematics that will be applied to the data with a ProblemTemplate, build and execute a DecisionModel, and access the results.

using PowerSystems
using PowerSimulations
using HydroPowerSimulations
using PowerSystemCaseBuilder
using HiGHS # solver
using Dates

Data

Note

PowerSystemCaseBuilder.jl is a helper library that makes it easier to reproduce examples in the documentation and tutorials. Normally you would pass your local files to create the system data instead of calling the function build_system. For more details visit PowerSystemCaseBuilder Documentation

sys = build_system(PSISystems, "modified_RTS_GMLC_DA_sys")
System
Property Value
Name
Description
System Units Base SYSTEM_BASE
Base Power 100.0
Base Frequency 60.0
Num Components 504
Static Components
Type Count
ACBus 73
Arc 109
Area 3
FixedAdmittance 3
HydroDispatch 1
Line 105
LoadZone 21
PowerLoad 51
RenewableDispatch 29
RenewableNonDispatch 31
SynchronousCondenser 3
TapTransformer 15
ThermalStandard 54
TwoTerminalGenericHVDCLine 1
VariableReserve{ReserveDown} 1
VariableReserve{ReserveUp} 4
StaticTimeSeries Summary
owner_type owner_category name time_series_type initial_timestamp resolution count time_step_count
String String String String String Dates.CompoundPeriod Int64 Int64
Area Component max_active_power SingleTimeSeries 2020-01-01T00:00:00 1 hour 3 8784
FixedAdmittance Component max_active_power SingleTimeSeries 2020-01-01T00:00:00 1 hour 3 8784
HydroDispatch Component max_active_power SingleTimeSeries 2020-01-01T00:00:00 1 hour 1 8784
PowerLoad Component max_active_power SingleTimeSeries 2020-01-01T00:00:00 1 hour 51 8784
RenewableDispatch Component max_active_power SingleTimeSeries 2020-01-01T00:00:00 1 hour 29 8784
RenewableNonDispatch Component max_active_power SingleTimeSeries 2020-01-01T00:00:00 1 hour 31 8784
VariableReserve Component requirement SingleTimeSeries 2020-01-01T00:00:00 1 hour 5 8784
Forecast Summary
owner_type owner_category name time_series_type initial_timestamp resolution count horizon interval window_count
String String String String String Dates.CompoundPeriod Int64 Dates.CompoundPeriod Dates.CompoundPeriod Int64
Area Component max_active_power DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 3 2 days 1 day 365
FixedAdmittance Component max_active_power DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 3 2 days 1 day 365
HydroDispatch Component max_active_power DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 1 2 days 1 day 365
PowerLoad Component max_active_power DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 51 2 days 1 day 365
RenewableDispatch Component max_active_power DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 29 2 days 1 day 365
RenewableNonDispatch Component max_active_power DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 31 2 days 1 day 365
VariableReserve Component requirement DeterministicSingleTimeSeries 2020-01-01T00:00:00 1 hour 5 2 days 1 day 365

Define a problem specification with a ProblemTemplate

You can create an empty template with:

template_uc = ProblemTemplate()
Network Model
Network Model CopperPlatePowerModel
Slacks false
PTDF false
Duals None
HVDC Network Model None
Device Models
Device Type Formulation Slacks

Now, you can add a DeviceModel for each device type to create an assignment between PowerSystems device types and the subtypes of AbstractDeviceFormulation. PowerSimulations has a variety of different AbstractDeviceFormulation subtypes that can be applied to different PowerSystems device types, each dispatching to different methods for populating optimization problem objectives, variables, and constraints. Documentation on the formulation options for various devices can be found in the formulation library docs

Branch Formulations

Here is an example of relatively standard branch formulations. Other formulations allow for selective enforcement of transmission limits and greater control on transformer settings.

set_device_model!(template_uc, Line, StaticBranch)
set_device_model!(template_uc, Transformer2W, StaticBranch)
set_device_model!(template_uc, TapTransformer, StaticBranch)

Injection Device Formulations

Here we define template entries for all devices that inject or withdraw power on the network. For each device type, we can define a distinct AbstractDeviceFormulation. In this case, we're defining a basic unit commitment model for thermal generators, curtailable renewable generators, and fixed dispatch (net-load reduction) formulations for HydroDispatch and RenewableNonDispatch devices.

set_device_model!(template_uc, ThermalStandard, ThermalStandardUnitCommitment)
set_device_model!(template_uc, RenewableDispatch, RenewableFullDispatch)
set_device_model!(template_uc, PowerLoad, StaticPowerLoad)
set_device_model!(template_uc, HydroDispatch, HydroDispatchRunOfRiver)
set_device_model!(template_uc, RenewableNonDispatch, FixedOutput)

Service Formulations

We have two VariableReserve types, parameterized by their direction. So, similar to creating DeviceModels, we can create ServiceModels. The primary difference being that DeviceModel objects define how constraints get created, while ServiceModel objects define how constraints get modified.

set_service_model!(template_uc, VariableReserve{ReserveUp}, RangeReserve)
set_service_model!(template_uc, VariableReserve{ReserveDown}, RangeReserve)

Network Formulations

Finally, we can define the transmission network specification that we'd like to model. For simplicity, we'll choose a copper plate formulation. But there are dozens of specifications available through an integration with PowerModels.jl.

Note that many formulations will require appropriate data and may be computationally intractable

set_network_model!(template_uc, NetworkModel(CopperPlatePowerModel))

DecisionModel

Now that we have a System and a ProblemTemplate, we can put the two together to create a DecisionModel that we solve.

Optimizer

It's most convenient to define an optimizer instance upfront and pass it into the DecisionModel constructor. For this example, we can use the free HiGHS solver with a relatively relaxed MIP gap (ratioGap) setting to improve speed.

solver = optimizer_with_attributes(HiGHS.Optimizer, "mip_rel_gap" => 0.5)
MathOptInterface.OptimizerWithAttributes(HiGHS.Optimizer, Pair{MathOptInterface.AbstractOptimizerAttribute, Any}[MathOptInterface.RawOptimizerAttribute("mip_rel_gap") => 0.5])

Build a DecisionModel

The construction of a DecisionModel essentially applies a ProblemTemplate to System data to create a JuMP model.

problem = DecisionModel(template_uc, sys; optimizer = solver, horizon = Hour(24))
build!(problem; output_dir = mktempdir())
InfrastructureSystems.Optimization.ModelBuildStatusModule.ModelBuildStatus.BUILT = 0
Tip

The principal component of the DecisionModel is the JuMP model. But you can serialize to a file using the following command:

serialize_optimization_model(problem, save_path)

Keep in mind that if the setting "store_variable_names" is set to False then the file won't show the model's names.

Solve a DecisionModel

solve!(problem)
InfrastructureSystems.Simulation.RunStatusModule.RunStatus.SUCCESSFULLY_FINALIZED = 0

Results Inspection

PowerSimulations collects the DecisionModel results into a OptimizationProblemResults struct:

res = OptimizationProblemResults(problem)

Start: 2020-01-01T00:00:00

End: 2020-01-01T23:00:00

Resolution: 60 minutes

PowerSimulations Problem Auxiliary variables Results
HydroEnergyOutput__HydroDispatch
TimeDurationOff__ThermalStandard
TimeDurationOn__ThermalStandard
PowerSimulations Problem Expressions Results
ProductionCostExpression__HydroDispatch
ProductionCostExpression__ThermalStandard
ProductionCostExpression__RenewableDispatch
FuelConsumptionExpression__ThermalStandard
ActivePowerBalance__System
PowerSimulations Problem Parameters Results
ActivePowerTimeSeriesParameter__HydroDispatch
ActivePowerTimeSeriesParameter__RenewableDispatch
ActivePowerTimeSeriesParameter__RenewableNonDispatch
RequirementTimeSeriesParameter__VariableReserve__ReserveDown__Reg_Down
ActivePowerTimeSeriesParameter__PowerLoad
RequirementTimeSeriesParameter__VariableReserve__ReserveUp__Reg_Up
RequirementTimeSeriesParameter__VariableReserve__ReserveUp__Spin_Up_R1
RequirementTimeSeriesParameter__VariableReserve__ReserveUp__Spin_Up_R2
RequirementTimeSeriesParameter__VariableReserve__ReserveUp__Spin_Up_R3
PowerSimulations Problem Variables Results
ActivePowerReserveVariable__VariableReserve__ReserveDown__Reg_Down
ActivePowerReserveVariable__VariableReserve__ReserveUp__Reg_Up
ActivePowerVariable__ThermalStandard
ActivePowerVariable__HydroDispatch
ActivePowerReserveVariable__VariableReserve__ReserveUp__Spin_Up_R2
ActivePowerReserveVariable__VariableReserve__ReserveUp__Spin_Up_R3
StopVariable__ThermalStandard
StartVariable__ThermalStandard
OnVariable__ThermalStandard
ActivePowerReserveVariable__VariableReserve__ReserveUp__Spin_Up_R1
ActivePowerVariable__RenewableDispatch

Optimizer Stats

The optimizer summary is included

get_optimizer_stats(res)
1×21 DataFrame
Rowdetailed_statsobjective_valuetermination_statusprimal_statusdual_statussolver_solve_timeresult_counthas_valueshas_dualsobjective_boundrelative_gapdual_objective_valuesolve_timebarrier_iterationssimplex_iterationsnode_counttimed_solve_timetimed_calculate_aux_variablestimed_calculate_dual_variablessolve_bytes_allocsec_in_gc
BoolFloat64Int64Int64Int64Float64Int64BoolBoolMissingMissingMissingFloat64MissingMissingMissingFloat64Float64Float64Float64Float64
1false2.35682e6110NaN1falsefalsemissingmissingmissing0.980197missingmissingmissing1.1880.002133530.002778783.46383e70.0

Objective Function Value

get_objective_value(res)
2.356823683788018e6

Variable, Parameter, Auxiliary Variable, Dual, and Expression Values

The solution value data frames for variables, parameters, auxiliary variables, duals, and expressions can be accessed using the read_ methods:

read_variables(res)
Dict{String, DataFrames.DataFrame} with 11 entries:
  "ActivePowerReserveVaria… => 1224×3 DataFrame…
  "ActivePowerReserveVaria… => 1224×3 DataFrame…
  "StopVariable__ThermalSt… => 1296×3 DataFrame…
  "OnVariable__ThermalStan… => 1296×3 DataFrame…
  "ActivePowerVariable__Hy… => 24×3 DataFrame…
  "ActivePowerReserveVaria… => 432×3 DataFrame…
  "StartVariable__ThermalS… => 1296×3 DataFrame…
  "ActivePowerVariable__Th… => 1296×3 DataFrame…
  "ActivePowerVariable__Re… => 696×3 DataFrame…
  "ActivePowerReserveVaria… => 408×3 DataFrame…
  "ActivePowerReserveVaria… => 384×3 DataFrame

Or, you can read a single parameter value for parameters that exist in the results.

list_parameter_names(res)
read_parameter(res, "ActivePowerTimeSeriesParameter__RenewableDispatch")
696×3 DataFrame
RowDateTimenamevalue
DateTimeStringFloat64
12020-01-01T00:00:00122_WIND_1713.2
22020-01-01T01:00:00122_WIND_1712.8
32020-01-01T02:00:00122_WIND_1708.4
42020-01-01T03:00:00122_WIND_1710.7
52020-01-01T04:00:00122_WIND_1701.4
62020-01-01T05:00:00122_WIND_1682.5
72020-01-01T06:00:00122_WIND_1614.7
82020-01-01T07:00:00122_WIND_1517.7
92020-01-01T08:00:00122_WIND_1426.6
102020-01-01T09:00:00122_WIND_1274.2
112020-01-01T10:00:00122_WIND_193.0
122020-01-01T11:00:00122_WIND_16.3
132020-01-01T12:00:00122_WIND_13.8
142020-01-01T13:00:00122_WIND_11.1
152020-01-01T14:00:00122_WIND_10.0
162020-01-01T15:00:00122_WIND_10.0
172020-01-01T16:00:00122_WIND_10.9
182020-01-01T17:00:00122_WIND_1276.3
192020-01-01T18:00:00122_WIND_1272.9
202020-01-01T19:00:00122_WIND_1345.6
212020-01-01T20:00:00122_WIND_1411.7
222020-01-01T21:00:00122_WIND_1376.6
232020-01-01T22:00:00122_WIND_1561.3
242020-01-01T23:00:00122_WIND_1568.4
252020-01-01T00:00:00324_PV_30.0
262020-01-01T01:00:00324_PV_30.0
272020-01-01T02:00:00324_PV_30.0
282020-01-01T03:00:00324_PV_30.0
292020-01-01T04:00:00324_PV_30.0
302020-01-01T05:00:00324_PV_30.0
312020-01-01T06:00:00324_PV_30.0
322020-01-01T07:00:00324_PV_336.4
332020-01-01T08:00:00324_PV_363.4
342020-01-01T09:00:00324_PV_371.2
352020-01-01T10:00:00324_PV_372.2
362020-01-01T11:00:00324_PV_370.6
372020-01-01T12:00:00324_PV_367.4
382020-01-01T13:00:00324_PV_365.2
392020-01-01T14:00:00324_PV_360.2
402020-01-01T15:00:00324_PV_342.0
412020-01-01T16:00:00324_PV_30.0
422020-01-01T17:00:00324_PV_30.0
432020-01-01T18:00:00324_PV_30.0
442020-01-01T19:00:00324_PV_30.0
452020-01-01T20:00:00324_PV_30.0
462020-01-01T21:00:00324_PV_30.0
472020-01-01T22:00:00324_PV_30.0
482020-01-01T23:00:00324_PV_30.0
492020-01-01T00:00:00312_PV_10.0
502020-01-01T01:00:00312_PV_10.0
512020-01-01T02:00:00312_PV_10.0
522020-01-01T03:00:00312_PV_10.0
532020-01-01T04:00:00312_PV_10.0
542020-01-01T05:00:00312_PV_10.0
552020-01-01T06:00:00312_PV_10.0
562020-01-01T07:00:00312_PV_152.2
572020-01-01T08:00:00312_PV_197.4
582020-01-01T09:00:00312_PV_1118.0
592020-01-01T10:00:00312_PV_1132.0
602020-01-01T11:00:00312_PV_1135.2
612020-01-01T12:00:00312_PV_1131.0
622020-01-01T13:00:00312_PV_1125.4
632020-01-01T14:00:00312_PV_1109.6
642020-01-01T15:00:00312_PV_169.0
652020-01-01T16:00:00312_PV_10.0
662020-01-01T17:00:00312_PV_10.0
672020-01-01T18:00:00312_PV_10.0
682020-01-01T19:00:00312_PV_10.0
692020-01-01T20:00:00312_PV_10.0
702020-01-01T21:00:00312_PV_10.0
712020-01-01T22:00:00312_PV_10.0
722020-01-01T23:00:00312_PV_10.0
732020-01-01T00:00:00102_PV_10.0
742020-01-01T01:00:00102_PV_10.0
752020-01-01T02:00:00102_PV_10.0
762020-01-01T03:00:00102_PV_10.0
772020-01-01T04:00:00102_PV_10.0
782020-01-01T05:00:00102_PV_10.0
792020-01-01T06:00:00102_PV_10.0
802020-01-01T07:00:00102_PV_130.6
812020-01-01T08:00:00102_PV_136.8
822020-01-01T09:00:00102_PV_138.0
832020-01-01T10:00:00102_PV_137.8
842020-01-01T11:00:00102_PV_137.0
852020-01-01T12:00:00102_PV_136.2
862020-01-01T13:00:00102_PV_135.2
872020-01-01T14:00:00102_PV_131.0
882020-01-01T15:00:00102_PV_120.2
892020-01-01T16:00:00102_PV_10.0
902020-01-01T17:00:00102_PV_10.0
912020-01-01T18:00:00102_PV_10.0
922020-01-01T19:00:00102_PV_10.0
932020-01-01T20:00:00102_PV_10.0
942020-01-01T21:00:00102_PV_10.0
952020-01-01T22:00:00102_PV_10.0
962020-01-01T23:00:00102_PV_10.0
972020-01-01T00:00:00101_PV_10.0
982020-01-01T01:00:00101_PV_10.0
992020-01-01T02:00:00101_PV_10.0
1002020-01-01T03:00:00101_PV_10.0
1012020-01-01T04:00:00101_PV_10.0
1022020-01-01T05:00:00101_PV_10.0
1032020-01-01T06:00:00101_PV_10.0
1042020-01-01T07:00:00101_PV_129.6
1052020-01-01T08:00:00101_PV_134.8
1062020-01-01T09:00:00101_PV_136.4
1072020-01-01T10:00:00101_PV_136.4
1082020-01-01T11:00:00101_PV_135.0
1092020-01-01T12:00:00101_PV_135.4
1102020-01-01T13:00:00101_PV_135.0
1112020-01-01T14:00:00101_PV_131.0
1122020-01-01T15:00:00101_PV_119.2
1132020-01-01T16:00:00101_PV_10.0
1142020-01-01T17:00:00101_PV_10.0
1152020-01-01T18:00:00101_PV_10.0
1162020-01-01T19:00:00101_PV_10.0
1172020-01-01T20:00:00101_PV_10.0
1182020-01-01T21:00:00101_PV_10.0
1192020-01-01T22:00:00101_PV_10.0
1202020-01-01T23:00:00101_PV_10.0
1212020-01-01T00:00:00324_PV_20.0
1222020-01-01T01:00:00324_PV_20.0
1232020-01-01T02:00:00324_PV_20.0
1242020-01-01T03:00:00324_PV_20.0
1252020-01-01T04:00:00324_PV_20.0
1262020-01-01T05:00:00324_PV_20.0
1272020-01-01T06:00:00324_PV_20.0
1282020-01-01T07:00:00324_PV_236.4
1292020-01-01T08:00:00324_PV_263.4
1302020-01-01T09:00:00324_PV_271.4
1312020-01-01T10:00:00324_PV_272.2
1322020-01-01T11:00:00324_PV_270.6
1332020-01-01T12:00:00324_PV_267.4
1342020-01-01T13:00:00324_PV_265.2
1352020-01-01T14:00:00324_PV_260.4
1362020-01-01T15:00:00324_PV_242.0
1372020-01-01T16:00:00324_PV_20.0
1382020-01-01T17:00:00324_PV_20.0
1392020-01-01T18:00:00324_PV_20.0
1402020-01-01T19:00:00324_PV_20.0
1412020-01-01T20:00:00324_PV_20.0
1422020-01-01T21:00:00324_PV_20.0
1432020-01-01T22:00:00324_PV_20.0
1442020-01-01T23:00:00324_PV_20.0
1452020-01-01T00:00:00313_PV_20.0
1462020-01-01T01:00:00313_PV_20.0
1472020-01-01T02:00:00313_PV_20.0
1482020-01-01T03:00:00313_PV_20.0
1492020-01-01T04:00:00313_PV_20.0
1502020-01-01T05:00:00313_PV_20.0
1512020-01-01T06:00:00313_PV_20.0
1522020-01-01T07:00:00313_PV_262.2
1532020-01-01T08:00:00313_PV_296.0
1542020-01-01T09:00:00313_PV_2117.6
1552020-01-01T10:00:00313_PV_2130.8
1562020-01-01T11:00:00313_PV_2134.2
1572020-01-01T12:00:00313_PV_2129.6
1582020-01-01T13:00:00313_PV_2123.6
1592020-01-01T14:00:00313_PV_2108.0
1602020-01-01T15:00:00313_PV_265.6
1612020-01-01T16:00:00313_PV_20.0
1622020-01-01T17:00:00313_PV_20.0
1632020-01-01T18:00:00313_PV_20.0
1642020-01-01T19:00:00313_PV_20.0
1652020-01-01T20:00:00313_PV_20.0
1662020-01-01T21:00:00313_PV_20.0
1672020-01-01T22:00:00313_PV_20.0
1682020-01-01T23:00:00313_PV_20.0
1692020-01-01T00:00:00104_PV_10.0
1702020-01-01T01:00:00104_PV_10.0
1712020-01-01T02:00:00104_PV_10.0
1722020-01-01T03:00:00104_PV_10.0
1732020-01-01T04:00:00104_PV_10.0
1742020-01-01T05:00:00104_PV_10.0
1752020-01-01T06:00:00104_PV_10.0
1762020-01-01T07:00:00104_PV_129.8
1772020-01-01T08:00:00104_PV_135.0
1782020-01-01T09:00:00104_PV_136.6
1792020-01-01T10:00:00104_PV_136.6
1802020-01-01T11:00:00104_PV_135.4
1812020-01-01T12:00:00104_PV_135.6
1822020-01-01T13:00:00104_PV_135.4
1832020-01-01T14:00:00104_PV_131.4
1842020-01-01T15:00:00104_PV_120.6
1852020-01-01T16:00:00104_PV_10.0
1862020-01-01T17:00:00104_PV_10.0
1872020-01-01T18:00:00104_PV_10.0
1882020-01-01T19:00:00104_PV_10.0
1892020-01-01T20:00:00104_PV_10.0
1902020-01-01T21:00:00104_PV_10.0
1912020-01-01T22:00:00104_PV_10.0
1922020-01-01T23:00:00104_PV_10.0
1932020-01-01T00:00:00101_PV_20.0
1942020-01-01T01:00:00101_PV_20.0
1952020-01-01T02:00:00101_PV_20.0
1962020-01-01T03:00:00101_PV_20.0
1972020-01-01T04:00:00101_PV_20.0
1982020-01-01T05:00:00101_PV_20.0
1992020-01-01T06:00:00101_PV_20.0
2002020-01-01T07:00:00101_PV_230.4
2012020-01-01T08:00:00101_PV_237.0
2022020-01-01T09:00:00101_PV_238.2
2032020-01-01T10:00:00101_PV_238.0
2042020-01-01T11:00:00101_PV_237.2
2052020-01-01T12:00:00101_PV_236.4
2062020-01-01T13:00:00101_PV_235.4
2072020-01-01T14:00:00101_PV_231.2
2082020-01-01T15:00:00101_PV_220.2
2092020-01-01T16:00:00101_PV_20.0
2102020-01-01T17:00:00101_PV_20.0
2112020-01-01T18:00:00101_PV_20.0
2122020-01-01T19:00:00101_PV_20.0
2132020-01-01T20:00:00101_PV_20.0
2142020-01-01T21:00:00101_PV_20.0
2152020-01-01T22:00:00101_PV_20.0
2162020-01-01T23:00:00101_PV_20.0
2172020-01-01T00:00:00309_WIND_1142.8
2182020-01-01T01:00:00309_WIND_1139.1
2192020-01-01T02:00:00309_WIND_1145.3
2202020-01-01T03:00:00309_WIND_1144.8
2212020-01-01T04:00:00309_WIND_1137.1
2222020-01-01T05:00:00309_WIND_198.6
2232020-01-01T06:00:00309_WIND_162.2
2242020-01-01T07:00:00309_WIND_147.3
2252020-01-01T08:00:00309_WIND_148.9
2262020-01-01T09:00:00309_WIND_130.7
2272020-01-01T10:00:00309_WIND_127.4
2282020-01-01T11:00:00309_WIND_160.9
2292020-01-01T12:00:00309_WIND_120.4
2302020-01-01T13:00:00309_WIND_11.6
2312020-01-01T14:00:00309_WIND_10.0
2322020-01-01T15:00:00309_WIND_12.6
2332020-01-01T16:00:00309_WIND_137.9
2342020-01-01T17:00:00309_WIND_146.9
2352020-01-01T18:00:00309_WIND_124.0
2362020-01-01T19:00:00309_WIND_124.0
2372020-01-01T20:00:00309_WIND_127.4
2382020-01-01T21:00:00309_WIND_16.5
2392020-01-01T22:00:00309_WIND_11.3
2402020-01-01T23:00:00309_WIND_10.1
2412020-01-01T00:00:00310_PV_20.0
2422020-01-01T01:00:00310_PV_20.0
2432020-01-01T02:00:00310_PV_20.0
2442020-01-01T03:00:00310_PV_20.0
2452020-01-01T04:00:00310_PV_20.0
2462020-01-01T05:00:00310_PV_20.0
2472020-01-01T06:00:00310_PV_20.0
2482020-01-01T07:00:00310_PV_238.2
2492020-01-01T08:00:00310_PV_261.4
2502020-01-01T09:00:00310_PV_266.8
2512020-01-01T10:00:00310_PV_270.2
2522020-01-01T11:00:00310_PV_269.8
2532020-01-01T12:00:00310_PV_267.8
2542020-01-01T13:00:00310_PV_267.2
2552020-01-01T14:00:00310_PV_263.2
2562020-01-01T15:00:00310_PV_245.0
2572020-01-01T16:00:00310_PV_20.0
2582020-01-01T17:00:00310_PV_20.0
2592020-01-01T18:00:00310_PV_20.0
2602020-01-01T19:00:00310_PV_20.0
2612020-01-01T20:00:00310_PV_20.0
2622020-01-01T21:00:00310_PV_20.0
2632020-01-01T22:00:00310_PV_20.0
2642020-01-01T23:00:00310_PV_20.0
2652020-01-01T00:00:00113_PV_10.0
2662020-01-01T01:00:00113_PV_10.0
2672020-01-01T02:00:00113_PV_10.0
2682020-01-01T03:00:00113_PV_10.0
2692020-01-01T04:00:00113_PV_10.0
2702020-01-01T05:00:00113_PV_10.0
2712020-01-01T06:00:00113_PV_10.0
2722020-01-01T07:00:00113_PV_199.4
2732020-01-01T08:00:00113_PV_1126.2
2742020-01-01T09:00:00113_PV_1133.2
2752020-01-01T10:00:00113_PV_1134.2
2762020-01-01T11:00:00113_PV_1135.2
2772020-01-01T12:00:00113_PV_1133.0
2782020-01-01T13:00:00113_PV_1126.6
2792020-01-01T14:00:00113_PV_1110.2
2802020-01-01T15:00:00113_PV_162.8
2812020-01-01T16:00:00113_PV_10.0
2822020-01-01T17:00:00113_PV_10.0
2832020-01-01T18:00:00113_PV_10.0
2842020-01-01T19:00:00113_PV_10.0
2852020-01-01T20:00:00113_PV_10.0
2862020-01-01T21:00:00113_PV_10.0
2872020-01-01T22:00:00113_PV_10.0
2882020-01-01T23:00:00113_PV_10.0
2892020-01-01T00:00:00317_WIND_1795.1
2902020-01-01T01:00:00317_WIND_1794.4
2912020-01-01T02:00:00317_WIND_1773.6
2922020-01-01T03:00:00317_WIND_1767.3
2932020-01-01T04:00:00317_WIND_1752.2
2942020-01-01T05:00:00317_WIND_1719.4
2952020-01-01T06:00:00317_WIND_1655.3
2962020-01-01T07:00:00317_WIND_1594.6
2972020-01-01T08:00:00317_WIND_1579.1
2982020-01-01T09:00:00317_WIND_1466.8
2992020-01-01T10:00:00317_WIND_1301.4
3002020-01-01T11:00:00317_WIND_1110.7
3012020-01-01T12:00:00317_WIND_178.9
3022020-01-01T13:00:00317_WIND_1107.9
3032020-01-01T14:00:00317_WIND_122.3
3042020-01-01T15:00:00317_WIND_124.6
3052020-01-01T16:00:00317_WIND_110.8
3062020-01-01T17:00:00317_WIND_1243.2
3072020-01-01T18:00:00317_WIND_1375.2
3082020-01-01T19:00:00317_WIND_1568.4
3092020-01-01T20:00:00317_WIND_1636.1
3102020-01-01T21:00:00317_WIND_1719.2
3112020-01-01T22:00:00317_WIND_1734.9
3122020-01-01T23:00:00317_WIND_1729.1
3132020-01-01T00:00:00314_PV_10.0
3142020-01-01T01:00:00314_PV_10.0
3152020-01-01T02:00:00314_PV_10.0
3162020-01-01T03:00:00314_PV_10.0
3172020-01-01T04:00:00314_PV_10.0
3182020-01-01T05:00:00314_PV_10.0
3192020-01-01T06:00:00314_PV_10.0
3202020-01-01T07:00:00314_PV_147.4
3212020-01-01T08:00:00314_PV_161.2
3222020-01-01T09:00:00314_PV_169.0
3232020-01-01T10:00:00314_PV_170.2
3242020-01-01T11:00:00314_PV_167.0
3252020-01-01T12:00:00314_PV_167.2
3262020-01-01T13:00:00314_PV_167.0
3272020-01-01T14:00:00314_PV_159.4
3282020-01-01T15:00:00314_PV_142.4
3292020-01-01T16:00:00314_PV_10.0
3302020-01-01T17:00:00314_PV_10.0
3312020-01-01T18:00:00314_PV_10.0
3322020-01-01T19:00:00314_PV_10.0
3332020-01-01T20:00:00314_PV_10.0
3342020-01-01T21:00:00314_PV_10.0
3352020-01-01T22:00:00314_PV_10.0
3362020-01-01T23:00:00314_PV_10.0
3372020-01-01T00:00:00324_PV_10.0
3382020-01-01T01:00:00324_PV_10.0
3392020-01-01T02:00:00324_PV_10.0
3402020-01-01T03:00:00324_PV_10.0
3412020-01-01T04:00:00324_PV_10.0
3422020-01-01T05:00:00324_PV_10.0
3432020-01-01T06:00:00324_PV_10.0
3442020-01-01T07:00:00324_PV_144.8
3452020-01-01T08:00:00324_PV_165.2
3462020-01-01T09:00:00324_PV_168.0
3472020-01-01T10:00:00324_PV_170.2
3482020-01-01T11:00:00324_PV_170.2
3492020-01-01T12:00:00324_PV_168.2
3502020-01-01T13:00:00324_PV_165.8
3512020-01-01T14:00:00324_PV_162.6
3522020-01-01T15:00:00324_PV_144.8
3532020-01-01T16:00:00324_PV_10.0
3542020-01-01T17:00:00324_PV_10.0
3552020-01-01T18:00:00324_PV_10.0
3562020-01-01T19:00:00324_PV_10.0
3572020-01-01T20:00:00324_PV_10.0
3582020-01-01T21:00:00324_PV_10.0
3592020-01-01T22:00:00324_PV_10.0
3602020-01-01T23:00:00324_PV_10.0
3612020-01-01T00:00:00103_PV_10.0
3622020-01-01T01:00:00103_PV_10.0
3632020-01-01T02:00:00103_PV_10.0
3642020-01-01T03:00:00103_PV_10.0
3652020-01-01T04:00:00103_PV_10.0
3662020-01-01T05:00:00103_PV_10.0
3672020-01-01T06:00:00103_PV_10.0
3682020-01-01T07:00:00103_PV_129.8
3692020-01-01T08:00:00103_PV_158.4
3702020-01-01T09:00:00103_PV_176.6
3712020-01-01T10:00:00103_PV_189.8
3722020-01-01T11:00:00103_PV_198.0
3732020-01-01T12:00:00103_PV_194.0
3742020-01-01T13:00:00103_PV_181.4
3752020-01-01T14:00:00103_PV_159.4
3762020-01-01T15:00:00103_PV_125.4
3772020-01-01T16:00:00103_PV_10.0
3782020-01-01T17:00:00103_PV_10.0
3792020-01-01T18:00:00103_PV_10.0
3802020-01-01T19:00:00103_PV_10.0
3812020-01-01T20:00:00103_PV_10.0
3822020-01-01T21:00:00103_PV_10.0
3832020-01-01T22:00:00103_PV_10.0
3842020-01-01T23:00:00103_PV_10.0
3852020-01-01T00:00:00303_WIND_1480.8
3862020-01-01T01:00:00303_WIND_1634.9
3872020-01-01T02:00:00303_WIND_1487.3
3882020-01-01T03:00:00303_WIND_1432.7
3892020-01-01T04:00:00303_WIND_1407.9
3902020-01-01T05:00:00303_WIND_1440.2
3912020-01-01T06:00:00303_WIND_1377.3
3922020-01-01T07:00:00303_WIND_1199.3
3932020-01-01T08:00:00303_WIND_1110.6
3942020-01-01T09:00:00303_WIND_13.6
3952020-01-01T10:00:00303_WIND_12.4
3962020-01-01T11:00:00303_WIND_156.2
3972020-01-01T12:00:00303_WIND_191.5
3982020-01-01T13:00:00303_WIND_1103.0
3992020-01-01T14:00:00303_WIND_139.7
4002020-01-01T15:00:00303_WIND_187.7
4012020-01-01T16:00:00303_WIND_192.3
4022020-01-01T17:00:00303_WIND_189.4
4032020-01-01T18:00:00303_WIND_190.4
4042020-01-01T19:00:00303_WIND_181.1
4052020-01-01T20:00:00303_WIND_1172.9
4062020-01-01T21:00:00303_WIND_1326.9
4072020-01-01T22:00:00303_WIND_1256.7
4082020-01-01T23:00:00303_WIND_1141.1
4092020-01-01T00:00:00314_PV_20.0
4102020-01-01T01:00:00314_PV_20.0
4112020-01-01T02:00:00314_PV_20.0
4122020-01-01T03:00:00314_PV_20.0
4132020-01-01T04:00:00314_PV_20.0
4142020-01-01T05:00:00314_PV_20.0
4152020-01-01T06:00:00314_PV_20.0
4162020-01-01T07:00:00314_PV_246.6
4172020-01-01T08:00:00314_PV_267.0
4182020-01-01T09:00:00314_PV_269.8
4192020-01-01T10:00:00314_PV_272.2
4202020-01-01T11:00:00314_PV_272.4
4212020-01-01T12:00:00314_PV_270.2
4222020-01-01T13:00:00314_PV_267.6
4232020-01-01T14:00:00314_PV_264.2
4242020-01-01T15:00:00314_PV_246.2
4252020-01-01T16:00:00314_PV_20.0
4262020-01-01T17:00:00314_PV_20.0
4272020-01-01T18:00:00314_PV_20.0
4282020-01-01T19:00:00314_PV_20.0
4292020-01-01T20:00:00314_PV_20.0
4302020-01-01T21:00:00314_PV_20.0
4312020-01-01T22:00:00314_PV_20.0
4322020-01-01T23:00:00314_PV_20.0
4332020-01-01T00:00:00102_PV_20.0
4342020-01-01T01:00:00102_PV_20.0
4352020-01-01T02:00:00102_PV_20.0
4362020-01-01T03:00:00102_PV_20.0
4372020-01-01T04:00:00102_PV_20.0
4382020-01-01T05:00:00102_PV_20.0
4392020-01-01T06:00:00102_PV_20.0
4402020-01-01T07:00:00102_PV_230.0
4412020-01-01T08:00:00102_PV_236.4
4422020-01-01T09:00:00102_PV_237.6
4432020-01-01T10:00:00102_PV_237.4
4442020-01-01T11:00:00102_PV_236.6
4452020-01-01T12:00:00102_PV_235.8
4462020-01-01T13:00:00102_PV_234.8
4472020-01-01T14:00:00102_PV_230.8
4482020-01-01T15:00:00102_PV_220.0
4492020-01-01T16:00:00102_PV_20.0
4502020-01-01T17:00:00102_PV_20.0
4512020-01-01T18:00:00102_PV_20.0
4522020-01-01T19:00:00102_PV_20.0
4532020-01-01T20:00:00102_PV_20.0
4542020-01-01T21:00:00102_PV_20.0
4552020-01-01T22:00:00102_PV_20.0
4562020-01-01T23:00:00102_PV_20.0
4572020-01-01T00:00:00314_PV_30.0
4582020-01-01T01:00:00314_PV_30.0
4592020-01-01T02:00:00314_PV_30.0
4602020-01-01T03:00:00314_PV_30.0
4612020-01-01T04:00:00314_PV_30.0
4622020-01-01T05:00:00314_PV_30.0
4632020-01-01T06:00:00314_PV_30.0
4642020-01-01T07:00:00314_PV_363.8
4652020-01-01T08:00:00314_PV_3100.0
4662020-01-01T09:00:00314_PV_3121.8
4672020-01-01T10:00:00314_PV_3129.0
4682020-01-01T11:00:00314_PV_3128.6
4692020-01-01T12:00:00314_PV_3128.2
4702020-01-01T13:00:00314_PV_3119.6
4712020-01-01T14:00:00314_PV_3107.0
4722020-01-01T15:00:00314_PV_365.8
4732020-01-01T16:00:00314_PV_30.0
4742020-01-01T17:00:00314_PV_30.0
4752020-01-01T18:00:00314_PV_30.0
4762020-01-01T19:00:00314_PV_30.0
4772020-01-01T20:00:00314_PV_30.0
4782020-01-01T21:00:00314_PV_30.0
4792020-01-01T22:00:00314_PV_30.0
4802020-01-01T23:00:00314_PV_30.0
4812020-01-01T00:00:00320_PV_10.0
4822020-01-01T01:00:00320_PV_10.0
4832020-01-01T02:00:00320_PV_10.0
4842020-01-01T03:00:00320_PV_10.0
4852020-01-01T04:00:00320_PV_10.0
4862020-01-01T05:00:00320_PV_10.0
4872020-01-01T06:00:00320_PV_10.0
4882020-01-01T07:00:00320_PV_147.8
4892020-01-01T08:00:00320_PV_161.4
4902020-01-01T09:00:00320_PV_169.8
4912020-01-01T10:00:00320_PV_170.4
4922020-01-01T11:00:00320_PV_167.2
4932020-01-01T12:00:00320_PV_167.4
4942020-01-01T13:00:00320_PV_167.0
4952020-01-01T14:00:00320_PV_159.4
4962020-01-01T15:00:00320_PV_143.4
4972020-01-01T16:00:00320_PV_10.0
4982020-01-01T17:00:00320_PV_10.0
4992020-01-01T18:00:00320_PV_10.0
5002020-01-01T19:00:00320_PV_10.0
5012020-01-01T20:00:00320_PV_10.0
5022020-01-01T21:00:00320_PV_10.0
5032020-01-01T22:00:00320_PV_10.0
5042020-01-01T23:00:00320_PV_10.0
5052020-01-01T00:00:00101_PV_30.0
5062020-01-01T01:00:00101_PV_30.0
5072020-01-01T02:00:00101_PV_30.0
5082020-01-01T03:00:00101_PV_30.0
5092020-01-01T04:00:00101_PV_30.0
5102020-01-01T05:00:00101_PV_30.0
5112020-01-01T06:00:00101_PV_30.0
5122020-01-01T07:00:00101_PV_330.6
5132020-01-01T08:00:00101_PV_337.4
5142020-01-01T09:00:00101_PV_338.8
5152020-01-01T10:00:00101_PV_338.6
5162020-01-01T11:00:00101_PV_337.6
5172020-01-01T12:00:00101_PV_337.0
5182020-01-01T13:00:00101_PV_335.8
5192020-01-01T14:00:00101_PV_331.6
5202020-01-01T15:00:00101_PV_320.6
5212020-01-01T16:00:00101_PV_30.0
5222020-01-01T17:00:00101_PV_30.0
5232020-01-01T18:00:00101_PV_30.0
5242020-01-01T19:00:00101_PV_30.0
5252020-01-01T20:00:00101_PV_30.0
5262020-01-01T21:00:00101_PV_30.0
5272020-01-01T22:00:00101_PV_30.0
5282020-01-01T23:00:00101_PV_30.0
5292020-01-01T00:00:00319_PV_10.0
5302020-01-01T01:00:00319_PV_10.0
5312020-01-01T02:00:00319_PV_10.0
5322020-01-01T03:00:00319_PV_10.0
5332020-01-01T04:00:00319_PV_10.0
5342020-01-01T05:00:00319_PV_10.0
5352020-01-01T06:00:00319_PV_10.0
5362020-01-01T07:00:00319_PV_1179.2
5372020-01-01T08:00:00319_PV_1248.0
5382020-01-01T09:00:00319_PV_1273.4
5392020-01-01T10:00:00319_PV_1277.8
5402020-01-01T11:00:00319_PV_1263.2
5412020-01-01T12:00:00319_PV_1267.4
5422020-01-01T13:00:00319_PV_1258.8
5432020-01-01T14:00:00319_PV_1227.8
5442020-01-01T15:00:00319_PV_1151.6
5452020-01-01T16:00:00319_PV_10.0
5462020-01-01T17:00:00319_PV_10.0
5472020-01-01T18:00:00319_PV_10.0
5482020-01-01T19:00:00319_PV_10.0
5492020-01-01T20:00:00319_PV_10.0
5502020-01-01T21:00:00319_PV_10.0
5512020-01-01T22:00:00319_PV_10.0
5522020-01-01T23:00:00319_PV_10.0
5532020-01-01T00:00:00314_PV_40.0
5542020-01-01T01:00:00314_PV_40.0
5552020-01-01T02:00:00314_PV_40.0
5562020-01-01T03:00:00314_PV_40.0
5572020-01-01T04:00:00314_PV_40.0
5582020-01-01T05:00:00314_PV_40.0
5592020-01-01T06:00:00314_PV_40.0
5602020-01-01T07:00:00314_PV_446.4
5612020-01-01T08:00:00314_PV_467.0
5622020-01-01T09:00:00314_PV_469.8
5632020-01-01T10:00:00314_PV_472.2
5642020-01-01T11:00:00314_PV_472.4
5652020-01-01T12:00:00314_PV_470.2
5662020-01-01T13:00:00314_PV_467.6
5672020-01-01T14:00:00314_PV_464.2
5682020-01-01T15:00:00314_PV_446.2
5692020-01-01T16:00:00314_PV_40.0
5702020-01-01T17:00:00314_PV_40.0
5712020-01-01T18:00:00314_PV_40.0
5722020-01-01T19:00:00314_PV_40.0
5732020-01-01T20:00:00314_PV_40.0
5742020-01-01T21:00:00314_PV_40.0
5752020-01-01T22:00:00314_PV_40.0
5762020-01-01T23:00:00314_PV_40.0
5772020-01-01T00:00:00310_PV_10.0
5782020-01-01T01:00:00310_PV_10.0
5792020-01-01T02:00:00310_PV_10.0
5802020-01-01T03:00:00310_PV_10.0
5812020-01-01T04:00:00310_PV_10.0
5822020-01-01T05:00:00310_PV_10.0
5832020-01-01T06:00:00310_PV_10.0
5842020-01-01T07:00:00310_PV_138.2
5852020-01-01T08:00:00310_PV_161.4
5862020-01-01T09:00:00310_PV_166.8
5872020-01-01T10:00:00310_PV_170.4
5882020-01-01T11:00:00310_PV_169.6
5892020-01-01T12:00:00310_PV_167.6
5902020-01-01T13:00:00310_PV_167.0
5912020-01-01T14:00:00310_PV_162.8
5922020-01-01T15:00:00310_PV_143.8
5932020-01-01T16:00:00310_PV_10.0
5942020-01-01T17:00:00310_PV_10.0
5952020-01-01T18:00:00310_PV_10.0
5962020-01-01T19:00:00310_PV_10.0
5972020-01-01T20:00:00310_PV_10.0
5982020-01-01T21:00:00310_PV_10.0
5992020-01-01T22:00:00310_PV_10.0
6002020-01-01T23:00:00310_PV_10.0
6012020-01-01T00:00:00215_PV_10.0
6022020-01-01T01:00:00215_PV_10.0
6032020-01-01T02:00:00215_PV_10.0
6042020-01-01T03:00:00215_PV_10.0
6052020-01-01T04:00:00215_PV_10.0
6062020-01-01T05:00:00215_PV_10.0
6072020-01-01T06:00:00215_PV_10.0
6082020-01-01T07:00:00215_PV_1127.6
6092020-01-01T08:00:00215_PV_1164.6
6102020-01-01T09:00:00215_PV_1172.2
6112020-01-01T10:00:00215_PV_1173.2
6122020-01-01T11:00:00215_PV_1170.0
6132020-01-01T12:00:00215_PV_1169.0
6142020-01-01T13:00:00215_PV_1161.8
6152020-01-01T14:00:00215_PV_1143.2
6162020-01-01T15:00:00215_PV_182.2
6172020-01-01T16:00:00215_PV_10.0
6182020-01-01T17:00:00215_PV_10.0
6192020-01-01T18:00:00215_PV_10.0
6202020-01-01T19:00:00215_PV_10.0
6212020-01-01T20:00:00215_PV_10.0
6222020-01-01T21:00:00215_PV_10.0
6232020-01-01T22:00:00215_PV_10.0
6242020-01-01T23:00:00215_PV_10.0
6252020-01-01T00:00:00313_PV_10.0
6262020-01-01T01:00:00313_PV_10.0
6272020-01-01T02:00:00313_PV_10.0
6282020-01-01T03:00:00313_PV_10.0
6292020-01-01T04:00:00313_PV_10.0
6302020-01-01T05:00:00313_PV_10.0
6312020-01-01T06:00:00313_PV_10.0
6322020-01-01T07:00:00313_PV_162.2
6332020-01-01T08:00:00313_PV_195.6
6342020-01-01T09:00:00313_PV_1116.8
6352020-01-01T10:00:00313_PV_1128.4
6362020-01-01T11:00:00313_PV_1133.2
6372020-01-01T12:00:00313_PV_1128.8
6382020-01-01T13:00:00313_PV_1122.8
6392020-01-01T14:00:00313_PV_1106.8
6402020-01-01T15:00:00313_PV_162.8
6412020-01-01T16:00:00313_PV_10.0
6422020-01-01T17:00:00313_PV_10.0
6432020-01-01T18:00:00313_PV_10.0
6442020-01-01T19:00:00313_PV_10.0
6452020-01-01T20:00:00313_PV_10.0
6462020-01-01T21:00:00313_PV_10.0
6472020-01-01T22:00:00313_PV_10.0
6482020-01-01T23:00:00313_PV_10.0
6492020-01-01T00:00:00101_PV_40.0
6502020-01-01T01:00:00101_PV_40.0
6512020-01-01T02:00:00101_PV_40.0
6522020-01-01T03:00:00101_PV_40.0
6532020-01-01T04:00:00101_PV_40.0
6542020-01-01T05:00:00101_PV_40.0
6552020-01-01T06:00:00101_PV_40.0
6562020-01-01T07:00:00101_PV_428.8
6572020-01-01T08:00:00101_PV_435.4
6582020-01-01T09:00:00101_PV_435.8
6592020-01-01T10:00:00101_PV_437.4
6602020-01-01T11:00:00101_PV_438.6
6612020-01-01T12:00:00101_PV_437.8
6622020-01-01T13:00:00101_PV_435.8
6632020-01-01T14:00:00101_PV_431.4
6642020-01-01T15:00:00101_PV_420.4
6652020-01-01T16:00:00101_PV_40.0
6662020-01-01T17:00:00101_PV_40.0
6672020-01-01T18:00:00101_PV_40.0
6682020-01-01T19:00:00101_PV_40.0
6692020-01-01T20:00:00101_PV_40.0
6702020-01-01T21:00:00101_PV_40.0
6712020-01-01T22:00:00101_PV_40.0
6722020-01-01T23:00:00101_PV_40.0
6732020-01-01T00:00:00119_PV_10.0
6742020-01-01T01:00:00119_PV_10.0
6752020-01-01T02:00:00119_PV_10.0
6762020-01-01T03:00:00119_PV_10.0
6772020-01-01T04:00:00119_PV_10.0
6782020-01-01T05:00:00119_PV_10.0
6792020-01-01T06:00:00119_PV_10.0
6802020-01-01T07:00:00119_PV_127.2
6812020-01-01T08:00:00119_PV_156.6
6822020-01-01T09:00:00119_PV_174.8
6832020-01-01T10:00:00119_PV_188.2
6842020-01-01T11:00:00119_PV_191.6
6852020-01-01T12:00:00119_PV_190.6
6862020-01-01T13:00:00119_PV_179.2
6872020-01-01T14:00:00119_PV_159.0
6882020-01-01T15:00:00119_PV_127.8
6892020-01-01T16:00:00119_PV_10.0
6902020-01-01T17:00:00119_PV_10.0
6912020-01-01T18:00:00119_PV_10.0
6922020-01-01T19:00:00119_PV_10.0
6932020-01-01T20:00:00119_PV_10.0
6942020-01-01T21:00:00119_PV_10.0
6952020-01-01T22:00:00119_PV_10.0
6962020-01-01T23:00:00119_PV_10.0

Plotting

Take a look at the plotting capabilities in PowerGraphics.jl


This page was generated using Literate.jl.