Metadata-Version: 2.0
Name: mosaik
Version: 2.0
Summary: Mosaik is a flexible Smart-Grid co-simulation framework.
Home-page: https://moaik.offis.de
Author: Stefan Scherfke
Author-email: stefan.scherfke at offis.de
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: networkx (>=1.8.1)
Requires-Dist: mosaik-api (>=2.0)
Requires-Dist: simpy (>=3.0.5)
Requires-Dist: simpy.io (>=0.2)

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

__ http://pip.readthedocs.org/en/latest/installing.html
__ http://virtualenv.readthedocs.org/en/latest/

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`__.

__ https://bitbucket.org/mosaik/mosaik/issues


Changelog
=========

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:

  - A high-level implementation of the mosaik 2 API currently exists for
    Python__ and Java__.

  - *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`__

__ https://bitbucket.org/mosaik/mosaik-hdf5
__ https://bitbucket.org/mosaik/mosaik-api-python
__ https://bitbucket.org/mosaik/mosaik-api-java
__ https://mosaik.readthedocs.org/en/latest/about/history.html


Authors
=======

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

The author of mosaik version 2 is Stefan Scherfke.


