Die Aufgaben müssen in ILIAS als lauffähige und dokumentierte Jupyter Notebooks inkl. Datenfiles abgegeben werden. LP-Modellierungen können als eingescannte PDFs abgegeben werden.

Aufgabe 1: Zeitreihen (4 Punkte)

  1. Gehen Sie auf die Webseite PVGIS, wählen Sie in der Landkarte einen sinnvollen Standort aus, und laden Sie im CSV-Format die PV Power für das Jahr 2020 für eine 5 kWp Anlage herunter. Laden Sie die Datei mit Hilfe des Codes unten in ein DataFrame, und stellen Sie die PV Power inkl. Achsenbeschriftung grafisch dar. Erklären Sie den angegebenen Code.
  2. Registrieren Sie sich auf der Webseite Entsoe, und laden Sie anschließend unter Load die Last Total Load - Day Ahead / Actual für das Jahr 2020 für ein (zu dem von Ihnen gewählten PVGIS-Standort passendes) Land im CSV-Format herunter. Laden Sie die Datei mit Hilfe des Codes unten in ein DataFrame, und stellen Sie die tatsächliche (actual) Last grafisch inkl. Achsenbeschriftung dar. Erklären Sie den angegebenen Code. Die Entsoe-Seite hat ein hilfreiches Glossar.
  3. Skalieren sie den tatsächlichen (actual) Jahreslastgang auf einen typischen elektrischen Jahresgesamtverbrauch eines Haushalts.
  4. Stellen Sie die PV-Leistung und die Last in einem gemeinsamen Diagramm dar.
  5. Berechnen Sie für den Tag 2020-08-01
    1. den Eigenverbrauchsanteil der PV-Anlage. Dieser gibt an, wie viel der selbst produzierten Energie man selbst verbraucht hat.
    2. den Autarkiegrad der PV-Anlage. Dieser gibt an, wie viel der benötigten Energie von der eigenen PV-Anlage gedeckt wurde.
Code
import numpy as np
import pandas as pd

path = "/home/kr/lehre/effsys/2_en/notes/daten/"
Code
# PV data:
file = "Timeseries_47.245_9.642_SA2_5kWp_crystSi_14_40deg_-6deg_2020_2020.csv"
my_parser = lambda date: pd.to_datetime(date, format='%Y%m%d:%H%M')
# cf. https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
pv = pd.read_csv(path + file, skiprows=10, header=0, index_col=0,
                 parse_dates=True, date_parser=my_parser, nrows=8795-11)
pv.index = pv.index- pd.Timedelta(minutes=10)
pv.head(3)  # column P: PV system power (W)
P G(i) H_sun T2m WS10m Int
time
2020-01-01 00:00:00 0.0 0.0 0.0 -9.57 1.66 0.0
2020-01-01 01:00:00 0.0 0.0 0.0 -9.65 1.59 0.0
2020-01-01 02:00:00 0.0 0.0 0.0 -10.11 1.59 0.0
Code
# price data:
file = "Total Load - Day Ahead _ Actual_202001010000-202101010000.csv"
my_parser = lambda date: pd.to_datetime(date[:16], format='%d.%m.%Y %H:%M')
load = pd.read_csv(path + file, index_col=0, date_parser=my_parser)
# rename columns "Day-ahead Total Load Forecast [MW] - BZN|AT" and "Actual Total Load [MW] - BZN|AT":
load.columns = ['forecast', 'actual']
load.index.name = 'time'
load.head(3)
forecast actual
time
2020-01-01 00:00:00 5752.0 5967.0
2020-01-01 01:00:00 5467.0 5768.0
2020-01-01 02:00:00 5360.0 5592.0

Aufgabe 2: E-Mobil-Flotte (6 Punkte)

Sie betreiben eine kleine E-Mobil-Flotte mit zwei E-Mobilen und folgenden Spezifikationen:

  • E-Mobil A: 200 kWh Batterie, maximale Ladeleistung 75 kW, Verbrauch 1.2 kWh/km
  • E-Mobil B: 300 kWh Batterie, maximale Ladeleistung 125 kW, Verbrauch 1.4 kWh/km

Die E-Mobile können in Ihrem Depot an einer Ladestation mit zwei Ladepunkten geladen werden. Die Ladestation hat in Summe maximal 150 kW Ladeleistung.

Die E-Mobile sind morgens um 8:00 Uhr zu 80 % geladen und sollen bis Mitternacht wieder auf mindestens 60 % geladen werden. Die E-Mobile absolvieren folgende Fahrten, die alle im Depot beginnen und enden:

  • E-Mobil A:
    • von 10 Uhr bis 12 Uhr, 120 km
    • von 16 Uhr bis 18 Uhr, 80 km
  • E-Mobil B:
    • von 9 Uhr bis 13 Uhr, 150 km
    • von 15 Uhr bis 20 Uhr, 90 km

In den Zeiten, in denen die E-Mobile nicht fahren, können sie im Depot geladen werden. Sie modellieren das Laden verlustfrei und wollen einen optimalen Ladeplan in Stundenschritten für die E-Mobile erstellen, der die Spitzenladeleistung der Ladestation minimiert. Verwenden Sie für die Modellierung die folgenden Variablen:

  • \(a_j\): Ladeleistung in kW des E-Mobils A in der Stunde mit Index \(j\)
  • \(b_j\): Ladeleistung in kW des E-Mobils B in der Stunde mit Index \(j\)

Die Minimierung der Spitzenleistung kann durch Minimierung einer zusätzlichen Variablen \(m > 0\) in kW in Kombination mit folgenden zusätzlichen Nebenbedingung modelliert werden: \[ m \geq a_j + b_j \quad \forall j. \]

  1. Definieren Sie die Zeitpunkte, Zeitperioden und ihre Indizierung.
  2. Modellieren Sie das Energienetzwerk und fixieren Sie die Pfeilrichtung der Kanten.
  3. Basierend auf dieser Vorzeichenkonvention formulieren Sie das Optimierungsproblem:
    1. Definieren Sie die Entscheidungsvariablen inklusive Einheiten, Datentyp und Schranken.
    2. Formulieren Sie die Zielfunktion.
    3. Formulieren Sie die die Nebenbedingungen.
  4. Modellieren Sie das LP mit Pyomo, und lösen Sie es mit verschiedenen Solvern.
  5. Stellen Sie die zeitlichen Verläufe der E-Mobil-Ladeleistungen, der E-Mobil-Ladestände und des Lastgangs der Ladestation grafisch dar, und interpretieren Sie diese.