Software-Entwicklung: Simulator für die ökonomische Bewertung von Lernverfahren in einem Energiemarkt

Motivation:

Die Digitalisierung in der Energiewirtschaft gewinnt seit Jahren an Bedeutung, auch für Energiemärkte. Die stärkere Einbeziehung von automatisierten Agenten hat dabei nicht nur große Auswirkungen auf das Marktverhalten, sondern auch auf die Geschwindigkeit der Interaktionen und den ökonomischen Erfolg Einzelner im Markt. Agenten nutzen dabei unterschiedliche Lernverfahren und Datendimensionen. Neben dem „Grad der Intelligenz“ spielen auch die Verfügbarkeit und Qualität der Daten eine wichtige Rolle für die Performance der Agenten in ökonomischer Hinsicht. In Situationen mit unvollständigen Daten oder geringer Datenqualität ist es beispielsweise unklar, ob und inwiefern unterschiedliche Lernverfahren den ökonomischen Erfolg beeinflussen. Eine zentrale Forschungsfrage, die uns beschäftigt, ist, welchen Auswirkungen die Datengrundlage auf das Einkommen individueller Agenten im Markt hat.

Ziel:

Das Ziel ist die Entwicklung einer Simulationsumgebung, die es erlaubt, den ökonomischen Erfolg von unterschiedlichen Lernverfahren miteinander zu vergleichen. Dabei sollen verschiedene Situationen untersucht werden, indem beispielsweise der Datenzugriff begrenzt und/oder die Auflösung der Daten verändert wird. Die genutzten Lernverfahren werden vor Beginn der Simulation festgelegt.

Gegenstand der Simulationsumgebung ist ein Energiemarkt, auf dem die Agenten einmal pro Periode miteinander agieren. Es wird in jeder Periode ein Marktpreis ermittelt (Erklärung weiter unten). Die Agenten bieten Energie an oder fragen diese nach. Zuerst sollen Sie sich hier auf einen vereinfachten Fall beschränken, dass es nämlich nur einen ‘intelligenten’ Agenten gibt. Dieser ist der Energiespeicher und nutzt einen Lernalgorithmus. Ziel des Energiespeichers ist es, in Perioden mit einem geringen Marktpreis Energie zu speichern und diese später teurer zu verkaufen. Die anderen Agenten auf der Angebotsseite bieten entsprechend Ihren Kosten.

In einer zweiten Stufe sollen auch die Agenten auf der Angebotsseite Lernalgorithmen nutzen und versuchen, den individuellen Erlös zu maximieren. Diese Agenten sollen nicht zwangsläufig denselben Algorithmus nutzen wie der Speicheragent, noch sollen alle Agenten auf der Angebotsseite zwangsläufig den gleichen Algorithmus nutzen. Die Nachfrageseite ist in beiden Stufen nicht elastisch und akzeptiert jeden Marktpreis.

Die Simulationsumgebung besteht aus den folgenden Bausteinen: Lernalgorithmen, Agententypen, Markt mit dahinterliegendem Marktmechanismus, initiale Konfiguration, Restriktionen, Ausgabe. 

Lernalgorithmen

Es sollen unterschiedliche Lernverfahren genutzt werden, die in der initialen Konfiguration ausgesucht werden können. Dazu sollen bestehende Implementierungen z. B. aus dem Bereich des Reinforcement Learning genutzt werden oder den klassischen ARIMA-Regressionsmodellen. Hier können Sie schon bestehende Implementierungen nutzen, und wir werden Ihnen dazu weitere Informationen bereitstellen.

Agenten

Es gibt drei übergeordnete Agententypen (Angebotsseite, Nachfrageseite, Speicher). Die Agenten der Angebots- und Nachfrageseite treten über den Markt miteinander zusammen. Der Speicher entscheidet vor jeder Periode ob er auf der Nachfrage- oder Angebotsseite auftritt oder nichts tut.

1. Agent der Nachfrageseite:

  • Hat eine Nachfrage nach Energie in jeder Periode entsprechend eines darunterliegenden Lastprofils
  • Nachfrage schwankt in jeder Periode und orientiert sich an bekannten Lastprofilen (Daten dazu werden bereitgestellt)
  • Agent weiß zu Beginn der Periode, welche Nachfrage er hat
  • Agent kommuniziert benötigte Menge (Nachfrage) an den Markt
  • Die Agenten sind nicht preiselastisch. Das bedeutet, dass Sie jeden Preis akzeptieren, der auf dem Markt zustande kommt.

