<!--
SPDX-FileCopyrightText: ASSUME Developers
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# ASSUME: Agent-Based Electricity Markets Simulation Toolbox
![Lint Status](https://github.com/assume-framework/assume/actions/workflows/lint-pytest.yaml/badge.svg)
[![Code Coverage](https://codecov.io/gh/assume-framework/assume/branch/main/graph/badge.svg?token=CZ4FO7P57H)](https://codecov.io/gh/assume-framework/assume)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8088760.svg)](https://doi.org/10.5281/zenodo.8088760)
[![REUSE status](https://api.reuse.software/badge/github.com/assume-framework/assume)](https://api.reuse.software/info/github.com/assume-framework/assume)
[![](https://img.shields.io/pypi/v/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)
[![](https://img.shields.io/pypi/pyversions/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)
[![](https://img.shields.io/pypi/l/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)
[![](https://img.shields.io/pypi/status/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)
[![](https://img.shields.io/readthedocs/assume)](https://assume.readthedocs.io/)
[![Try examples in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://github.com/assume-framework/assume/tree/main/examples/notebooks)
**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
- [User Documentation](https://assume.readthedocs.io/en/latest/)
- [Installation Guide](https://assume.readthedocs.io/en/latest/installation.html)
## Installation
You can install ASSUME using pip. Choose the appropriate installation method based on your needs:
### Using pip
To install the core package:
```bash
pip install assume-framework
```
To install with reinforcement learning capabilities:
```bash
pip install 'assume-framework[learning]'
```
We also include network-based market clearing algorithms such as for the re-dispatch or nodal market clearing, which requires the PyPSA library. To install the package with these capabilities, use:
```bash
pip install 'assume-framework[network]'
```
To install with testing capabilities:
```bash
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:
```bash
git clone https://github.com/assume-framework/assume.git
cd assume
```
2. Start the database and Grafana using the following command:
```bash
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](https://pytorch.org/get-started/locally/).
## 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 completely 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?
[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/03_custom_unit_example.ipynb)
How to use reinforcement learning for new market participants in ASSUME?
[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/04_reinforcement_learning_example.ipynb)
How to change and adapt reinforcement learning algorithms in ASSUME?
[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb)
### The Examples
To explore the provided examples, follow these steps:
1. Clone the repository and navigate to its directory:
```bash
git clone https://github.com/assume-framework/assume.git
cd assume
```
2. Quick Start:
There are three ways to run a simulation:
- Local:
```bash
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:
```bash
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:
```bash
pip install pre-commit
pre-commit install
```
To run pre-commit checks directly, use:
```bash
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:
```bash
conda env create -f environment_docs.yaml
```
To generate or update the automatically created docs in `docs/source/assume*`, run:
```bash
sphinx-apidoc -o docs/source -Fa assume
```
To create and serve the documentation locally, use:
```bash
cd docs/source && python -m sphinx . ../build && cd ../.. && python -m http.server --directory docs/build
```
## 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](https://assume.readthedocs.io/en/latest/developers.html).
ASSUME is licensed under the [GNU Affero General Public License v3.0](./LICENSES/AGPL-3.0-or-later.txt). 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](https://opensource.org/licenses/AGPL-3.0).
Raw data
{
"_id": null,
"home_page": null,
"name": "assume-framework",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "agent based simulation, energy market, reinforcement learning, market simulation, simulation",
"author": null,
"author_email": "ASSUME Developers <contact@assume-project.de>",
"download_url": "https://files.pythonhosted.org/packages/8a/e5/f88171b6e7f1ba24c994c814827e175f717e712f709e88a66ae5ea5013d7/assume_framework-0.5.0.tar.gz",
"platform": null,
"description": "<!--\nSPDX-FileCopyrightText: ASSUME Developers\n\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n# ASSUME: Agent-Based Electricity Markets Simulation Toolbox\n\n![Lint Status](https://github.com/assume-framework/assume/actions/workflows/lint-pytest.yaml/badge.svg)\n[![Code Coverage](https://codecov.io/gh/assume-framework/assume/branch/main/graph/badge.svg?token=CZ4FO7P57H)](https://codecov.io/gh/assume-framework/assume)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8088760.svg)](https://doi.org/10.5281/zenodo.8088760)\n[![REUSE status](https://api.reuse.software/badge/github.com/assume-framework/assume)](https://api.reuse.software/info/github.com/assume-framework/assume)\n\n[![](https://img.shields.io/pypi/v/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)\n[![](https://img.shields.io/pypi/pyversions/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)\n[![](https://img.shields.io/pypi/l/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)\n[![](https://img.shields.io/pypi/status/assume-framework.svg)](https://pypi.org/pypi/assume-framework/)\n[![](https://img.shields.io/readthedocs/assume)](https://assume.readthedocs.io/)\n\n[![Try examples in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://github.com/assume-framework/assume/tree/main/examples/notebooks)\n\n**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.\n\n## Introduction\n\nA 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.\n\n\n## Documentation\n\n- [User Documentation](https://assume.readthedocs.io/en/latest/)\n- [Installation Guide](https://assume.readthedocs.io/en/latest/installation.html)\n\n## Installation\n\nYou can install ASSUME using pip. Choose the appropriate installation method based on your needs:\n\n### Using pip\n\nTo install the core package:\n\n```bash\npip install assume-framework\n```\n\nTo install with reinforcement learning capabilities:\n\n```bash\npip install 'assume-framework[learning]'\n```\n\nWe also include network-based market clearing algorithms such as for the re-dispatch or nodal market clearing, which requires the PyPSA library. To install the package with these capabilities, use:\n\n```bash\npip install 'assume-framework[network]'\n```\n\nTo install with testing capabilities:\n\n```bash\npip install 'assume-framework[test]'\n```\n\n### Timescale Database and Grafana Dashboards\n\nIf you want to benefit from a supported database and integrated Grafana dashboards for scenario analysis, you can use the provided Docker Compose file.\n\nFollow these steps:\n\n1. Clone the repository and navigate to its directory:\n\n```bash\ngit clone https://github.com/assume-framework/assume.git\ncd assume\n```\n\n2. Start the database and Grafana using the following command:\n\n```bash\ndocker-compose up -d\n```\n\nThis will launch a container for TimescaleDB and Grafana with preconfigured dashboards for analysis. You can access the Grafana dashboards at `http://localhost:3000`.\n\n### Using Learning Capabilities\n\nIf 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](https://pytorch.org/get-started/locally/).\n\n\n\n## Trying out ASSUME and the provided Examples\n\nTo 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.\n\n### The Tutorials\n\nThe tutorials work completely 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.\n\nHow to configure a new unit in ASSUME?\n[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/03_custom_unit_example.ipynb)\n\nHow to use reinforcement learning for new market participants in ASSUME?\n\n[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/04_reinforcement_learning_example.ipynb)\n\nHow to change and adapt reinforcement learning algorithms in ASSUME?\n\n[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb)\n\n\n### The Examples\n\nTo explore the provided examples, follow these steps:\n\n1. Clone the repository and navigate to its directory:\n\n```bash\ngit clone https://github.com/assume-framework/assume.git\ncd assume\n```\n\n2. Quick Start:\n\nThere are three ways to run a simulation:\n\n- Local:\n\n```bash\npython examples/examples.py\n```\n\n- Using the provided Docker setup:\n\nIf 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`.\n\n- Using the CLI to run simulations:\n\n```bash\nassume -s example_01b -db \"postgresql://assume:assume@localhost:5432/assume\"\n```\n\nFor additional CLI options, run `assume -h`.\n\n## Development\n\nIf you're contributing to the development of ASSUME, follow these steps:\n\n1. Install pre-commit:\n\n```bash\npip install pre-commit\npre-commit install\n```\n\nTo run pre-commit checks directly, use:\n\n```bash\npre-commit run --all-files\n```\n\n### Release\n\nTo release a new version, increase the version in `pyproject.toml` and create a git tag of the release commit and release notes in GitHub.\nTo push to PyPi run:\n\n```\nrm -r dist\npython -m build .\ntwine upload --repository pypi dist/*\n```\n\nSee also: https://twine.readthedocs.io/en/stable/index.html#using-twine\n\n## Creating Documentation\n\nFirst, create an environment that includes the documentation dependencies:\n\n```bash\nconda env create -f environment_docs.yaml\n```\n\nTo generate or update the automatically created docs in `docs/source/assume*`, run:\n\n```bash\nsphinx-apidoc -o docs/source -Fa assume\n```\n\nTo create and serve the documentation locally, use:\n\n```bash\ncd docs/source && python -m sphinx . ../build && cd ../.. && python -m http.server --directory docs/build\n```\n\n## Contributors and Funding\n\nThe 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.\n\nASSUME is funded by the Federal Ministry for Economic Affairs and Climate Action (BMWK). We are grateful for their support in making this project possible.\n\n## License\n\nCopyright 2022-2024 [ASSUME developers](https://assume.readthedocs.io/en/latest/developers.html).\n\nASSUME is licensed under the [GNU Affero General Public License v3.0](./LICENSES/AGPL-3.0-or-later.txt). 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](https://opensource.org/licenses/AGPL-3.0).\n",
"bugtrack_url": null,
"license": "AGPL-3.0-or-later",
"summary": "ASSUME - Agent-Based Electricity Markets Simulation Toolbox",
"version": "0.5.0",
"project_urls": {
"Changelog": "https://assume.readthedocs.io/en/latest/release_notes.html",
"Documentation": "https://assume.readthedocs.io",
"Homepage": "https://assume-project.de/",
"Issues": "https://github.com/assume-framework/assume/issues",
"Repository": "https://github.com/assume-framework/assume"
},
"split_keywords": [
"agent based simulation",
" energy market",
" reinforcement learning",
" market simulation",
" simulation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8b0557711bd818a2309886b13bb999875ab540533faecd47c3b2312e0f66c0b0",
"md5": "ef9c8343503a282b3c9946eb2c9a1aef",
"sha256": "d530e5e2507058f13e1503da56503cb84e087aaec99ecf9b007a4f5b44bbb2f7"
},
"downloads": -1,
"filename": "assume_framework-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ef9c8343503a282b3c9946eb2c9a1aef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 299877,
"upload_time": "2024-12-10T07:54:25",
"upload_time_iso_8601": "2024-12-10T07:54:25.204894Z",
"url": "https://files.pythonhosted.org/packages/8b/05/57711bd818a2309886b13bb999875ab540533faecd47c3b2312e0f66c0b0/assume_framework-0.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8ae5f88171b6e7f1ba24c994c814827e175f717e712f709e88a66ae5ea5013d7",
"md5": "7108bf726bd2d20ceaa0aa714daf3c35",
"sha256": "ebdbe5d1270c2d9e504070677c9af1d7848ab0e08792b1f229f63dd7e8013719"
},
"downloads": -1,
"filename": "assume_framework-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "7108bf726bd2d20ceaa0aa714daf3c35",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 239684,
"upload_time": "2024-12-10T07:54:28",
"upload_time_iso_8601": "2024-12-10T07:54:28.226512Z",
"url": "https://files.pythonhosted.org/packages/8a/e5/f88171b6e7f1ba24c994c814827e175f717e712f709e88a66ae5ea5013d7/assume_framework-0.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-10 07:54:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "assume-framework",
"github_project": "assume",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "assume-framework"
}