Ein Wettbewerb zur genauen Vorhersage von produzierter elektrischer Leistung und benötigter Last für die Ermittlung des Reststrombedarfs.

Icons erstellt von Freepik , Smashicons, Eucalyp - Flaticon

Ein wichtiger Baustein der Energiewende ist der Ausbau dezentraler erneuerbarer Energiequellen. Ein großer Anwendungsbereich sind hierbei Anlagen zur Eigenstromerzeugung über Photovoltaikmodule auf Industrie- und Gewerbeobjekten. Der erzeugte Strom wird primär von den Kunden selbst verbraucht. Zusätzliche Kapazitäten werden zugekauft, falls die benötigten Mengen nicht ausreichen. Wird zu viel Strom erzeugt, wird dieser ins Stromnetz eingespeist und verkauft. Die sich ergebende Restlast (Restlast = Energiebedarf - selbst erzeugte Energie) muss vom Energieversorger bereitgestellt werden.
Um eine stabile Energieversorgung zu gewährleisten, sind Energieversorger auf Prognosen der Restlasten angewiesen. In der Vergangenheit konnten diese Restlasten aufgrund langjähriger Erfahrung und Statistik prognostiziert werden. Nun steigt die Anzahl an Solaranlagen und damit die Menge an selbst erzeugtem Strom weiter an. Dies macht die Prognose von Restlasten immer komplexer, da zusätzliche Abhängigkeiten zu externen Faktoren wie dem Wetter entstehen. Die Prognose des Reststrombedarfs ist jedoch notwendig, um einen sicheren und ordnungsgemäßen Stromversorgungsbetrieb aufrechtzuerhalten.

Zuerst wurde eine intensive Datenuntersuchung und -aufbereitung durchgeführt. Hierbei sind bei der Last unter anderem zwei Problemstellen aufgefallen. Während der Zeitumstellung waren doppelte und unstimmige Zeilen vorhanden, gleichzeitig betrug der Lastwert 0. Darüber hinaus scheint es auch einen Einbruch der Last am 09.05.2020 um 19:30 Uhr gegeben zu haben. Da in der Regel immer eine Grundlast vorlag und Lasten von 0 kW sich deutlich von der gewöhnlichen Last unterscheiden, wurden diese als Ausreißer gekennzeichnet, entfernt und die dortigen Werte interpoliert. Ansonsten hätte es einen starken Einfluss auf die späteren Prognosen geben können.
Um genauer zu untersuchen, welche Eingangsdaten überhaupt für eine spätere Modellierung sinnvoll sind, wurden weitere Analysen durchgeführt. Generell ist die elektrische Last stark abhängig von der Saisonalität. So unterscheidet sich der Stromverbrauch im Winter signifikant von dem im Sommer. Es müssen also die saisonalen Unterschiede des Frühlings, Sommers, Herbst und Winters vom Modell abgebildet werden. Dies erfolgt über eine Kategorisierung des jeweiligen Jahres in verschiedene Bereiche. Da es sich hierbei jedoch nicht um die allgemeine Last, sondern um die Last eines spezifischen Betriebs handelt, spielen weitere Faktoren eine Rolle. Hierzu zählt zum Beispiel der Arbeitsbeginn, Pausenzeiten, unterschiedliche Ferienzeiten oder die allgemeine Auslastung des Betriebs. Analog dazu gibt es auch starke Unterschiede zwischen dem Wochenende und der Arbeitswoche. Während der Arbeitswoche ist sowohl die Grund- als auch Spitzenlast des Betriebs deutlich höher. Einen vergleichbaren Einfluss besitzen Feiertage oder Streiks.

Sowohl der Wochentag als auch die Umgebungstemperatur besaßen einen starken Einfluss auf die elektrische Last.

Da es sich bei dem Gebäude um einen Instandhaltungsbetrieb des ÖPNV handelt, hatte der Lockdown kaum einen Einfluss.

Der Einfluss der Feiertage (1.0) zeigt deutliche Unterschiede zu normalen Arbeitstagen (-1.0) und liegt im Verbrauch auf dem Niveau der Wochenenden (-2.0).

Die produzierte elektrische Leistung streute relativ stark über der Einstrahlung, was eine hohe Kompensation erforderte. Außerdem waren vereinzelt Ausreißer vorhanden, die nicht mit der Einstrahlung korrelierten.

