Energy System Simulation and Optimization
An open-source energy optimization system that integrates renewable energy sources, such as photovoltaic (PV) systems, battery storage, and smart load management solutions.
https://github.com/akkudoktor-eos/eos
Category: Energy Systems
Sub Category: Energy System Modeling Frameworks
Keywords from Contributors
transforms measur alerting profiles chart file-uploader certificate routes archiving optimize
Last synced: about 6 hours ago
JSON representation
Repository metadata
This repository features an Energy Optimization System (EOS) that optimizes energy distribution, usage for batteries, heat pumps& household devices. It includes predictive models for electricity prices (planned), load forecasting& dynamic optimization to maximize energy efficiency & minimize costs. Founder Dr. Andreas Schmitz (YouTube @akkudoktor)
- Host: GitHub
- URL: https://github.com/akkudoktor-eos/eos
- Owner: Akkudoktor-EOS
- License: other
- Created: 2024-02-16T11:13:56.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-21T17:27:33.000Z (7 days ago)
- Last Synced: 2025-04-21T21:03:22.042Z (7 days ago)
- Language: Python
- Homepage: https://akkudoktor.net
- Size: 29.2 MB
- Stars: 1,022
- Watchers: 58
- Forks: 83
- Open Issues: 20
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
README.md
Energy System Simulation and Optimization
This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period.
Documentation can be found at Akkudoktor-EOS.
Getting Involved
See CONTRIBUTING.md.
System requirements
- Python >= 3.11, < 3.13
- Architecture: amd64, aarch64 (armv8)
- OS: Linux, Windows, macOS
Note: For Python 3.13 some dependencies (e.g. Pendulum) are not yet available on https://pypi.org and have to be manually compiled (a recent Rust installation is required).
Other architectures (e.g. armv6, armv7) are unsupported for now, because a multitude of dependencies are not available on https://piwheels.org and have to be built manually (a recent Rust installation and GCC are required, Python 3.11 is recommended).
Installation
Docker images (amd64/aarch64) can be found at akkudoktor/eos.
Following sections describe how to locally start the EOS server on http://localhost:8503
.
Run from source
Install dependencies in virtual environment:
Linux:
python -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/pip install -e .
Windows:
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\pip install -e .
Finally, start the EOS server to access it at http://localhost:8503
(API docs at http://localhost:8503/docs
):
Linux:
.venv/bin/python src/akkudoktoreos/server/eos.py
Windows:
.venv\Scripts\python src/akkudoktoreos/server/eos.py
Docker
Start EOS with following command to access it at http://localhost:8503
(API docs at http://localhost:8503/docs
):
docker compose up
Configuration
This project uses the EOS.config.json
file to manage configuration settings.
Default Configuration
A default configuration file default.config.json
is provided. This file contains all the necessary configuration keys with their default values.
Custom Configuration
Users can specify a custom configuration directory by setting the environment variable EOS_DIR
.
- If the directory specified by
EOS_DIR
contains an existingconfig.json
file, the application will use this configuration file. - If the
EOS.config.json
file does not exist in the specified directory, thedefault.config.json
file will be copied to the directory asEOS.config.json
.
Configuration Updates
If the configuration keys in the EOS.config.json
file are missing or different from those in default.config.json
, they will be automatically updated to match the default settings, ensuring that all required keys are present.
Classes and Functionalities
This project uses various classes to simulate and optimize the components of an energy system. Each class represents a specific aspect of the system, as described below:
-
Battery
: Simulates a battery storage system, including capacity, state of charge, and now charge and discharge losses. -
PVForecast
: Provides forecast data for photovoltaic generation, based on weather data and historical generation data. -
Load
: Models the load requirements of a household or business, enabling the prediction of future energy demand. -
Heatpump
: Simulates a heat pump, including its energy consumption and efficiency under various operating conditions. -
Strompreis
: Provides information on electricity prices, enabling optimization of energy consumption and generation based on tariff information. -
EMS
: The Energy Management System (EMS) coordinates the interaction between the various components, performs optimization, and simulates the operation of the entire energy system.
These classes work together to enable a detailed simulation and optimization of the energy system. For each class, specific parameters and settings can be adjusted to test different scenarios and strategies.
Customization and Extension
Each class is designed to be easily customized and extended to integrate additional functions or improvements. For example, new methods can be added for more accurate modeling of PV system or battery behavior. Developers are invited to modify and extend the system according to their needs.
Server API
See the Swagger API documentation for detailed information: EOS OpenAPI Spec
Further resources
Owner metadata
- Name: Akkudoktor-EOS
- Login: Akkudoktor-EOS
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/157137710?v=4
- Repositories: 1
- Last ynced at: 2024-05-16T15:01:38.559Z
- Profile URL: https://github.com/Akkudoktor-EOS
GitHub Events
Total
- Create event: 140
- Issues event: 195
- Watch event: 859
- Delete event: 152
- Member event: 8
- Issue comment event: 578
- Push event: 539
- Gollum event: 31
- Pull request event: 472
- Pull request review comment event: 314
- Pull request review event: 355
- Fork event: 62
Last Year
- Create event: 140
- Issues event: 195
- Watch event: 859
- Delete event: 152
- Member event: 8
- Issue comment event: 578
- Push event: 539
- Gollum event: 31
- Pull request event: 472
- Pull request review comment event: 314
- Pull request review event: 355
- Fork event: 62
Committers metadata
Last synced: 7 days ago
Total Commits: 519
Total Committers: 26
Avg Commits per committer: 19.962
Development Distribution Score (DDS): 0.68
Commits in past year: 480
Committers in past year: 25
Avg Commits per committer in past year: 19.2
Development Distribution Score (DDS) in past year: 0.731
Name | Commits | |
---|---|---|
Andreas | d****e@g****e | 166 |
Normann | g****b@k****m | 92 |
dependabot[bot] | 4****] | 85 |
Dominique Lasserre | l****d@g****m | 63 |
Bobby Noelte | b****e@g****m | 44 |
Dominik Siebel | d****l@t****m | 16 |
Daniel Molkentin | d****l@m****e | 10 |
Michael Osthege | m****e@o****m | 10 |
Dennis | 7****X | 4 |
celle1234 | 6****4 | 3 |
Fortrieb | d****v@f****g | 3 |
Chris | g****t@n****e | 2 |
Chris | 4****h | 2 |
Eric | 1****h | 2 |
Georg Z. | g****z@g****e | 2 |
Ikko Eltociear Ashimine | e****r@g****m | 2 |
Theo Weiss | t****o@m****g | 2 |
Yunus AYDIN | a****s@g****m | 2 |
thiloms | 1****s | 2 |
BerndCzech | t****h@g****m | 1 |
Christian Heinrich Hohlfeld | c****d@g****m | 1 |
Jakob Moecke | j****o@g****m | 1 |
Jürgen Eckel | e****j | 1 |
Your Name | y****u@e****m | 1 |
Sebastian Struß | c****e@x****e | 1 |
wenzul | w****l | 1 |
Committer domains:
- x2d2.de: 1
- m1theo.org: 1
- garnix.de: 1
- nootch.de: 1
- fortrieb.org: 1
- molkentin.de: 1
- trivago.com: 1
- koldrack.com: 1
- gmx.de: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 186
Total pull requests: 469
Average time to close issues: 22 days
Average time to close pull requests: 4 days
Total issue authors: 37
Total pull request authors: 27
Average comments per issue: 3.03
Average comments per pull request: 1.22
Merged pull request: 349
Bot issues: 0
Bot pull requests: 101
Past year issues: 186
Past year pull requests: 469
Past year average time to close issues: 22 days
Past year average time to close pull requests: 4 days
Past year issue authors: 37
Past year pull request authors: 27
Past year average comments per issue: 3.03
Past year average comments per pull request: 1.22
Past year merged pull request: 349
Past year bot issues: 0
Past year bot pull requests: 101
Top Issue Authors
- drbacke (78)
- NormannK (17)
- b0661 (12)
- njoerd114 (12)
- RobertHerter (12)
- XHalamaX (5)
- danimo (4)
- mschnell1 (3)
- Isengo1989 (3)
- sandboxcode (3)
- celle1234 (3)
- aydinnyunus (2)
- ss89 (2)
- georg41980 (2)
- briearn (2)
Top Pull Request Authors
- NormannK (149)
- dependabot[bot] (101)
- b0661 (59)
- Lasall (57)
- drbacke (36)
- michaelosthege (11)
- noootch (8)
- fortrieb (8)
- danimo (6)
- dsiebel (4)
- ChristianHohlfeld (4)
- niklasbeinghaus (3)
- BerndCzech (3)
- celle1234 (3)
- e-hirsch (2)
Top Issue Labels
- bug (72)
- enhancement (33)
- Stale (15)
- simulation (11)
- refactoring / maintenance (11)
- documentation (10)
- good first issue (8)
- optimization (5)
- help wanted (4)
- prediction (4)
- question (2)
- wontfix (2)
- hacktoberfest (1)
- docker (1)
- windows (1)
- feature request (1)
- stale (1)
Top Pull Request Labels
- dependencies (101)
- python (28)
- refactoring / maintenance (6)
- optimization (2)
Dependencies
- Flask ==3.0.3
- Jinja2 ==3.1.4
- Mako ==1.3.5
- Markdown ==3.7
- MarkupSafe ==2.1.5
- Pygments ==2.18.0
- Werkzeug ==3.0.4
- absl-py ==2.1.0
- astunparse ==1.6.3
- blinker ==1.8.2
- certifi ==2024.8.30
- charset-normalizer ==3.3.2
- click ==8.1.7
- contourpy ==1.3.0
- cycler ==0.12.1
- deap ==1.4.1
- flatbuffers ==24.3.25
- fonttools ==4.53.1
- gast ==0.6.0
- google-pasta ==0.2.0
- grpcio ==1.66.1
- h5py ==3.11.0
- idna ==3.8
- itsdangerous ==2.2.0
- joblib ==1.4.2
- keras ==3.5.0
- kiwisolver ==1.4.7
- libclang ==18.1.1
- mariadb ==1.1.10
- markdown-it-py ==3.0.0
- matplotlib ==3.9.2
- mdurl ==0.1.2
- ml-dtypes ==0.4.0
- namex ==0.0.8
- numpy ==1.26.4
- opt-einsum ==3.3.0
- optree ==0.12.1
- packaging ==24.1
- pandas ==2.2.2
- pdoc3 ==0.11.1
- pillow ==10.4.0
- protobuf ==4.25.4
- pyparsing ==3.1.4
- python-dateutil ==2.9.0.post0
- pytz ==2024.1
- requests ==2.32.3
- rich ==13.8.1
- scikit-learn ==1.5.1
- scipy ==1.14.1
- setuptools ==74.1.2
- six ==1.16.0
- tensorboard ==2.17.1
- tensorboard-data-server ==0.7.2
- tensorflow ==2.17.0
- termcolor ==2.4.0
- threadpoolctl ==3.5.0
- typing_extensions ==4.12.2
- tzdata ==2024.1
- urllib3 ==2.2.2
- wheel ==0.44.0
- wrapt ==1.16.0
- actions/attest-build-provenance v1 composite
- actions/download-artifact v4 composite
- actions/github-script v6 composite
- actions/upload-artifact v4 composite
- docker/build-push-action v6 composite
- docker/login-action v3 composite
- docker/metadata-action v5 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- actions/checkout v4 composite
- actions/setup-python v5 composite
- pre-commit/action v3.0.1 composite
- actions/checkout v2 composite
- actions/setup-python v5 composite
- python ${PYTHON_VERSION}-slim build
- myst-parser ==4.0.0 development
- pre-commit * development
- pytest ==8.3.3 development
- pytest-cov ==5.0.0 development
- pytest-xprocess ==1.0.2 development
- sphinx ==8.0.2 development
- sphinx_rtd_theme ==3.0.1 development
Score: 10.206993760334795