Mosaik 2.1 released – mosaik

Mosaik 2.1 released

We just released moasik 2.1. It’s only been about a month since version 2.0, but we already implemented some cool new ideas (some originating from the workshop in Risø last month) and added tons of documentation. So mosaik is now even better, faster and easier to use.

Here is the complete change-log for this version:

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

To get the new version, run pip install -U moasik from within your mosaik virtualenv. If you have any questions or feedback, please come to our mailing list.