Adaptor to use demod simulators in mosaik.
Project description
Demod mosaik adapter
This repository contains adapter classes for all demod classes into mosaik.
This works with mosaik versions 2 and 3.
demod
Demod is a Python library for assembling bottom-up domestic energy demand models.
mosaik
Mosaik’s main goal is to use existing simulators in a common context in order to perform a coordinated simulation of a given (Smart Grid) scenario.
Usage
demo.py show usage example inside a mosaik simulation script.
Adapting a new simulator
If you want to adapt a new demod simulator, you can follow this instruction.
- Import the abstract adapter. If the demod simulator simulates various households, use the Household module. For a single value simulated (ex. climate), use The SingleValue module.
from mosaikdemod.adaptors import AbstractHouseholdsModule
from mosaikdemod.adaptors import AbstractSingleValueModule
- import demod library
import demod
- Inherit from the abstract module
class ComponentSimulator(AbstractHouseholdsModule):
- Specify the attributes of the simulator that can be accessed
attributes_dict = {
'attr_name_in_mosaik': 'get_demod_getter',
'other__attr': 'get_smth_else',
...
}
- Specify the inputs of the simulator that can be accessed
step_inputs_dict = {
'attr_name_in_mosaik': 'step_input_demod',
'other_input': 'input_other',
...
}
- Override the
__init__()
method
def __init__(
self,
simulated_component='CompName', # Name of what is simulated used for mosaik instances
default_simulator=demod.simulators.example_simulators.ExampleSimulator, # The simulator class you want to simulate
step_size=60 # The mosaik step size (depend on your definition)
):
super().__init__(simulated_component, default_simulator, step_size)
- Import your simulator to your mosaik scenario script.
# Define the Simulator
sim_config = {
...
'CompNameSimulator': {
'python': 'python_file_of_the_sim:ComponentSimulator',
},
...
}
# Instantiate the simulator
sim = world.start('CompNameSimulator')
# Instantiate the households with parameters
component = actsim.HouseholdsGroupCompName(
inputs_params={ # demod init params of sim
'n_households': n_households,
'start_datetime': START_DATETIME,
...
}
)
# OR instantiate a SingleValue simulator (remove HouseholdsGroup)
component = actsim.CompName(
inputs_params={ # demod init params of sim
'start_datetime': START_DATETIME,
...
}
)
- Connect the simulators. You can connect a whole household group to another one if you use 2 demod components. Or you can also connect all the households individually by calling the children method
# Connect 2 demod components
# comp1 passes attr to comp2
world.connect(component1, component2, 'attr_name_in_mosaik')
# Connect 2 demod components with single value
# component_single_value passes attr to comp2
world.connect(component_single_value, component2, 'attr_name_in_mosaik')
# Connect a single household using the children
world.connect(component.children[42], other_mosaik_comp, 'attr_name_in_mosaik')
Examples
Some examples can be found in simulator_mosaik_modular.py.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mosaikdemod-0.1.post1.tar.gz
(18.1 kB
view hashes)
Built Distribution
Close
Hashes for mosaikdemod-0.1.post1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6863bd997a7aef30710b6bf6a32ca1cc7488df45550755e32a875a1a85b788c |
|
MD5 | 75342f3ddac5bb60142f502a3b3ec9c1 |
|
BLAKE2b-256 | ec815bb9589e9c208efcd69085ed27e93da4077d1e6888fdcedfe17aa72945c6 |