FINE
Provides a framework for modeling, optimizing and assessing energy systems.
https://github.com/FZJ-IEK3-VSA/FINE
Category: Energy Systems
Sub Category: Energy System Modeling Frameworks
Keywords from Contributors
gdal gdal-library general-purpose geospatial-data raster-data aggregation energy-system typical-periods geospatial-analysis renewable-energy
Last synced: about 21 hours ago
JSON representation
Repository metadata
The ETHOS.FINE python package provides a framework for modeling, optimizing and assessing energy systems
- Host: GitHub
- URL: https://github.com/FZJ-IEK3-VSA/FINE
- Owner: FZJ-IEK3-VSA
- License: other
- Created: 2018-07-02T14:48:55.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-04-03T12:13:56.000Z (25 days ago)
- Last Synced: 2025-04-21T12:43:19.665Z (7 days ago)
- Language: Python
- Homepage: https://vsa-fine.readthedocs.io
- Size: 517 MB
- Stars: 77
- Watchers: 14
- Forks: 45
- Open Issues: 5
- Releases: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
README.md
ETHOS.FINE - Framework for Integrated Energy System Assessment
The ETHOS.FINE python package provides a framework for modeling, optimizing and assessing energy systems. With the provided framework, systems with multiple regions, commodities and time steps can be modeled. Target of the optimization is the minimization of the total annual cost while considering technical and environmental constraints. Besides using the full temporal resolution, an interconnected typical period storage formulation can be applied, that reduces the complexity and computational time of the model.
This Readme provides information on the installation of the package. For further information have a look at the documentation.
ETHOS.FINE is used for the modelling of a diverse group of optimization problems within the Energy Transformation PatHway Optimization Suite (ETHOS) at IEK-3.
If you want to use ETHOS.FINE in a published work, please kindly cite following publication which gives a description of the first stages of the framework. The python package which provides the time series aggregation module and its corresponding literature can be found here.
Installation from conda-forge
If you would like to run ETHOS.FINE for your analysis we recommend to install it directly from conda-forge into a new Python environment with
mamba create --name fine --channel conda-forge fine
Note on Mamba vs.Conda: mamba
commands can be substitued with conda
. We highly recommend using (Micro-)Mamba instead of Conda. The recommended way to use Mamba on your system is to install the Miniforge distribution. They offer installers for Windows, Linux and OS X. In principle, Conda and Mamba are interchangeable. The commands and concepts are the same. The distributions differ in the methodology for determining dependencies when installing Python packages. Mamba relies on a more modern methodology, which (with the same result) leads to very significant time savings during the installation of ETHOS.FINE. Switching to Mamba usually does not lead to any problems, as it is virtually identical to Conda in terms of operation.
Note on the solver: The mamba/conda installation comes with GLPK (installation for Windows) as Mixed Integer Linear Programming (MILP) solver. If you want to solve large problems it is highly recommended to install GUROBI. See "Installation of an optimization solver" for more information.
Installation from pipy
The functionality of ETHOS.FINE depends on the following C libraries that need to be installed on your system. If you do not know how to install those, consider installing from conda-forge.
Create a virtual environment in the ETHOS.FINE folder and activate it
python -m venv .venv
source .venv/bin/activate
Install ETHOS.FINE with
python -m pip install fine
Installation of an optimization solver
ETHOS.FINE requires an MILP solver which can be accessed using PYOMO. It searches for the following solvers in this order:
GUROBI
This solver is recommended due to better performance but requires license (free academic version available). It is set as the default solver.
The installation requires the following three components:
- Gurobi Optimizer
- In order to download the software you need to create an account and obtain a license.
- Gurobi license
- The license needs to be installed according to the instructions in the registration process.
- Gurobi python api
- The python api can be installed according to this instruction.
GLPK
This solver is installed with the ETHOS.FINE environment. A complete installation instruction for Windows can be found here.
CBC
Installation procedure can be found here.
Examples
A number of examples shows the capabilities of ETHOS.FINE.
- 00_Tutorial
- In this application, an energy supply system, consisting of two regions, is modeled and optimized. Recommended as starting point to get to know to ETHOS.FINE.
- 01_1node_Energy_System_Workflow
- In this application, a single region energy system is modeled and optimized. The system includes only a few technologies.
- 02_EnergyLand
- In this application, a single region energy system is modeled and optimized. Compared to the previous examples, this example includes a lot more technologies considered in the system.
- 03_Multi-regional_Energy_System_Workflow
- In this application, an energy supply system, consisting of eight regions, is modeled and optimized. The example shows how to model multi-regional energy systems. The example also includes a notebook to get to know the optional performance summary. The summary shows how the optimization performed.
- 04_Model_Run_from_Excel
- ETHOS.FINE can also be run by excel. This example shows how to read and run a model using excel files.
- 05_District_Optimization
- In this application, a small district is modeled and optimized. This example also includes binary decision variables.
- 06_Water_Supply_System
- The application cases of ETHOS.FINE are not limited. This application shows how to model the water supply system.
- 07_NetCDF_to_save_and_set_up_model_instance
- This example shows how to save the input and optimized results of an energy system Model instance to netCDF files to allow reproducibility.
- 08_Spatial_and_technology_aggregation
- These two examples show how to reduce the model complexity. Model regions can be aggregated to reduce the number of regions (spatial aggregation). Input parameters are automatically adapted. Furthermore, technologies can be aggregated to reduce complexity, e.g. reducing the number of different PV components (technology aggregation). Input parameters are automatically adapted.
- 09_Stochastic_Optimization
- In this application, a stochastic optimization is performed. It is possible to perform the optimization of an energy system model with different input parameter sets to receive a more robust solution.
- 10_PerfectForesight
- In this application, a transformation pathway of an energy system is modeled and optimized showing how to handle several investment periods with time-dependent assumptions for costs and operation.
- 11_Partload
- In this application, a hydrogen system is modeled and optimized considering partload behavior of the electrolyzer.
Notes for developers
Editable install from conda-forge
It is recommended to create a clean environment with conda to use ETHOS.FINE because it requires many dependencies.
mamba env create --name fine --file requirements_dev.yml
mamba activate fine
Install ETHOS.FINE as editable install and without checking the dependencies from pypi with
python -m pip install --no-deps --editable .
Editable install from pypi
If you do not want to use conda-forge consider the steps in section Installation from pipy and install ETHOS.FINE as editable install and with developer dependencies with
python -m pip install --editable .[develop]
License
MIT License
Copyright (C) 2016-2024 FZJ-IEK-3
Active Developers: Theresa Groß, Kevin Knosala, Noah Pflugradt, Johannes Behrens, Julian Belina, Arne Burdack, Toni Busch, Philipp Dunkel, David Franzmann, Patrick Freitag, Thomas Grube, Heidi Heinrichs, Maximilian Hoffmann, Jason Hu, Shitab Ishmam, Sebastian Kebrich, Felix Kullmann, Jochen Linßen, Rachel Maier, Shruthi Patil, Jan Priesmann, Julian Schönau, Maximilian Stargardt, Lovindu Wijesinghe, Christoph Winkler, Detlef Stolten
Alumni: Robin Beer, Henrik Büsing, Dilara Caglayan, Timo Kannengießer, Leander Kotzur, Stefan Kraus, Peter Markewitz, Lars Nolting,Stanley Risch, Martin Robinius, Bismark Singh, Andreas Smolenko, Peter Stenzel, Chloi Syranidou, Johannes Thürauf, Lara Welder, Michael Zier
You should have received a copy of the MIT License along with this program.
If not, see https://opensource.org/licenses/MIT
About Us
We are the Institute of Energy and Climate Research - Techno-economic Systems Analysis (IEK-3) belonging to the Forschungszentrum Jülich. Our interdisciplinary department's research is focusing on energy-related process and systems analyses. Data searches and system simulations are used to determine energy and mass balances, as well as to evaluate performance, emissions and costs of energy systems. The results are used for performing comparative assessment studies between the various systems. Our current priorities include the development of energy strategies, in accordance with the German Federal Government’s greenhouse gas reduction targets, by designing new infrastructures for sustainable and secure energy supply chains and by conducting cost analysis studies for integrating new technologies into future energy market frameworks.
Contributions and Support
Every contributions are welcome:
- If you have a question, you can start a Discussion. You will get a response as soon as possible.
- If you want to report a bug, please open an Issue. We will then take care of the issue as soon as possible.
- If you want to contribute with additional features or code improvements, open a Pull request.
Code of Conduct
Please respect our code of conduct.
Acknowledgement
This work was initially supported by the Helmholtz Association under the Joint Initiative "Energy System 2050 A Contribution of the Research Field Energy".
The authors also gratefully acknowledge financial support by the Federal Ministry for Economic Affairs and Energy of Germany as part of the project METIS (project number 03ET4064, 2018-2022).
This work was supported by the Helmholtz Association under the program "Energy System Design".
Owner metadata
- Name: Forschungszentrum Jülich - Jülich Systems Analysis
- Login: FZJ-IEK3-VSA
- Email:
- Kind: organization
- Description: Institute of Climate and Energy Systems (ICE)
- Website: https://www.fz-juelich.de/iek/iek-3/EN/Home/home_node.html
- Location: Forschungszentrum Jülich
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/28654423?v=4
- Repositories: 16
- Last ynced at: 2024-12-23T04:12:17.721Z
- Profile URL: https://github.com/FZJ-IEK3-VSA
GitHub Events
Total
- Create event: 4
- Issues event: 7
- Release event: 4
- Watch event: 6
- Delete event: 2
- Member event: 1
- Issue comment event: 14
- Push event: 38
- Pull request review comment event: 2
- Pull request review event: 4
- Pull request event: 8
- Fork event: 4
Last Year
- Create event: 4
- Issues event: 7
- Release event: 4
- Watch event: 6
- Delete event: 2
- Member event: 1
- Issue comment event: 14
- Push event: 38
- Pull request review comment event: 2
- Pull request review event: 4
- Pull request event: 8
- Fork event: 4
Committers metadata
Last synced: 7 days ago
Total Commits: 1,557
Total Committers: 48
Avg Commits per committer: 32.438
Development Distribution Score (DDS): 0.791
Commits in past year: 121
Committers in past year: 12
Avg Commits per committer in past year: 10.083
Development Distribution Score (DDS) in past year: 0.479
Name | Commits | |
---|---|---|
s.patil | s****l@f****e | 326 |
Kevin Knosala | k****a@f****e | 277 |
Groß, Theresa | t****s@f****e | 202 |
Robin Beer | r****r@f****e | 172 |
Lara Welder | l****r@f****e | 152 |
l-kotzur | l****r@f****e | 71 |
Stanley | s****h@f****e | 50 |
xing21 | s****g@f****e | 36 |
p.dunkel | p****l@f****e | 34 |
Johannes Behrens | j****s@f****e | 31 |
maximilian-hoffmann | m****n@f****e | 29 |
Jason Aristides Hu | j****u@f****e | 19 |
Priesmann | j****r@e****e | 15 |
Shitab Ishmam | s****m@f****e | 14 |
Michael Zier | m****r@f****e | 13 |
ra.maier | r****r@f****e | 12 |
Leander Kotzur | l****r@r****e | 8 |
Julian Belina | j****a@f****e | 7 |
Theresa Groß | t****s@i****e | 7 |
Dilara Gulcin Caglayan | d****n@f****e | 6 |
t.busch | t****h@f****e | 6 |
Nolting | l****o@e****e | 6 |
Kevin Knosala | k****a@i****e | 5 |
Johannes Thürauf | j****f@f****e | 5 |
Christoph Winkler | c****r@f****e | 5 |
andreas smolenko | a****o@f****e | 4 |
n.pflugradt | n****t@f****e | 4 |
Stefan | s****s@f****e | 4 |
Stefan Kraus | s****s@i****e | 4 |
Felix Kullmann | f****n@i****e | 4 |
and 18 more... |
Committer domains:
- fz-juelich.de: 36
- iwv3.kfa-juelich.de: 6
- fau.de: 2
- eonerc.rwth-aachen.de: 2
- rwth-aachen.de: 1
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 21
Total pull requests: 42
Average time to close issues: 4 months
Average time to close pull requests: 11 days
Total issue authors: 11
Total pull request authors: 9
Average comments per issue: 1.33
Average comments per pull request: 0.74
Merged pull request: 28
Bot issues: 0
Bot pull requests: 0
Past year issues: 4
Past year pull requests: 6
Past year average time to close issues: 1 day
Past year average time to close pull requests: about 19 hours
Past year issue authors: 3
Past year pull request authors: 3
Past year average comments per issue: 0.75
Past year average comments per pull request: 0.83
Past year merged pull request: 1
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- GregorBecker (5)
- maurerle (3)
- l-welder (2)
- l-kotzur (2)
- julianbelina (2)
- ChriKo97 (2)
- hangtianzhang (1)
- t-gross (1)
- ghost (1)
- V3lop5 (1)
- dcaglayan (1)
Top Pull Request Authors
- t-gross (19)
- l-kotzur (8)
- l-welder (5)
- maurerle (4)
- MartinRobinius (2)
- noah80 (1)
- aacarneiro (1)
- OfficialCodexplosive (1)
- ChriKo97 (1)
Top Issue Labels
- bug (1)
Top Pull Request Labels
Package metadata
- Total packages: 5
-
Total downloads:
- pypi: 1,048 last-month
- Total dependent packages: 1 (may contain duplicates)
- Total dependent repositories: 2 (may contain duplicates)
- Total versions: 65
- Total maintainers: 5
proxy.golang.org: github.com/fzj-iek3-vsa/fine
- Homepage:
- Documentation: https://pkg.go.dev/github.com/fzj-iek3-vsa/fine#section-documentation
- Licenses: other
- Latest release: v2.4.1+incompatible (published 4 months ago)
- Last Synced: 2025-04-26T14:42:58.631Z (2 days ago)
- Versions: 21
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 1.622%
- Average: 4.057%
- Dependent packages count: 6.492%
proxy.golang.org: github.com/FZJ-IEK3-VSA/FINE
- Homepage:
- Documentation: https://pkg.go.dev/github.com/FZJ-IEK3-VSA/FINE#section-documentation
- Licenses:
- Latest release: v2.4.1+incompatible (published 4 months ago)
- Last Synced: 2025-04-26T14:42:57.834Z (2 days ago)
- Versions: 21
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 6.999%
- Average: 8.173%
- Dependent repos count: 9.346%
pypi.org: fine
Framework for integrated energy systems assessment
- Homepage:
- Documentation: https://fine.readthedocs.io/
- Licenses: MIT License
- Latest release: 2.4.1 (published 4 months ago)
- Last Synced: 2025-04-26T14:42:58.796Z (2 days ago)
- Versions: 21
- Dependent Packages: 1
- Dependent Repositories: 2
- Downloads: 998 Last month
-
Rankings:
- Dependent packages count: 4.71%
- Average: 10.831%
- Dependent repos count: 11.619%
- Downloads: 16.164%
- Maintainers (3)
pypi.org: jsa-data-manager
Manages standard input and output data of JSA software tools.
- Homepage:
- Documentation: https://jsa-data-manager.readthedocs.io/
- Licenses: MIT License Copyright (c) 2024, FZJ-ICE-2 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Latest release: 0.0.1 (published 8 months ago)
- Last Synced: 2025-04-26T14:42:58.345Z (2 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 50 Last month
-
Rankings:
- Dependent packages count: 10.459%
- Average: 34.668%
- Dependent repos count: 58.877%
- Maintainers (2)
conda-forge.org: fine
- Homepage: https://github.com/FZJ-IEK3-VSA/FINE.git
- Licenses: MIT
- Latest release: 2.2.2 (published about 3 years ago)
- Last Synced: 2025-04-26T14:43:30.534Z (2 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Forks count: 26.748%
- Dependent repos count: 34.025%
- Stargazers count: 36.945%
- Average: 37.224%
- Dependent packages count: 51.175%
Dependencies
- continuumio/miniconda3 latest build
Score: 15.240163722438352