GAME: Genetic Algorithms for Adaptive Management of Energy-Flows

Fachhochschule Oberösterreich

Projektteam: Nikolas Rechberger, Florian Stefely, Paul Engelhardt, Rudolf Pitschmann, Maximilian Ebert

Betreuer: Christoph Dalpiaz

CDG Logo JRZ Logo

Motivation und Problemformulierung

Die Steuerung von Energieflüssen in modernen Wohnhaushalten stellt aufgrund mehrerer Faktoren eine komplexe Herausforderung dar:

  • Erneuerbare Energie: Photovoltaik-Energie (PV) ist verfügbar, jedoch schwankt die Produktion je nach Wetter und Tageszeit.
  • Lastverhalten: Der Energiebedarf eines Haushalts ist stark zeitabhängig.
  • Energiespeicherung: Batterien stehen zur Verfügung, um PV-Energie bei geringem Bedarf zu speichern.

Forschungsfrage: Wie lassen sich Energieflüsse im Hausnetz optimal verteilen, um die gesamten Haushaltsenergiekosten zu minimieren?

Haushalt mit E-Auto und PV
Visualisierung der Energieflüsse in einem modernen Haushalt.

Optimales Steuerungsproblem

Zur Bewertung eines Reglers wird ein zeitdiskretes Modell des Wechselrichters und der Batterie verwendet. Energietarife, Lastleistung und Solarleistung werden als Zeitreihen-Trainingsdaten bereitgestellt. Der EFC wird durch Simulation der resultierenden Netzleistung bewertet.

Kostenfunktion: Das Ziel ist die Minimierung der gesamten Haushaltsenergiekosten über einen gegebenen Zeithorizont. Die Kostenfunktion ist definiert als:

$$ J_C\left(P_{BC}\right) = -\sum_{k=t_0}^{T}(P_{N+}[k] \cdot \Delta t \cdot C_{FI}[k] - P_{N-}[k] \cdot \Delta t \cdot C_{C}[k]) $$

Genetische Algorithmen verstehen

Genetische Algorithmen (GAs) sind Suchheuristiken, die von Charles Darwins Theorie der natürlichen Evolution inspiriert sind. Sie simulieren den Prozess des „Überleben des Stärksten", um komplexe Optimierungsprobleme zu lösen. Im Gegensatz zu traditionellen Methoden pflegen GAs eine Population potenzieller Lösungen, was eine parallele Suche über den gesamten Lösungsraum ermöglicht und lokale Optima effektiv vermeidet.

Der evolutionäre Lebenszyklus

Während des Optimierungsprozesses durchläuft unser Framework einen bestimmten Satz von Operationen über Hunderte von Generationen, um die Energieflussregler kontinuierlich zu verbessern:

1. Selektion

Die am besten angepassten Individuen – also jene Regler, die die Haushaltsenergiekosten am stärksten minimieren – werden aus der Population als „Eltern" ausgewählt und geben ihre stärksten Eigenschaften an die nächste Generation weiter.

2. Reproduktion

Genetische Operatoren ahmen die biologische Reproduktion nach. Crossover wirkt wie geschlechtliche Fortpflanzung durch den Austausch von Abschnitten des „genetischen Codes" zwischen zwei Elternbäumen, während Mutation zufällige, plötzliche Änderungen einführt, um bisher unerforschte Regionen der Kostenlandschaft zu erkunden.

3. Iteration: Dieser Zyklus wiederholt sich kontinuierlich und konvergiert schrittweise gegen die globale Optimallösung.

Genetische Programmierung (GP) Optimierung

In unserer spezifischen Anwendung verwenden wir Genetische Programmierung mit Nachkommenauswahl, um optimale Regelstrukturen zu entwickeln.

Genetic Programming Explanation
Genetische Programmierung mit Nachkommenauswahl (vereinfacht)
  • Fitnessbewertung: Simulation des Kandidatenreglers zur Bestimmung seiner Effektivität.
  • Ergebnis: Ein interpretierbares Modell (Ausdrucksbaum), das Eingangsmerkmale auf einen optimierten Regelwert abbildet.

Warum Genetische Algorithmen für EFCs?

C++ Genetic Programming Framework

Wir haben ein modulares, generisches und flexibles C++-Framework entwickelt, das in der Lage ist, eine Vielzahl unterschiedlicher Optimierungsprobleme nativ auf ressourcenbeschränkten Geräten zu lösen.

Algorithmusübersicht
Übergeordnete Architektur des GP-Frameworks.
  • Hochgradig austauschbar: Kernkomponenten wie Algorithmen, Selektoren und Kostenrechner können nahtlos ausgetauscht werden.
  • Vollständig parametrisierbar: Konfiguration über JSON-Dateien.
  • Integrierte Hilfsfunktionen: Enthält Werkzeuge für JSON/SVG-Datenexporte und statistische Nachverfolgung.
  • Generisches Design: Anpassbar an verschiedene Fitnesslandschaften über die Energieflussregelung hinaus.