Besonders anhand des hinteren Teils des Diagramms wurde deutlich, dass weitere unter Umständen lokale Effekte einen starken Einfluss auf die Photovoltaik-Leistung hatten, die nicht über die Strahlungsmessung erfasst wurden.
Generell zeigte sich, dass die Modellierung der produzierten Leistung mit den gegebenen Daten theoretisch mittels einer einfachen physikalischen Modellierung auf Basis der Strahlungsdaten und der Effizienz erfolgen könnte. Es stellte sich jedoch heraus, dass dabei eine Kompensation des Temperatureinflusses auf den Wirkungsgrad notwendig gewesen wäre. Das lässt sich gut an dem relativ breiten Band der produzierten Leistung erkennen. Darüber hinaus sind teilweise Bereiche vorhanden, in denen die produzierte Leistung nicht mit der eintreffenden Strahlung korrelierte. Der Einbruch des Strahlungssignals scheint dort vor- bzw. nachzulaufen, aus den Daten lässt sich jedoch kein Grund dafür feststellen. Somit könnten auch lokale Effekte eine Rolle spielen, beispielsweise eine partielle Verdunkelung der Photovoltaikmodule.
Um die oben beschriebenen Untersuchungen auch für das spätere Training der neuronalen Netze oder allgemein der maschinellen Lernalgorithmen verwenden zu können, mussten die entsprechenden Features erzeugt werden. Gesetzliche Feiertage sind in der Python-Bibliothek holidays gelistet. Darüber hinaus wurden noch zusätzliche, nicht gesetzliche Feiertage wie Heiligabend oder Silvester eingetragen.
Weitere Untersuchungen zeigten, dass in den Zeiträumen mehrere Streiks stattfanden. Da Streiks - insbesondere im öffentlichen Dienst - meist angekündigt werden lässt sich dieses Feature auch während der späteren Anwendung des Algorithmus verwendet werden.
Darüber hinaus mussten noch Eingangsfeatures erzeugt werden, damit der Algorithmus die Saisonalität erlernt und nicht lediglich auf das Datum overfittet. Hierfür wurden zusätzliche Spalten für die Woche, den Monat und das Jahr erzeugt.
import holidays
holidays.Germany(
years=[2018, 2019, 2020],
subdiv="HE"
)Die Feiertage können relativ einfach über die Python-Bibliothek holidays geladen werden. Der Vorteil liegt darin, dass automatisiert Feiertage verschiedener Bundesländer definiert werden können.

Neben den offiziellen Feiertagen wie dem 1. Weihnachtsfeiertag gibt es noch weitere regionale Feiertage. Diese haben einen vergleichbaren Einfluss wie offizielle Feiertage und wurden deswegen als solche gekennzeichnet.
for day in holidays:
if day == "Tuesday") and „day-1 not a holiday":
return Brueckentag
if day == "Thursday") and not „day+1 not a holiday":
return BrueckentagWährend des Trainigs der Algorithmen zeigte sich, dass weitere Problemstellen besonders um die Feiertage aufgetreten sind. Diese können mit Hilfe von Brückentage definiert werden.

Um die Saisonalität erlernen zu können, wurde aus dem eigentlichen Datum jeweils das Jahr, der Monat, die Woche und weitere Informationen extrahiert. Wurde lediglich das Datum als Eingangsparameter verwendet, erlernt der ML-Algorithmus in der Regel keine Saisonalität und overfittet leichter.

Während des Trainings zeigte sich, dass zusätzliche Wetterdaten wie die Regendaten vom DWD zu einer Verbesserung der Vorhersagegenauigkeit führten. Hierzu wurden die Daten vom DWD heruntergeladen und an den Datensatz angepasst. Die Verwendung von Radardaten hat sich aufgrund des unbekannten Gewerbestandorts als nicht zielführend erwiesen.

