MIDAS Smart Nord Data Module

The sndata module, provided by the midas-sndata package, provides a simulator for the Smart Nord Data set.

Installation

This package will usually installed automatically together with midas-mosaik. It is available on pypi, so you can install it manually with

pip install midas-sndata

The Data

The data set is a synthetic data set developed in the research project Smart Nord. The data set consists of 941 individual time series, each of them representing one household. Those time series are further grouped into 8 low-voltage lands of different sizes. The following table gives an overview over the number of households per land as well as a few statistics of the aggregated power consumption.

Land

#Houses

House IDs

MWh/a

avg kW

peak kW

0

41

0 - 40

130

14.8

39.9

1

139

41 - 179

661

75.5

516.6

2

67

180 - 246

323

36.9

148.2

3

57

247 - 303

223

25.5

70.9

4

169

304 - 472

741

84.6

277.9

5

299

473 - 771

1377

157.2

413.7

6

66

772 - 837

309

35.3

97.5

7

103

838 - 940

421

48.1

146.4

The aggregated load of each lands is visualized in this figure:

../_images/smart_nord_lands.png

Usage

The intended use-case for the time simulator is to be used inside of MIDAS. However, it only depends on the midas-util package and be used in any mosaik simulation scenario.

Inside of MIDAS

To use the store inside of MIDAS, simply add powergrid to your modules

my_scenario:
  modules:
    - sndata
    # - ...

and provide a scope and a gridfile:

my_scenario:
  # ...
  sndata_params:
    my_grid_scope:
      household_mapping: {}
      land_mapping: {}

One of those mappings should be filled with actual values but since this depends on the grid, the general format will be described in the Keys section and an example is given at the end of this page.

Any Mosaik Scenario

If you don’t use MIDAS, you can add the sndata manually to your mosaik scenario file. First, the entry in the sim_config:

sim_config = {
    "SmartNordData": {"python": "midas.modules.sndata.simulator:SmartNordDataSimulator"},
    # ...
}

Next, you need to start the simulator (assuming a step_size of 900):

sndata_sim = world.start(
    "SmartNordData",
    step_size=900,
    start_date="2020-01-01 00:00:00+0100",
    data_path="/path/to/folder/where/dataset/is/located/",
    filename="SmartNordProfiles.hdf5",  # this is default
)

Then the models can be started:

land1 = sndata_sim.Land(eidx=0, scaling=1.0)
land2 = sndata_sim.Land(eidx=7, scaling=0.8)
house1 = sndata_sim.Household(eidx=0, scaling=1.1)
house2 = sndata_sim.Household(eidx=940, scaling=2.0)

Finally, the modells need to be connected to other entities:

world.connect(land1, other_entity, "p_mw", "q_mvar")

The Keys of the Smart Nord Data Simulator

This section gives a short description for all of the keys of the sndata module. Keys that are part of every upgrade module will only be mentioned if the actual behavior might be unexpected. First, the keys supported by the base data simulator.

step_size

The step size does not only affect the frequency of the simulator’s step calls but also the access to the data set. The time resolution of the data set is 15 minutes (= 900 seconds). When a lower step_size is used, e.g., 450, then the models will return the same values in every two consecutive steps. With a higher step_size, e.g., 1800, every second value will be skipped.

interpolate

In cases where the time resolution of the data set is larger than the step_size, this key can be used to activate interpolation. It is of type bool and defaults to false. The interpolation is linear and allows to use even a step_size of 1.

randomize_data

This key can be used to activate randomization of the data. It is of type bool and defaults to false. If activated, a normal-distributed noise will be added to the output values. The strength of the noise can be controlled with noise_factor. The randomization is applied after interpolation. If the data set contains P and Q values, noise is calculated individually for both of them.

noise_factor

This key can be used to control the strength of the noise, when randomize_data is used. It is of type float and the default value is 0.2, i.e., the noise is drawn with mean of zero (always) and standard deviation of 0.2 times the standard deviation of the data set for P or Q, respectively.

randomize_cos_phi

If the data set does not have values for Q (which is the case for the Smart Nord data set), the Q value will be calculated based on the value of the cos_phi key. The randomize_cos_phi key allows to randomize the cos_phi value before that calculation. It is of type bool and defaults to false.

On the module level, the sndata_params may also have following key:

load_scaling

This key can be used to scale all load models simultaneously. It does not replace individual scaling, instead it is just another factor which is included in the multiplication. It is of type float and the default value is 1.0.

The following keys are only available on the scope level:

filename

The value of this key holds the filename of the data set file, starting from the location specified by data_path. The value is of type string, the default value is SmartNordProfiles.hdf5, and, usually, there is no need to change this value.

household_mapping

This key allows to configure the models this simulator should create. The mapping depends on the grid in-use and requires information about the available load nodes and the buses they should be connected to. For example, a mapping for a grid with loads at buses 2 and 4, the mapping could look like

household_mapping:
  2: [[0, 1.0], [940, 1.0]]
  4: [[42, 1.2]]

This will be interpreted as: create two household models based on time series with index 0 and 940 and a scaling of 1.0 each. Connect those models to the load node at bus 2. Additionally, create one household model based on time series with index 42 and scaling 1.2 and connect it to the load at bus 4. The models will also automatically connect to the database if any is used.

land_mapping

This key works similar to the household_mapping key but instead of households, lands are created.

Inputs of the Smart Nord Data Simulator

Since this module is a data provider, it has not many inputs:

cos_phi

Set the cos phi for the next step. This input is only relevant if the data set has no Q values and if randomize_cos_phi is set to false.

local_time

(Not yet implemented) If local_time is provided, e.g., by the timesim, then this time will be used to determine the current value from the data set. This input is of type string in the UTC ISO 8601 date format.

Outputs of the Smart Nord Data Simulator

The models of this module have three outputs:

p_mw

Active power output in MW.

q_mvar

Reactive power output in MVAr.

cos_phi

The actual cos phi used in the previous step.

Example

The following example is taken from the default midasmv scenario file.

midasmv_sn:
  parent:
  modules: [store, powergrid, sndata]
  step_size: 15*60
  start_date: 2020-01-01 00:00:00+0100
  end: 1*24*60*60
  store_params:
    filename: midasmv_sn.hdf5
  powergrid_params:
    midasmv:
      gridfile: midasmv
  sndata_params:
    midasmv:
      land_mapping:
        1: [[0, 1.0], [2, 1.0], [3, 2.0], [6, 2.0], [7, 1.0]]
        3: [[2, 1.0], [3, 1.0], [6, 1.0], [7, 1.0]]
        4: [[0, 2.0], [3, 2.0], [7, 1.0]]
        5: [[3, 2.0], [7, 1.0]]
        6: [[0, 2.0], [3, 1.0]]
        7: [[0, 2.0], [2, 1.0], [3, 2.0], [7, 1.0]]
        8: [[0, 1.0], [3, 1.0], [6, 1.0]]
        9: [[2, 1.0], [3, 1.0], [6, 2.0], [7, 1.0]]
        10: [[0, 2.0], [2, 1.0], [3, 1.0], [6, 2.0], [7, 1.0]]
        11: [[0, 1.0], [2, 1.0], [3, 1.0], [6, 2.0], [7, 1.0]]