Ausdrucksbaum-Datenstruktur
Implementierung des Ausdrucksbaums zur Abbildung von Merkmalen auf Steuergrößen.

Algorithmen & Module

Offspring Selection Genetic Algorithm (OSGA)

OSGA Results

Age Layered Population Structure (ALPS)

Verhindert vorzeitige Konvergenz durch hierarchische Altersschichten mit eingeschränktem Wettbewerb. Bietet kontinuierliches Neubefüllen und erlaubt nur Aufwärtsmigration.

ALPS Structure
ALPS Results

Non-Dominated Sorting Genetic Algorithm 2 (NSGA II)

Zielt auf den bestmöglichen Kompromiss zwischen mehreren Zielen ab (z.B. Maximierung des finanziellen Gewinns bei gleichzeitiger Minimierung der Baumgröße).

Ablauf des NSGA II Algorithmus
Ablauf des NSGA2 Algorithmus.
NSGA 3 Ziele
Optimierung für Gewinn, Baumgröße und Netznutzung.

Integriertes Statistikmodul

Von außen definierbare Funktion für das Erzeugen und Exportieren von Daten für Satistik und Auswertung (z.B. Knotenverteilung, Kostenwerthistorie und Zwischenergebnissen).

Baum SVG-Export
Automatisierter SVG-Export eines Kandidatenbaums.
Knotenstatistik
Visualisierung der Evolution der Knotentypen.

Parallelisierung & Multithreading-Architektur

Um kontinuierliches Lernen auf ressourcenbeschränkten Geräten praktikabel zu machen, setzt das Framework stark auf die Parallelisierung der rechenintensivsten Aufgabe: die Fitnessbewertung generierter Ausdrucksbäume durch Simulation.

Architekturdesign

  • Algorithmusunabhängigkeit: Die Optimierungsalgorithmen (wie ALPS und OSGA) sind vollständig vom Thread-Management entkoppelt. Sie erzeugen Nachkommen und gruppieren sie in logische Batches.
  • Stapelverarbeitung: Diese Batches werden direkt an den `CostCalculator` übergeben. Der Rechner übernimmt interne Simulationsberechnungen wann immer möglich parallel.
  • Thread-Sicherheit: Derzeit verteilt der InverterMetaModelCostCalculator Ausdrucksbäume gleichmäßig auf die verschiedenen Threads. Jeder Thread pflegt seinen eigenen lokalen Simulationszustand, um Sperr-Overhead zu vermeiden und vollständige Thread-Sicherheit zu gewährleisten.

Aktuelle Engpässe & Fallbacks

Da die Algorithmen eine einheitliche Architektur teilen, mussten sie nur einmal implementiert werden. Einzelne Kostenrechner müssen jedoch explizit für die Unterstützung von Parallelisierung ausgelegt sein. Falls ein Kostenrechner auf globale Daten angewiesen und nicht thread-sicher ist, fällt das Framework nahtlos auf eine sequenzielle Ausführungslaufzeit zurück.

Factory-Pattern-Architektur
Das Factory-Pattern ermöglicht die nahtlose Übergabe von Batches an multithreaded Kostenrechner.

Hardware-Leistung: Zielumgebung

Variscite Board

Var-SOM-MX93 Spezifikationen

SoCNXP i.MX93
CPU2x Cortex-A55 @ 1.7 GHz
Co-ProcessorCortex-M33 @ 250 MHz
RAM2 GB LPDDR4
Flash16 GB eMMC

Rechenzeit & Optimierungs-Tradeoffs

Die Worker-Evaluierungszeit pro Individuum in Schicht 0 beträgt ungefähr 54–55 ms. Die Nutzung der oben beschriebenen Multithreading-Architektur verdoppelt den Durchsatz auf den 2 verfügbaren A55-Kernen effektiv.

Zeitübersicht
Rechenzeit pro Schritt auf der Hardware.
Qualitäts-Tradeoff
Anpassung der anfänglichen Schicht-0-Population ergibt eine 1,6-fache Beschleunigung.

Durch Reduzierung der anfänglichen Schicht-0-Population von 300 auf 100 Individuen konnten wir eine 1,6-fache Beschleunigung beobachten, während ein hochprofitabler Energieflussregler erhalten blieb. Dies beweist, dass kontinuierliche Anpassung und symbolische Regressionsoptimierung direkt auf eingebetteter Edge-Hardware praktikabel ist.

Projektteam

Nikolas Rechberger

Nikolas Rechberger

Florian Stefely

Florian Stefely

Paul Engelhardt

Paul Engelhardt

Rudolf Pitschmann

Rudolf Pitschmann

Maximilian Ebert

Maximilian Ebert