Giter VIP home page Giter VIP logo

assume's Introduction

ASSUME: Agent-Based Electricity Markets Simulation Toolbox

Lint Status Code Coverage DOI REUSE status

Try examples in Colab

ASSUME is an open-source toolbox for agent-based simulations of European electricity markets, with a primary focus on the German market setup. Developed as an open-source model, its primary objectives are to ensure usability and customizability for a wide range of users and use cases in the energy system modeling community.

Introduction

A unique feature of the ASSUME toolbox is its integration of Deep Reinforcement Learning methods into the behavioral strategies of market agents. The model offers various predefined agent representations for both the demand and generation sides, which can be used as plug-and-play modules, simplifying the reinforcement of learning strategies. This setup enables research into new market designs and dynamics in energy markets.

Documentation

Installation

You can install ASSUME using pip. Choose the appropriate installation method based on your needs:

Using pip

To install the core package:

pip install assume-framework

To install with reinforcement learning capabilities:

pip install assume-framework[learning]

We also include market clearing algorithms for complex bids. These clearing algorithms require pyomo and a solver (we use GLPK). To install the package with these capabilities, use:

pip install assume-framework[optimization]

To install with testing capabilities:

pip install assume-framework[test]

Timescale Database and Grafana Dashboards

If you want to benefit from a supported database and integrated Grafana dashboards for scenario analysis, you can use the provided Docker Compose file.

Follow these steps:

  1. Clone the repository and navigate to its directory:
git clone https://github.com/assume-framework/assume.git
cd assume
  1. Start the database and Grafana using the following command:
docker-compose up -d

This will launch a container for TimescaleDB and Grafana with preconfigured dashboards for analysis. You can access the Grafana dashboards at http://localhost:3000.

Using Learning Capabilities

If you intend to use the reinforcement learning capabilities of ASSUME and train your agents, make sure to install Torch. Detailed installation instructions can be found here.

Trying out ASSUME and the provided Examples

To ease your way into ASSUME we provided some examples and tutorials. The former are helpful if you would like to get an impression of how ASSUME works and the latter introduce you into the development of ASSUME.

The Tutorials

The tutorials work completly detached from your own machine on google colab. They provide code snippets and task that show you, how you can work with the software package one your own. We have two tutorials prepared, one for introducing a new unit and one for getting reinforcement learning ready on ASSUME.

How to configure a new unit in ASSUME? Coming Soon

How to introduce reinforcement learning to ASSUME?

Open Learning Tutorial in Colab

The Examples

To explore the provided examples, follow these steps:

  1. Clone the repository and navigate to its directory:
git clone https://github.com/assume-framework/assume.git
cd assume
  1. Quick Start:

There are three ways to run a simulation:

  • Local:
python examples/examples.py
  • Using the provided Docker setup:

If you have installed Docker and set up the Docker Compose file previously, you can select 'timescale' in examples.py before running the simulation. This will save the simulation results in a Timescale database, and you can access the Dashboard at http://localhost:3000.

  • Using the CLI to run simulations:
assume -s example_01b -db "postgresql://assume:assume@localhost:5432/assume"

For additional CLI options, run assume -h.

Development

If you're contributing to the development of ASSUME, follow these steps:

  1. Install pre-commit:
pip install pre-commit
pre-commit install

To run pre-commit checks directly, use:

pre-commit run --all-files

Release

To release a new version, increase the version in pyproject.toml and create a git tag of the release commit and release notes in GitHub. To push to PyPi run:

rm -r dist
python -m build .
twine upload --repository pypi dist/*

See also: https://twine.readthedocs.io/en/stable/index.html#using-twine

Creating Documentation

First, create an environment that includes the documentation dependencies:

conda env create -f environment_docs.yaml

To generate or update the automatically created docs in docs/source/assume*, run:

sphinx-apidoc -o docs/source -Fa assume

To create and serve the documentation locally, use:

cd docs/source && python -m sphinx . ../build && cd ../.. && python -m http.server --directory docs/build/html

Contributors and Funding

The project is developed by a collaborative team of researchers from INATECH at the University of Freiburg, IISM at Karlsruhe Institute of Technology, Fraunhofer Institute for Systems and Innovation Research, Fraunhofer Institution for Energy Infrastructures and Geothermal Energy, and FH Aachen - University of Applied Sciences. Each contributor brings valuable expertise in electricity market modeling, deep reinforcement learning, demand side flexibility, and infrastructure modeling.

ASSUME is funded by the Federal Ministry for Economic Affairs and Climate Action (BMWK). We are grateful for their support in making this project possible.

License

Copyright 2022-2024 ASSUME developers.

ASSUME is licensed under the GNU Affero General Public License v3.0. This license is a strong copyleft license that requires that any derivative work be licensed under the same terms as the original work. It is approved by the Open Source Initiative.

assume's People

Contributors

maurerle avatar nick-harder avatar kim-mskw avatar adamsjohanna avatar manish-khanra avatar fritzphilipp avatar dominikburkert avatar hendrikwulfert avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.