Außerdem wurde untersucht, ob weitere Informationen anhand von Wetterradar-Daten verwendet werden konnten. Erste Untersuchungen waren aufgrund des unbekannten Standorts nicht vielversprechend, weshalb dieser Weg nicht weiter verfolgt wurde. Bei bekanntem Standort können aber entweder lokale Wetterphänomene extrahiert oder die Radardaten direkt zum Training verwendet werden.
Für die Leistungsvorhersage der Photovoltaikanlage werden grundsätzlich keine weiteren Features benötigt. Sowohl die direkte als auch indirekte Einstrahlung sowie weitere Daten wie die Umgebungstemperatur sollten für die Modellierung ausreichend sein. Es zeigte sich jedoch bei der Datenanalyse, dass die Streueung teilweise relativ hoch war und mehrere Ausreißer vorhanden waren. Dies lässt sich einerseits auf den Einfluss der Temperatur und des Verschmutzungsgrades auf den Wirkungsgrade der Solarzellen zurückführen, aber auch auf lokale Effekte wie die teilweise Bedeckung der Solarzellen durch Wolken oder Schnee.
Die zur Verfügung gestellten Daten bestehen aus zwei csv-Dateien, den Trainings- und Testdaten. Insgesamt umfassen diese einen Zeitraum von ca. 3 Jahren zwischen Januar 2018 und Oktober 2020. In diesen Bereichen sind jeweils zusammenhängende Zeiträume von unterschiedlicher Länge in den Trainingsdaten vorhanden. Anschließend folgte ein Zeitraum von ca. einer Woche mit Testdaten, welche für die Messung der Vorhersagegenauigkeit verwendet wurde. Dazwischen fehlt ein kurzer Zeitraum, um eine einfache Interpolation zu verhindern.
Da für das Training der neuronalen Netze in der Regel ein Validierungsdatensatz verwendet wird, musste dieser erst erzeugt werden. Hierfür wurde jeweils die letzte Woche des Trainigdatensatzes verwendet, da dieser relativ ähnlich zu den darauf folgenden Testdaten ist. Mithilfe des Validierungsdatensatzes kann ein mögliches Overfitting identifiziert werden sowie weitere Funktionen wie das Reduzieren der Lernrate verwendet werden.
Das anschließende Training der neuronalen Netze erfolgte bei der Vorhersage der Last ausschließlich tageweise. Bei der Vorhersage der produzierten elektrischen Leistung wurde sowohl tageweise als auch tabular bzw. direkt anhand der übermittelten Daten trainiert. Für das Training wurden somit in einem weiteren Preprocessing-Schritt tagesweise Blöcke erzeugt.
Wie für andere Kundenprojekte auch nutzten wir für das Netztraining die Python-Bibliothek Tensorflow. Hierfür hatten wir uns aufgrund der starken zeitlichen Abhängigkeit für ein LSTM für die Lastvorhersage entschieden. Bei der Vorhersage der Photovoltaik-Leistung wurde ein hybrider Ansatz gewählt. Aufgrund der physikalischen Zusammenhänge in den Eingangsdaten sollte dort keine zeitliche Abhängigkeit vorhanden sein. Trotzdessen zeigte sich teilweise eine bessere Vorhersagegenauigkeit mit LSTM-Zellen, was auf die oben beschriebenen Probleme zurückzuführen war, in denen die eingehende Strahlung nicht mit der produzierten elektrischen Energie korrelierte. Solche lokalen Effekte können teilweise über LSTM-Zellen abgedeckt werden.
Für die Vorhersage der Last wurde ein rekurrentes Netz mit LSTM Zellen verwendet. Der Vorteil dieser Zellen ist, dass sie zeitliche Informationen speichern und für die Vorhersage nutzen können.
Für die Vorhersage der von der Photovoltaikanlage erzeugten Leistung wurde ein hybrider Ansatz gewählt.
Um die Vorhersagegenauigkeit noch weiter zu erhöhen, wurde ein sogenanntes Ensemble Learning verwendet. Hierbei werden Vorhersagen unterschiedlicher Modelle miteinander verknüpft und gemittelt. Der Vorteil liegt darin, dass eine bessere Vorhersagegenauigkeit erzielt werden kann.
Aufgrund des relativ eingeschränkten Datensatzes erfolgte die interne Bewertung des Algorithmus anhand des Validierungsdatensatzes. Hierzu wurde sowohl der RMSE berechnet, der auch für die abschließende Bewertung verwendet wurde, als auch weitere Bewertungsparameter wie der MSE oder MAE.
Die abschließende Bewertung im Wettbewerb erfolgte über die Kaggle Plattform anhand von Eingangsdaten, deren dazugehörige Last und Leistung den Wettbewerbsteilnehmern und uns nicht bekannt waren.
Die Implementierung der neuronalen Netze bzw. Modelle war kein Teil der Challenge, trotz dessen werden nachfolgend einige Möglichkeiten aufgezeigt.
Da für das Training der Netze die Bibliothek Tensorflow verwendet wurde, können generell alle verfügbaren Schnittstellen dieser Plattform genutzt werden.
Somit lässt sich eine direkte Ausführung auf dem Steuergerät, Mikrocontroller oder dem Handy mit iOS oder Android realisieren. Darüber hinaus kann auch eine Verwendung direkt im Browser über Javascript oder alternativ über eine API mit aktiver Internetverbindung erfolgen.