demand response analysis framework (draf
) is an analysis and decision support framework for local multi-energy hubs focusing on demand response.
It uses the power of (mixed integer) linear programming optimization, pandas
, Plotly
, Matplotlib
, elmada
, GSEE
, Jupyter
and more to help users along the energy system analysis process.
The software is described and demonstrated in the open-access draf demo paper.
draf
runs on Windows, macOS, and Linux.
DemandAnalyzer
- Analyze energy demand profilesPeakLoadAnalyzer
- Analyze peak loads or run simple battery simulationBES
), battery electric vehicle (BEV
), combined heat and power (CHP
), heat-only boiler (HOB
), heat pump (HP
), power-to-heat (P2H
), photovoltaic (PV
), wind turbine (WT
), thermal energy storage (TES
), fuel cell (FC
), electrolyzer (Elc
), hydrogen storage (H2S
), production process (PP
), product storage (PS
), direct air capture (DAC
), and more.Pyomo
- A free and open-source modeling language in Python that supports multiple solvers.GurobiPy
- The Python interface to Gurobi, the fastest MILP solver (see Mittelmann benchmark).Plotly
, Matplotlib
, and seaborn
.
unit
, doc
, src
, and dims
CaseStudy
objects including all parameters, meta data, and results can be saved to files.Open a terminal in the directory where you want to place draf
in.
Clone draf
:
git clone https://github.com/DrafProject/draf
cd draf
Create and activate the draf
conda environment (conda env create
will create a conda environment based on environment.yml which will install the newest versions of the required packages including the full editable local version of draf
.):
conda env create
conda activate draf
(OPTIONAL) If the draf environment caused issues, you could install an older but more specific conda environment, e.g.:
conda env create --file environments/environment_py39all_mac.yml --force
conda activate draf39
(OPTIONAL) To use Gurobi (fast optimization), install a valid Gurobi license (its free for academics).
Open Jupyter notebook:
jupyter notebook
Check if the imports work:
import draf
import elmada
(OPTIONAL) To use the latest electricity prices and carbon emission factors from elmada
, request an ENTSO-E API key and set it to elmada:
# You have to run this Python code only once (it writes to a permanent file):
import elmada
elmada.set_api_keys(entsoe="YOUR_ENTSOE_KEY")
Start modeling. Have a look at the examples.
Start with the minimal
if you want to write your own component.
Start with the PV
example if you want to import existing components.
For more advanced modeling look at the draf_demo_case_studies.
Consider the DRAF CHEAT SHEET
A CaseStudy
object can contain several Scenario
instances:
All parameter and variable names must satisfy the structure <Type>_<Component>_<Descriptor>_<Dims>
.
E.g. in P_EG_buy_T
, P
is the entity type (here: electrical power), EG
the component (here: Electricity Grid), buy
the descriptor and T
the dimension (here: time).
Dimensions are denoted with individual capital letters, so <Dims>
is TE
if the entity has the dimensions T
and E
.
See conventions.py for examples of types, components, and descriptors.
Contributions in any form are welcome! Please contact Markus Fleschutz.
If you use draf
for academic work please cite the draf demo paper:
@article{Fleschutz2022,
author = {Markus Fleschutz and Markus Bohlayer and Marco Braun and Michael D. Murphy},
title = {Demand Response Analysis Framework ({DRAF}): An Open-Source Multi-Objective Decision Support Tool for Decarbonizing Local Multi-Energy Systems},
publisher = {{MDPI} {AG}},
journal = {Sustainability}
year = {2022},
volume = {14},
number = {13},
pages = {8025},
url = {https://doi.org/10.3390/su14138025},
doi = {10.3390/su14138025},
}
Copyright (c) 2022 Markus Fleschutz
License: LGPL v3
The development of draf
was initiated by Markus Fleschutz in 2017 and continued in a cooperative PhD between the MeSSO Research Group of the Munster Technological University, Ireland and the Energy System Analysis Research Group of the Karlsruhe University of Applied Sciences, Germany.
This project was supported by the MTU Rsam PhD Scholarship scheme and by the Federal Ministry for Economic Affairs and Climate Action (BMWK) on the basis of a decision by the German Bundestag.
Thank you Dr. Markus Bohlayer, Dr. Ing. Adrian Brger, Andre Leippi, Dr. Ing. Marco Braun, and Dr. Michael D. Murphy for your valuable feedback.
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.