Skip to main content

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.1.3 – 2015-04-17

  • [CHANGE] Improvments of the process of stopping simulators after a simulation

  • [CHANGE] The required version of simpy and simpy.io are updated to solve a problem in executing the Demo scenario

  • [FIX] Some minor bugs

2.1.2 – 2014-10-29

  • [FIX] World.shutdown() now checks if the socket still exists before attempting to close it.

  • [FIX] Fixed a bug that made the last extra method of a simulator shadow all previous ones.

2.1.1 – 2014-10-28

  • [NEW] World.run() now prints a warning if you forget to connect a simulator’s entities.

  • [FIX] Fixed some problems with the data-flow cache.

2.1 – 2014-10-24

  • [NEW] Mosaik can now perform real-time simulations. Before, this functionality needed to be implemented by simulators. Now it’s just World.run(until=x, rt_factor=y), where rt_factor defines the simulation speed relative to the wall-clock time (issue #24).

  • [NEW] Simulators can now expose extra methods via their API that can be called from a mosaik scenario. This allows you to, e.g., store static data in a data base. These extra API methods need to be specified in the simulator’s meta data (issue #26).

  • [NEW] util.connect_many_to_one() helper function.

  • [NEW] More and better documentation:

    • Tutorial for integrating simulators, control strategies and for creating scenarios.

    • Sim API description

    • Scenario API description

    • Sim Manager documentation

    • Scheduler documentation

    • Discussion of design decisions

    • Logo, colors, CI

  • [NEW] Added util.sync_call() which eases calling proxied methods of a simulator synchronously.

  • [CHANGE] The rel attribute in the entity description returned by create() is now optional.

  • [CHANGE] Moved proxied methods from SimProxy to SimProxy.proxy in order to avoid potential name clashes with other attributes.

  • [CHANGE] Check a simulator’s models and extra API methods for potential name clashes with the built-in API methods.

  • [CHANGE] The argument execution_graph of World was renamed to debug. The execution graph now also stores the time after a simulation step (in addition to the time before the step).

  • [FIX] issue #22: The asynchronous requests get_data() and set_data() now check if the async_requests flag was set in World.connect().

  • [FIX] issue #23: finalize() is now called for in-process Python simulators.

  • [FIX] issue #27: Dramatically improved simulation performance (30 times as fast in some cases) if simulators use different step sizes (e.g. 1 minute and 1 hour) by improving some internal data structures.

2.0 – 2014-09-22

  • Mosaik 2 is a complete rewrite of mosaik 1 in order to improve its maintainability and flexibility.

  • 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.

    • The database is now a separate package, see mosaik-hdf5.

    • The old web UI is gone.

  • Mosaik now consists of four core components with the following feature sets:

    • mosaik Sim 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, set_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:

You can find information about older versions on the history page

Authors

The original concepts for mosaik were developed by Steffen Schütte and Stefan Scherfke.

The author of mosaik version 2 is Stefan Scherfke.

Okko Nannen and Florian Schlögl joined the team in May / July 2014.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mosaik-2.1.3.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mosaik-2.1.3-py2.py3-none-any.whl (27.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file mosaik-2.1.3.tar.gz.

File metadata

  • Download URL: mosaik-2.1.3.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mosaik-2.1.3.tar.gz
Algorithm Hash digest
SHA256 f2a8371694a7220cfe73b155b575e977a044d9b103ef86136d13bd9455928b4b
MD5 83a3880758f2f22c96fef860942fdcba
BLAKE2b-256 7e88cd6eaa1d7936f69ebc257288bdc7216db276ea88a32acb853e63f04cb7e9

See more details on using hashes here.

File details

Details for the file mosaik-2.1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for mosaik-2.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d67e04a0be5a4ad602eb5612292b98efa2638d37348b607d580094987a8db723
MD5 87975cf8ef6ce12cd87da5ea81367e6a
BLAKE2b-256 7554e3035a08bf76684cb1cdf0a6ae858a2713cba27b34a6dc955914799fe98a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page