Skip to main content

OpenModelica Microgrid Gym

Project description

OpenModelica Microgrid Gym

https://travis-ci.org/upb-lea/openmodelica-microgrid-gym.svg?branch=master https://img.shields.io/badge/doc-success-success https://codecov.io/gh/upb-lea/openmodelica-microgrid-gym/branch/master/graph/badge.svg https://img.shields.io/pypi/v/openmodelica_microgrid_gym.svg https://img.shields.io/github/license/upb-lea/openmodelica-microgrid-gym
https://github.com/upb-lea/openmodelica-microgrid-gym/raw/master/docs/pictures/microgrid.jpg

The OpenModelica Microgrid Gym (OMG) package is a software toolbox for the simulation and control optimization of microgrids based on energy conversion by power electronic converters.

The main characteristics of the toolbox are the plug-and-play grid design and simulation in OpenModelica as well as the ready-to-go approach of intuitive reinfrocement learning (RL) approaches through a Python interface.

The OMG toolbox is built upon the OpenAI Gym environment definition framework. Therefore, the toolbox is specifically designed for running reinforcement learning algorithms to train agents controlling power electronic converters in microgrids. Nevertheless, also arbritary classical control approaches can be combined and tested using the OMG interface.

Installation

Install Python Environment

Since it is not possible to install PyFMI, a package which is necessary for the communication between the python interface and the environment, via pip, we recommend to install this package in advance in a conda environment.

  • If conda is NOT installed on your PC, install miniconda for python 3.7:

    $ https://conda.io/en/latest/miniconda.html
  • Create a new conda environment (for example in pycharm)

  • Install PyFMI from condaforge in terminal:

    $ conda install -c conda-forge pyfmi
  • Install OpenModelica MicrogridGym from PyPI (recommended):

    $ pip install openmodelica_microgrid_gym

Installation of OpenModelica

OMG was create by using OMEdit v1.16

Installation of OMEdit might cause some problems with some Arch Linux distributions. In this case, try to download the pre-built virtual machine.

Getting started

The environment is initialized and run like any other OpenAI Gym

import gym

if __name__ == '__main__':
    env = gym.make('openmodelica_microgrid_gym:ModelicaEnv-v1',
                   model_input=['i1p1', 'i1p2', 'i1p3'],
                   model_output=dict(lc1=['inductor1.i', 'inductor2.i', 'inductor3.i']),
                   model_path='grid.network.fmu')

    env.reset()
    for _ in range(1000):
        env.render()
        env.step(env.action_space.sample())  # pick three continous control actions randomly
    env.close()

OMG uses the FMI standard for the exchange of the model between OpenModelica and Python.

An example network consisting out of two inverters, three filters and an inductive load.

https://github.com/upb-lea/openmodelica-microgrid-gym/raw/master/docs/pictures/omedit.jpg

You can either use one of the provided FMUs (Windows and Linux, 64-bit, both included in the grid.network.fmu) or create your own by running:

openmodelica_microgrid_gym\fmu> omc create_fmu.mos

Running the staticctrl.py starts a simulation with a manually tuned cascaded PIPI controller

https://github.com/upb-lea/openmodelica-microgrid-gym/raw/master/docs/pictures/control.jpg

A save Bayesian approach of a reinforcement learning agent is provided under examples/berkamkamp.py.

https://github.com/upb-lea/openmodelica-microgrid-gym/raw/master/docs/pictures/kp_kp_J.png

Citation

Please use the following BibTeX entry for citing us:

@misc{OMG2020,
    title={Towards a Scalable and Flexible Simulation and Testing Environment Toolbox for Intelligent Microgrid Control},
    author={Henrik Bode and Stefan Heid and Daniel Weber and Eyke Hüllermeier and Oliver Wallscheid},
    year={2020},
    eprint={http://arxiv.org/abs/2005.04869},
    archivePrefix={arXiv},
    primaryClass={eess.SY}
}

Contributing

Please refer to the contribution guide.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.1.3 (2020-05-13)

  • proper action and observation space (#14)

  • resolved problem related to environment model_params (#21)


  • documentation improvements (more examples, installation)

0.1.2 (2020-05-04)

  • corrected pip install requirements

0.1.1 (2020-04-22)

  • First release on PyPI.

Project details


Download files

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

Source Distribution

openmodelica_microgrid_gym-0.1.3.tar.gz (1.1 MB view hashes)

Uploaded Source

Built Distribution

openmodelica_microgrid_gym-0.1.3-py2.py3-none-any.whl (44.5 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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