#!/usr/bin/env python # coding: utf-8 # EUF # HSF # # In[ ]: __copyright__ = "Zentrum für nachhaltige Energiesysteme Flensburg" __license__ = "GNU Affero General Public License Version 3 (AGPL-3.0)" __url__ = "https://github.com/openego/eGo/blob/master/LICENSE" __author__ = "wolfbunke" # # #
Abschlussworkshop open_eGo 2018
# # ## Session eGo: Ein Open Source Tool für spannungsübergreifende Stromnetz-Optimierung von Speicher- und Netzausbau # # **** # # ### Erfahre mehr über: # # # * __[open_eGo Projekt Webpage](https://openegoproject.wordpress.com/)__ # * __[eGo Dokumentation](https://openego.readthedocs.io/)__ # * __[oedb Tutorials](http://oep.iks.cs.ovgu.de/dataedit/)__ # * __[eGo Source Code](https://github.com/openego/eGo)__ # * __[OpenEnergy-Platform](https://openenergy-platform.org/)__ # * __[eTraGo Dokumentation](https://etrago.readthedocs.io/en/latest/)__ # * __[eDisGo Dokumentation](https://edisgo.readthedocs.io/en/dev/)__ # * __[Ding0 Dokumentation](https://dingo.readthedocs.io/en/dev/)__ # # eGo Tool # # ## Inhaltsverzeichnis # # # * [Starte eGo](#started) # * [Fragestellung des Tutotrials](#tutorial) # * [Wie wende ich eGo an?](#anwendung) # * [Wie hoch sind die Ausbaukosten beim NEP 2035 und eGo 100 Szenario?](#szenario) # * [Wie unterscheiden sich der Ausbaubedarf je Spannungsebene?](#kostenvergleich) # # Starte eGo # # eGo ist ein Anwendungs-Tool, das in der Programmiersprache Python 3 entwickelt ist. Daher ist es wichtig vorab Python 3 zu installieren. Wenn eine Python Umgebung vorhanden ist, installiere eGo einfach über pypi mit **>>> pip3 install eGo**. Wir empfehlen eine virtuelle Umgebung für deine Installation zu verwenden. Erfahre mehr auf der README Datei oder auf der Dokumentationsseite [openego.readthedocs.io](https://openego.readthedocs.io/en/dev/). # # # ## Übersicht der Funktionsweise der open_eGo Entwicklungen # # eGo Tool # # # Damit wir das Tool eGo verwenden können, wurden innerhalb des Projektes open_eGo verschiedene Tools, Datenbanken, Schnittstellen und Datenaufbereitungs-Skripte als Open Source und Open Daten entwickelt. Die Grafik zeigt den Aufbau und den Prozess von der Rohdatengewinnung, Verarbeitung der Daten und Daten Modellerstellung (Data processing und Ding0) über die modulare Anwendung zur Mittel- und Niederspannungsberechnung (eDisGo), Höchst- und Hochspannungsberechnung (eTraGo) und deren Integration zur Berechnung der Gesamtergebnisse (eGo). # # # # ## Installation # # Eine detaillierte Installationsanleitung ist unter [README.md](https://github.com/openego/eGo/tree/features/tutorial/ego/examples/tutorials) zu finden. # # ### Schritte bevor wir eGo starten können # # # 1. Anmeldung auf der [OpenEnergy-Platform](https://openenergy-platform.org/login) zum erhalt des Token für den Datenbankzugang # 2. Installation von eGo # 3. Erstellung der Ding0 (MS/NS Netze) (Berechnungszeit ca. 24h, Größe: ~20 GB bei 16 Gbit Arbeitsspeicher, 5 Kernen) # # Die weiteren Schritte werden hier im Tutorial beschrieben. # # # # Fragestellung des Tutorials # # In dem Jupyter Notebook Tutorial möchten wie folgende Inhalte und Fragen bearbeiten: # # ### Wie wende ich das Tool an? # # * Übersicht des Tool und der Steuerung mit der zentralen `scenario_setting.json` # * Anwendung einer kleinen Berechnung # # ### Wie hoch sind die Ausbaukosten von Netz und Speicher beim `NEP 2035` sowie ` eGo 100` Szenario? # # * Auf Basis der verkleinerten Rechnungen untersuchen wir # # # ### Wie unterscheiden sich der Ausbaubedarf je Spannungsebene? # # # # # ## Importiere eGo und Hilfspakete zur Darstellung # # Wir starten mit dem Import der [eGo() class](https://openego.readthedocs.io/en/dev/api/ego.tools.html#ego.tools.io.eGo). # In[1]: # enable jupyter interactiv plotting get_ipython().run_line_magic('matplotlib', 'notebook') from ipywidgets import * import matplotlib.pyplot as plt # In[2]: from ego.tools.io import eGo from ego.tools.utilities import define_logging import pandas as pd # define logger file logger = define_logging(name='ego') # ## Setze die Einstellungen für die Berechnung # # Erhalte einen Überblick über die möglichen Einstellungen zur Berechnung. Eine detaillierte Dokumentation ist unter [openego.readthedocs.io/../..#scenario-settings-json](https://openego.readthedocs.io/en/latest/api/modules.html#scenario-settings-json) zu finden. # # # In[3]: # lets have a look at our settings import urllib.request, json url ="https://raw.githubusercontent.com/openego/eGo/dev/ego/scenario_setting.json" with urllib.request.urlopen(url) as url: data = json.loads(url.read().decode()) print(json.dumps(data, indent=4, sort_keys=False)) # ## Start unserer Berechnung mit eGo # # # Für dieses Tutorial rechnen wir zwei Szenarien die innerhalb des Projektes entwickelt worden. Als erstes rechnen wir das **NEP 2035** Szenario, welches auf dem Netzentwicklungsplan Version 2015 der vier Übertragungsnetzbetreiber beruht. Danach rechnen wir das Szenario **eGo100** welches eine 100%ig regenerative Versorgung des elektrischen Verbrauchs innerhalb von Deutschland annimmt. Dieses basiert auf dem 2050 Szenario der E-Highway Studie (X-13: # 13: 100% RES electricity). # # # ### Schritte für die Berechnung # # * In der json Datei scenario_setting_nep2035.json finden wir unser vordefiniertes Szenario sowie alle Einstellung für die Berechnung # * Über der Aufruf der eGo Klasse initialisieren wir die Berechnung # * Um Zeit zu sparen wurden die Berechnung und das Optimierungsproblem zuvor gelöst und werden als Ergebnis csv für die weitere Analyse importiert # # # ## NEP 2035 Szenario # # # # In[4]: # Starte die Berechnung ego = eGo(jsonpath='scenario_setting_nep2035.json') # In[5]: # Übersicht der Netzausbaukosten von eTraGo ego.etrago.grid_investment_costs # In[6]: # Übersicht der Ausbaukosten von eDisGo ego.edisgo.grid_investment_costs # In[7]: # Übersicht der gesamten Ausbaukosten # Annuisiert pro Zeitschritt als capital_cost ego.total_investment_costs # ### Grafische Darstellung der Gesamtkosten pro Spannungsebene # # Funktionsdokumentation unter: [plot_total_investment_costs()](https://openego.readthedocs.io/en/dev/api/ego.tools.html#ego.tools.plots.plot_grid_storage_investment) # # Wir schauen uns die Gesamtkosten der zeitliche definierten Berechnung und deren Netzzuständen an. Eine Beschreibung der Kostenmethoden ist unter [Theoretical Background](https://openego.readthedocs.io/en/dev/theoretical_background.html#economic-calculation) zu finden. # # In[8]: # Gesamtkosten ego.plot_total_investment_costs(var = 'overnight_cost') # In[9]: # Annuisierte Kosten der Zeitschritte ego.plot_total_investment_costs() # ## Analyse der eTraGo Ergebnisse # # * Anwendung der HöS/HS Ebene mit eTraGo Funktionalitäten # In[17]: ego.etrago.plot_line_loading() # In[18]: # Erzeugung DE und Nachbarn ego.etrago.plot_stacked_gen() # ## Analyse der eDisGo Cluster # # ### Clustering # # Für die Clusterbildung wurden die Parameter: # # * kumulierte installierte Windkapazität `"wind_cap"` # * kumulierte installierte Photovoltaikkapazität `"solar_cap"` # * maximale länge einer MS Leitung `"farthest_node"` # * Speicherausbau nach HöS/HS Optimierung `"extended_storage"` # # Auf Grund des Nicht-Ausbaus von Speicher in dem gewählten Zeitraum entniehmt eGo diesen Parameter # # ### Einstellungen # # * Auswahl von repräsentative wurde mit k=8 vorgegeben # * K-Means Cluster-Algorithmus wählt Netze aus # In[19]: ego.edisgo.grid_choice # In[20]: ego.plot_edisgo_cluster() # ## Interaktive Ergebnisanalyse # # # Mit der **ego.iplot** Funktion erstellen wir den interaktiven Plot der uns als HTML Datei lokal abgespeichert wird. # In[ ]: #ego.iplot # In[16]: from IPython.display import IFrame src= "iplot_map_nep.html" display(IFrame(src, width=900, height=750)) # # Vergleich der Ausbaukosten # # # # # ### Fragestellung II # # * Wie hoch sind die Ausbaukosten beim NEP 2035 und eGo 100 Szenario? # # # ## eGo 100 Szenario # In[10]: ego_2 = eGo(jsonpath='scenario_setting_ego100.json') # In[11]: # Gesamtkosten der eGo 100 Berechnung ego_2.total_investment_costs # In[12]: # Darstellung der Ergebnisse ego_2.plot_total_investment_costs(var = 'overnight_cost') # ### Fragestellung III # # * Auf welcher Spannungsebene entstehen welche Kosten bzw. Ausbauten? # # In[13]: # Gesamtkosten übertragen nep = ego.total_investment_costs ego100 = ego_2.total_investment_costs # In[14]: nep['scenario'] ='NEP 2035' ego100['scenario'] ='eGo 100' # In[15]: # Zusammenfügen der Kosten total = nep[nep.differentiation=='domestic'].append(ego100, ignore_index=True) res = total.groupby(['scenario','voltage_level'])['overnight_costs'].sum() res/1e+9 # Kosten in Milliarden € # # Referenzen # # # * [1] Europe’s future secure and sustainable electricity infrastructure e-Highway2050 project results, November 2015, url: http://www.e-highway2050.eu/e-highway2050/ # # * [2] Netzentwicklungsplan (NEP) 2025, Version 2015, url:https://www.netzentwicklungsplan.de/sites/default/files/paragraphs-files/NEP_2025_1_Entwurf_Teil1_0.pdf #