2. Agent der Verkäuferseite:

  • Bietet Energie in jeder Periode anhand eines darunterliegenden Erzeugungsprofils.
  • Jeder Agent hat spezifische Erzeugungskosten, die gedeckt werden müssen
  • Der Agent bietet einen Preis, der die jeweiligen Kosten deckt + kleine Variation (Stufe 1)
  • Der Agent berechnet und bietet mit Hilfe eines Lernalgorithmus einen Preis der den Erlös maximiert. (Stufe 2)
  • Jeder Agent hat eine maximale Erzeugungskapazität, die er anbietet
  • Es gibt 3 Agentengruppen auf der Angebotsseite
    • „Base-Agenten“ haben geringe Erzeugungskosten
    • „Peak-Agenten“ haben hohe Erzeugungskosten
    • „Renewable-Agenten“
      • Keine Erzeugungskosten
      • Erzeugung schwankt und ist in einigen Perioden nicht vorhanden
  • Zu allen drei Agentengruppen werden Erzeugungsprofile bereitgestellt

3. Agent des Speichers:

  • Optimierungsproblem: Erlös des Speichers soll maximiert werden
  • Input für das Lernverfahren aus den vergangenen Perioden:
    • Erlöse
    • Speicherstände
    • Anzahl der Verkaufsgebote
    • Angebotene Kapazität
    • Gesamtnachfrage
    • Anzahl der Agenten auf der Angebotsseite
  • Agent entscheidet, ob Verkaufsgebot oder Kaufgebot erstellt wird
    • Berücksichtigung des aktuellen Ladestands des Speichers
    • Berücksichtigung der maximalen Lade/Entladekapazität des Speichers
  • Agent sendet Gebot an den Markt

Markt

Auf dem Markt werden die Gebote der Agenten von beiden Seiten (Angebot und Nachfrage) gesammelt und ein Marktpreis ermittelt. Die erfolgreichen Anbieter erhalten einen Erlös (gebotene Menge multipliziert mit dem Marktpreis)

  • Sammlung und Aggregation der benötigten Nachfrage an Energie (Gebote der Nachfrageseite)
  • Sammlung aller Gebote der Anbieter
  • Sortiert die Gebote aufsteigend nach dem Gebotspreis
  • Berechnet die Anzahl der Gebote, die benötigt werden, um die gesamte Nachfrage zu decken
  • Der Marktpreis entspricht dem höchsten Gebot, das die Nachfrage deckt
  • Erlöse für die Agenten der Angebotsseite werden berechnet (Menge*Marktpreis)
  • Markt kommuniziert die Erlöse an die Agenten

Zugriff /Auflösung der Marktdaten

Entsprechend der Angabe in der initialen Konfiguration soll der Zugriff der intelligenten Agenten auf die Marktdaten einschränkbar sein (Kein Zugriff / Zugriff).

  • Anzahl der Verkaufsgebote
  • Angebotene Kapazität
  • Gesamtnachfrage
  • Anzahl der Agenten auf der Angebotsseite

Die Auflösung dieser Daten soll ebenfalls entsprechend der Angabe in der initialen Konfiguration einstellbar sein.

  • Vollständig
  • Stichprobe
  • Zeitliche Verzögerung

Initiale Konfiguration

  • Anzahl der Agenten auf der Nachfrageseite
  • Anzahl der Agenten auf der Angebotsseite
  • Maximale Kapazität der Angebotsseite
  • Aufteilung der Agentengruppen auf der Angebotsseite (Base, Peak, Renewable)
  • Algorithmus des Speicheragenten (Stufe 1)
  • Algorithmen der Angebotsseite (Stufe 2)
  • Aufteilung der Algorithmen innerhalb der Agentengruppe auf der Angebotsseite (Stufe 2)
  • Kapazität des Speichers
  • Maximale Leistung, die in einer Periode gespeichert/abgerufen werden kann
  • Zugriff auf Marktdaten
  • Auflösung der Marktdaten
  • Anzahl der Durchläufe
  • Abschließend: Prüfung, ob es Restriktionen eingehalten werden oder es Inkonsistenzen innerhalb der Konfiguration gibt.

Die Restriktionen (gelten für jeden Simulationsdurchlauf)

  • Nachfrage muss immer gedeckt sein
  • Der intelligente Agent kann nur Energie verkaufen, die im Speicher ist.
  • Der intelligente Agent kann nur soviel Energie verkaufen/kaufen, wie die maximale Leistung zulässt
  • Der intelligente Agent kann nur soviel Energie speichern, wie die Kapazität des Speichers zulässt

Ausgabe:

CSV oder HDF5 Format

  • Marktpreis pro Periode
  • Nachfrage pro Agent pro Periode
  • Angebot pro Agent pro Periode
  • Gebote pro Agent (Angebot und Speicher)
  • Erlöse des Speicheragenten pro Periode
  • Erlöse der Agenten auf der Angebotsseite

Programmiersprache: Java