Mosaik is a flexible Smart-Grid co-simulation framework.
Project description
Mosaik
Mosaik is a simulation compositor for Smart Grid simulations.
It lets you re-use existing simulators and couple them to simulate large-scale Smart Grid scenarios. Mosaik offers powerful mechanisms to specify and compose these scenarios.
Example
A simple demo scenario with mosaik:
>>> import mosaik
>>>
>>> sim_config = {
... 'ExampleSim': {'python': 'example_sim.mosaik:ExampleSim'},
... }
>>>
>>> def create_scenario(world):
... exsim1 = world.start('ExampleSim')
... exsim2 = world.start('ExampleSim')
...
... a = [exsim1.A(init_val=0) for i in range(3)]
... b = exsim2.B.create(2, init_val=0)
...
... for i, j in zip(a, b):
... world.connect(i, j, ('val_out', 'val_in'))
>>>
>>> world = mosaik.World(sim_config)
>>> create_scenario(world)
>>> world.run(until=2)
Progress: 25.00%
Progress: 50.00%
Progress: 75.00%
Progress: 100.00%
Installation
Mosaik requires Python >= 3.3. Use pip to install it, preferably into a virtualenv:
$ pip install mosaik
Documentation, Source code and issues
The documentation is available at https://mosaik.readthedocs.org.
Please report bugs and ideas for improvment to our issue tracker.
Changelog
2.0a2 – 2014-05-05
[NEW] Preliminary documentation and installation instructions (https://mosaik.readthedocs.org)
[NEW] Simulators can now set data to other simulators using the asynchronous request set_data (issue #1).
[NEW] There is now a start timeout for external processes (issue #11).
[CHANGE] Mosaik now raises an error if a simulator uses the wrong API version (issue #4).
[CHANGE] Mosaik prints everything to stdout instead of using the Python logging module (issue #7).
[FIX] issue #2. Scheduling now works properly for processes using async. requests. New keyword argument async_requests for World.connect().
[FIX] issue #3. Local (in-process) Simulators can now also perform async. requests to mosaik (get_progress, get_related_entities, get_data, set_data).
[FIX] issue #8. Cleaned up the code a bit.
[FIX] issue #10. Tests for the sim manager improved.
2.0a1 – 2014-03-26
Mosaik 2 is a complete rewrite of mosaik 1 in order to improve its maintainability and flexibility. It is still an early alpha version and neither feature complete nor bug free.
Removed features:
The mosl DSL (including Eclipse xtext and Java) are now gone. Mosaik now only uses Python.
Mosaik now longer has executables but is now used as a library.
The platform manager is gone.
Mosaik no longer includes a database.
Mosaik no longer includes a web UI.
Mosaik now consists of four core components with the following feature sets:
mosaik API
The API has bean cleaned up and simplified.
Simulators and control strategies share the same API.
There are only four calls from mosaik to a simulator: init, create, step and get_data.
Simulators / processes can make asynchronous requests to mosaik during a step: get_progress, get_related_entities, get_data.
ZeroMQ with JSON is replaced by plain network sockets with JSON.
Scenarios:
Pure Python is now used to describe scenarios. This offers you more flexibility to create complex scenarios.
Scenario creation simplified: Start a simulator to get a model factory. Use the factory to create model instances (entities). Connect entities. Run simulation.
Connection rules are are no based on a primitive connect function that only connects two entities with each other. On top of that, any connection strategy can be implemented.
Simulation Manager:
Simulators written in Python 3 can be executed in process.
Simulators can be started as external processes.
Mosaik can connect to an already running instance of a simulator. This can be used as a replacement for the now gone platform manager.
Simulation execution:
The simulation is now event-based. No schedule and no synchronization points need to be computed.
Simulators can have different and varying step sizes.
Mosaik ecosystem:
A high-level implementation of the mosaik 2 API currently only exists for Python. See https://bitbucket.org/mosaik/mosaik-api-python.
mosaik-web is a simple visualization for mosaik simulations. See https://bitbucket.org/mosaik/mosaik-web.
mosaik-pypower is an adapter for the PYPOWER load flow analysis library. See https://bitbucket.org/mosaik/mosaik-pypower and https://github.com/rwl/PYPOWER.
mosaik-csv and mosaik-householdsim are simple demo simulators that you can use to “simulate” CSV data sets and load-profile based households. See https://bitbucket.org/mosaik/mosaik-csv and https://bitbucket.org/mosaik/mosaik-householdsim.
There is a repository containing a simple demo scenario for mosaik. See https://bitbucket.org/mosaik/mosaik-demo.
You can find information about older versions on the history page
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mosaik-2.0a2.tar.gz.
File metadata
- Download URL: mosaik-2.0a2.tar.gz
- Upload date:
- Size: 822.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02fe2e59acedc2b92508f5e1c03b32957ae611d186e53f667620a874c2ec8c32
|
|
| MD5 |
912771b7b12c8a069a30793f84849d0b
|
|
| BLAKE2b-256 |
9bf58cc16384e181ea2e7d3ed9d8fbb595efad11682705290c794690147262a5
|
File details
Details for the file mosaik-2.0a2-py2.py3-none-any.whl.
File metadata
- Download URL: mosaik-2.0a2-py2.py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b244b7409bf43dd4df96ad5c1a63f11fd0b21c2200d9b0f90e28de6a881a9a9a
|
|
| MD5 |
96515ee81e05dd9d58c6136ee4695280
|
|
| BLAKE2b-256 |
6cb42fe25f6add70cd08d59f834219bab27cda210903f654c07a1641216aa7f7
|