enerGy commUnity SysTem mOdeling
GUSTO is a mixed-integer linear program (MILP) for energy system modeling. Thanks to the open-source energy system modeling community it is an extension of the existing open-source model (OSM) urbs[1].
The Horizon 2020 openENTRANCE project aims at developing, using and disseminating an open, transparent and integrated modelling platform for assessing low-carbon transition pathways in Europe. openENTRANCE will analyse the new challenges of the energy transition and demonstrate the ability of the project to answer a wide range of questions linked to the energy transition by carrying out case study simulations. This model (as a merger of the two models HEROS and OSCARS) is part of case study 3, which is described as follows:
CS3: Need of flexibility โ storage: Comparison of the flexibility of pumped hydro storage with batteries for future high-variability power systems caused by a large share of variable renewables. Analyses for the Iberian Peninsula and the Nordic region. Impacts on pan-European level. Key aspects covered: variability, flexibility, decentralisation
More information about the case studies of the project can be found here.
The model provides a tool for investment decisions as well as for the operational utilization of the generation units, technologies and storage units.
- Extending investment costs by capacity-independent connection costs for network-based technologies
- Weighting of modeled time-steps (as an example to consider time step frequency)
- Different operational strategies of storage technologies
- Clustering algorithm for characteristic week representation to reduce simulation running time[2].
Different objective functions are possible. The default objective function is to minimize total costs of supply per year. In addition, the existing model also enables minimization of total emissions per year. Furthermore, this modeling framework enables the following operational strategies for storage technologies.
- profit maximization by single consumers, communities, or companies
- minimization of local excess/deficit by prosumers
- load following by using battery storage capacities (this includes dumb or smart EV charging)
The total costs of energy supply in the system concerned are calculated and can are split as follows: invest, fixed, variable, fuel, external,
reveneue, purchase (see after running the model ./Output/scenario_name_folder/scenario_name
) in the sheet Costs
of the excel results file. Many thanks to the visualization tool pyam that is used for the results presentation.
Also, the utilization of energy technologies are illustrated in the results file and as images (i.e. temporal utilization of photovoltaics). These results can be adjusted in the run_model.py
script (i.e. report_tuple
and plot_tuple
).
Pareto Front | Battery output curves |
---|---|
At this point it is again pointed out that this model is an extension of the existing open-source model urbs. The corresponding repository contains a very detailed documentation and instructions for installation which can be referred to. However, the following steps might be the quickest path to get first results of the model and is also pointed out in the reffered repository. Thereby, a new environment is created (more details about virtual environments here).
- Download and install Miniconda for your machine (keep both checkboxes modify PATH and register Python selected).
- Download the environment file which contains the required packages and corresponding versions (more experienced Python users know the advantages and disadvantages of this but these are not so relevant for a first step towards model results).
- Launch a new command prompt (Windows: Win+R, type "cmd", Enter)
- Install the requirements via Miniconda by
conda env create -f gusto-env.yml
. - Each time you open a new terminal (like Anaconda Prompt (miniconda3)) activate the environment by
conda activate gusto
.
Afterwards you can run the model. Therefore open a Anaconda Propmpt (miniconda3)
terminal. Use the cd
command to change the current directiory and open the related one where you find run_model.py
. Finally type python run_model.py
to solve the optimization problem. The results can be found in the Output
folder.
This model is already used in the following two scientific contributions:
- Open-source modeling of a low-carbon urban neighborhood with high shares of local renewable generation (Applied Energy). https://doi.org/10.1016/j.apenergy.2020.116166
- Citizen Participation in Low-Carbon Energy Systems: Energy Communities and Its Impact on the Electricity Demand on Neighborhood and National Level (Energies). https://doi.org/10.3390/en14020305
Furthermore, this model is used in an ongoing project together with NTNU. Updates follow soon.
For the base open-source model urbs a detailed description exists here.
Note that urbs is licensed under a Creative Commons Attribution 4.0 International License.
Data exchange with the open platform and the scenario explorer of the project is supported. This is provided by the IAMC format and pyam. More information is available through the links. A draft script allows writing to the IAMC format (see Gusto_results.xlsx). Extensions and updates will follow.
[1] Dorfner, J., and T. Hamacher (2017) "urbs: A linear optimisation model for distributed energy systems." Urbs 0.7 1" "Scikit-learn: Machine Learning in Python." JMLR 12, pp. 2825-2830.
[2] Pedregosa et al. (2011) "Scikit-learn: Machine Learning in Python." JMLR 12, pp. 2825-2830.