Du hast eine Batterie. Strompreise ändern sich stündlich. Du willst so viel Geld wie möglich verdienen, indem du entscheidest, wann du lädst (günstig kaufen) und entlädst (teuer verkaufen). Das ist es — das ist ein Optimierungsproblem.
Jedes Optimierungsproblem hat genau drei Zutaten. Lerne diese, und du kannst jede Entscheidung als Optimierungsproblem formulieren — nicht nur für Batterien.
Das sind die Stellschrauben, an denen du drehen kannst. Für eine Batterie, die 24 Stunden betrieben wird, sind deine Entscheidungen:
p_laden[t] = Ladeleistung in Stunde t (MW)
p_entladen[t] = Entladeleistung in Stunde t (MW)
Die Aufgabe des Optimierers ist es, die besten Werte für diese Variablen zu finden. Alles andere (Preise, Batteriegröße, Wirkungsgrad) ist ein Parameter — vorgegeben, nicht gewählt.
Die Zielfunktion ist eine einzelne Zahl, die dem Optimierer sagt, wie gut eine Lösung ist. Für eine Batterie im Day-Ahead-Markt ist es schlicht der Erlös:
maximiere: Σ preis[t] × (p_entladen[t] − p_laden[t]) für t = 1..24
Beim Entladen verkaufst du zu preis[t]. Beim Laden kaufst du zu preis[t].
Der Optimierer findet das Lade-/Entlademuster, das diese Summe maximiert.
Nebenbedingungen sind die physikalischen und vertraglichen Grenzen, die der Optimierer respektieren muss. Ohne sie würde er einfach sagen: „Entlade unendlich viel Leistung zum Spitzenpreis." Einige Batterie-Nebenbedingungen:
0 ≤ p_laden[t] ≤ P_max und 0 ≤ p_entladen[t] ≤ P_max0 ≤ SoC[t] ≤ E_max (Ladezustand darf die Batteriegröße nicht überschreiten)SoC[t] = SoC[t-1] + η×p_laden[t] − p_entladen[t]/η (was rein geht, muss rauskommen, abzüglich Verluste)
Der Parameter η (Eta) ist der Gesamtwirkungsgrad — typischerweise 0,85–0,92 für Lithium-Ionen.
Dies ist ein Parameter, keine Entscheidungsvariable.
Hier die vollständige Struktur einer einfachen Batterie-Day-Ahead-Optimierung:
Gegeben (Parameter):
preis[t] — Day-Ahead-Preis für jede Stunde (€/MWh)
P_max — Max. Lade-/Entladeleistung (MW)
E_max — Energiekapazität der Batterie (MWh)
η — Gesamtwirkungsgrad
SoC_init — Anfangsladezustand (MWh)
Finde (Entscheidungsvariablen):
p_laden[t], p_entladen[t] für t = 1..24
Maximiere (Zielfunktion):
Σ preis[t] × (p_entladen[t] − p_laden[t])
Unter den Nebenbedingungen:
0 ≤ p_laden[t] ≤ P_max
0 ≤ p_entladen[t] ≤ P_max
SoC[t] = SoC[t-1] + η×p_laden[t] − p_entladen[t]/η
0 ≤ SoC[t] ≤ E_max
SoC[0] = SoC_init
Welches der folgenden ist in der obigen Formulierung eine Entscheidungsvariable?
Warum kann der Optimierer nicht einfach in der teuersten Stunde mit maximaler Leistung entladen und sonst nichts tun?
Wenn du möchtest, dass der Optimierer auch die Batterie-Degradation minimiert, was müsstest du ändern?
Du kennst jetzt die Anatomie jedes Optimierungsproblems. In Lektion 2 werden wir genau diese Formulierung in Python implementieren — mit der Pyomo-Bibliothek und dem HiGHS-Solver — und sie mit echten Day-Ahead-Preisdaten ausführen.
Boyd & Vandenberghe, Convex Optimization, Kapitel 1 (S. 1–15) — „Introduction" gibt die formale Definition eines Optimierungsproblems und die Intuition dahinter. Kostenloses PDF. Lies nur die ersten 15 Seiten.
Rechtliches: Impressum