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
Built Distribution
File details
Details for the file mosaikdemod-0.1.tar.gz
.
File metadata
- Download URL: mosaikdemod-0.1.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 444330fd1d951714e5573a651a8ec0a052d81dd8419685cda40014e840c53a7a |
|
MD5 | a0d72ea675ddc3bf3d5233021f516ebd |
|
BLAKE2b-256 | c0b0bd38ea5e0b375c41b3108b8fb45c99c4b59fe4857cfe0bb65fd60e41c1fb |
Provenance
File details
Details for the file mosaikdemod-0.1-py3-none-any.whl
.
File metadata
- Download URL: mosaikdemod-0.1-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5794dc7911aa281701c44eb07d0ee8398ebc9c2f3895509257e50594bdff29e9 |
|
MD5 | 39f4e369e3e08e5f97056c1a18b9bedc |
|
BLAKE2b-256 | 7f94161924748103c384aefd829253cc4733c6f22d9b9bcb28d920a4b22b7b31 |