Wahl des Algorithmus

Hi!
Hab mir den Code ein ganz kurz angesehen, wie im Podcast erwähnt verwendest du ja einen evolutionären Algorithmus.
Kannst du vielleicht kurz den Hintergrund dieser Algorithmus-Wahl erklären?
Hintergrund der Frage: Wie verhält sich die Performance Algorithmus wenn der Suchraum vergrößert wird (zB optimierung über mehrerer Tage oder mehrerer Verbraucher, oder auch kontinuierliche Werte für Ladeleistungen).

Könnte man dafür einen Simplex verwenden, oder ein Gradienten-basiertes Verfahren?

Lg,
Georg

Ich bin dafür zwar nicht verantwortlich, aber ich hätte den auch gewählt. Daher versuche ich mich mal an einer Antwort.
Der Suchraum ist durch die Vielzahl an Einflussfaktoren (PV-Prognose, Strompreis, Lastprofil, mehrere steuerbare Verbraucher) und deren Nicht-Linearität sehr groß. Evolutionäre Algorithmen sind robust gegenüber hochdimensionalen und komplexen Suchräumen, da sie durch ihre stochastische Natur auch bei großen Problemgrößen gute Lösungen finden können, ohne lokale Optima zu stark zu bevorzugen.

Aber da die Optimierung viel Rechenzeit verschlingt, wäre es interessant auch mal andere Algorithmen zu sehen. Evtl könnte man die auch kombinieren um z.B. Gute Kandidaten für eine Lösung schneller zu finden.

Kennst du dich da evtl aus?

Lg

Der Problem ist leider nichtlinear, damit sind dann alle linearen Verfahren raus :frowning: Gradienten können wir nicht berechnen (höchstens numerisch und das wird vermutlich noch teurer) und die Gefahr sich in einem lokalen Minimum festzufressen ist hier auch sehr hoch. Aber man kann gerne mal überlegen ob uns da noch was schlaueres einfällt. Es wäre eine Kombination mit einem kleinen ML Model denkbar, das würde es erheblich beschleunigung. Ansonsten wäre es vermutlich sinnvoller mehr Speed rauzszuholen, dann ist das evolutionäre auch egal.

Hab mir, um mich ein bisschen einzudenken in das Problem, EMHASS angesehen.
Die sind relativ überzeugt davon, dass das ein lineares Problem ist:
Link entfernt

Habs noch nicht ausprobiert, nur ein bisschen doku gelesen, aber soweit ich sehe, können die auch relativ viel (also zB Verbrauchsvorhersage wo verschiebbare Lasten ausgenommen sind).

Welche konkreten Optimierungen könnten wir dann mit EOS mehr/besser lösen, weil wir eben keine linearen constraints haben müssen?
Das evolutionäre Algorithmen weniger anfälliger sind gegenüber lokalen Minima (sofern es diese in bedeutender Anzahl gibt), ist in jedem Fall ein Vorteil.

Hallo in die Runde.

ähnlich zu den evolutionären Algorithmen sind stochastische Methoden.

Bei sehr komplexen und nichtlinearen Modellen kann man Monte Carlo Simulation verwenden. Schaut mal unter "Arie Dubi Israel" in Google nach, ist schon etwas älter, aber immer noch gut! Damit wurden hochkomplexe Prozesse bei Militär und Bahn untersucht, zum Beispiel die sichere Maintenance und Einsatzbereitschaft von Militärflugzeugen der israelischen Luftwaffe geplant. Stochastische Simulation nutzt man auch bei der Crash Simulation, die extrem nichtlinear sein kann. Man baut dabei ein nahezu beliebig komplexes Modell mit n Modellvariablen auf. Jede Variable besitzt aber in der Realität/im Test so gut wie nie den idealisierten Modell(mittel)wert, sondern weicht in der Regel davon ab in Form einer Wahrscheinlichkeitsverteilung um einen Mittelwert herum (zB für Blechdicke, Dummyposition, Crash-Geschwindigkeit); meist aber ist es eine Gaußverteilung. Eine Besonderheit sind Designvariablen, diese können zum Beispiel auch gleichverteilt sein in Designbereich. Dann macht man m Simulationen mit m Modellen, wobei man für jede der m Simulationen alle Variablen per Zufallsgenerator berechnet und einsetzt. Konkret wird für jede der n Variablen ein m-ter Wert per Zufallsgenerator so berechnet, dass die Wahrscheinlichkeitsverteilung für alle m Werte der Variable wieder deren definierter Wahrscheinlichkeitsverteilung entspricht (Beispiel für m=10, Stahldicke ist 10,0mm+-1,0mm --> Werte sind ähnlich 10,3; 10,8; 8,9; 10,1; 9,7; 9,2; 9,7;10,2; 11,0; 10,1 geschätzt, dies sollte grob eine Gaußverteilung ergeben;-) Das macht man ähnlich für alle anderen der n Variablen. Man erhält so m realitätsnahe Modelle. Mit diesen m Modellen führt man die m Simulationen (mit Variation der n Variablen) durch und erhalt dann m Ergebnissätze mit p Ergebniswerten, (Ergebniswerte sind zB Kopfverletzungsschwere, Beschleunigung,..). Da m Simulationen durchgeführt wurden, erhält man m * p Ergebniswerte. Diese kann man grafisch auftragen, als Kurven, Ergebniswolken, Dichtefunktionen darstellen oder über Korrelationsanalysen (Input-Input, Input-Output, Output-Output) weiter untersuchen. Die Methode hat den Vorteil, dass der Rechenaufwand nicht exponentiell ansteigt mit der Parameterzahl! Eigentlich kann man fast beliebig komplexe Probleme damit lösen, auch wenn sie nichtlinear sind. Man muss nur die Eingangsvariablen und Designvariablen kennen oder schätzen und deren Verteilung in der Simulation berücksichtigen. Genial wird es, wenn man mit Hilfe von Designvariablen eine stochastische Optimierung durchführt. Diese kann ähnlich wie beim evolutionären Algorithmus in mehreren Schritten stattfinden. Besonders interessant sind auch die Robustheitsuntersuchungen mit dieser Methode, die Robustheit ist oft aus "Ergebniswolken" deutlich erkennbar.

Ich bin überzeugt davon, dass man damit dieses komplexe oben beschriebene Problem lösen kann und Zustandswahrscheinlichkeiten für nahezu beliebige Szenarien berechnen kann.

Wir haben die Methode "Stochastic Optimization and Robustness Management" vielfach erfolgreich im Bereich der Fahrzeugsicherheit verwendet. Arie Dubi im Logistik und Militärbereich. Man kann sie auch zur Bildung von virtuellen Testergebnissen als Training für KI einsetzen, zB für das autonome Fahren. Warum jetzt nicht auch im Energiebereich?

Eine Software dazu findet man unter Complexity Management: Link entfernt

Ich glaube, fähige Programmierer können das selbst entwickeln.

Links, Programmcode, PN und Anhänge sowie der Zugang zum eigenen Profil sind wegen Spamabwehr für die ersten 3 Posts nicht freigeschaltet.

Lesenswert:

https://www.akkudoktor.net/forum/postid/206307/

Links und Code werden aus dem Beitrag automatisch entfernt, dabei gibt es gelegentlich ganz korrupte Fäden, deren Herstellung uns viel Arbeit macht und nicht ohne Verluste abgeht.

Also bitte erst drei Posts!

@augomat EMHASS hat einen ganz anderen Ansatz. Ich hab jetzt wenig Lust die Gleichungen hinzuschreiben, aber ich bin mir relativ sicher, dass die NL sind. Das ist aber aktuell nicht wirklich das große Problem.

Stochastische OPtimierungsmethoden sind ja das was wir bei uns in der Forschung auch verwenden, das könnte auf Dauer sehr spannend werden. Aktuell benötigen wir das aber noch nicht. Wir nutzen einen EGO Algorithmus, ich finde den analytisch sehr gut nachvollziehbar.

Aber das Verfahren hat hier wirklich eine eher untergeordnete Rolle, die Simulation des Systems ist wichtiger und auch die APIs usw.

1 „Gefällt mir“

Mit EMHASS versuche ich auch schon ein wenig herumzuspielen.

Ich habe aber schon mit meiner zu komplexen PV Anlage deren config Möglichkeiten gesprengt... und mein ungewöhnliches Lastprofil schmeckt dem ML forecaster auch nicht...

Da ich hier noch nicht genug Beiträge habe, kann ich keinen Link zu dem Drama dort posten.

Also: wenn ihr noch einen etwas komplexen Testfall braucht, teste ich gerne. Aktiv entwickeln kann ich nicht, da bin ich zu lange raus.

Wenn wir hier schon mal bei Algorithmen sind hätte ich eine Frage an Andreas.

Wie berechnest du die Prognose für deinen Stromverbrauch für die nächsten 24h? Nimmst du da Regressionsmodelle wie zum Beispiel ein ganz normales ARIMA oder steckt da mehr dahinter?

Ich hatte schon mal überlegt, ob man da nicht besser mit neuronalen Netzen bei denen man eventuell noch andere Einflussgrößen wie Temperatur, Niederschlag und Feiertage mit einbezieht, besser fährt. Ich hatte da so an VAR (vector autoregression) oder besser LSTM gedacht.

@thomasw69 ist ein total billiges Stochastik Modell.

Alles Basis eine Art tägliches SLP (selbst erzeugt) und das korrigiere ich mit historischen Daten.

Ein lstm oder ähnliches mit zusätzlichen Inputs wäre denkbar. Wobei das einfache Modell auch Varianz zurückgibt und eigentlich gut funktioniert. Prio ist da eher niedrig

Komm auch grad vom Sourcecode auf Github und frage mich, weshalb die Optimierung mit neuronalen Netzwerken gemacht wird. Für mich klingt das ganze nach einer klassischen GGLP-Optimierung mit Zielfunktion, Entscheidungsvariablen und Constraints. Und ich hätte auch keine Bedenken wegen der nicht-Linearität eines solchen Modells, das kann man mit entsprechenden Modellierungsmethoden sehr wohl hinbekommen.

Hi,

Eine kleine Geschichte:

In der Raumfahrt hat man verzweifelt versucht evolutionäre und stochastische Methoden zu verwenden um thermische Modelle zu korreliern. Das Argument genau das gleiche: stark nicht linear, linare Methoden sind raus.

Es gibt viele Vorträge und Paper von Industrie und Institute die alle zu dem Schluss kommen: ja es geht für einfache Modelle aber für reale Anwendungen nicht einsetzbar da Rechenzeiten von Monaten oder Jahren rauskommen. Also hat man es aufgegeben und Jahrzehtelang "manuell" gelöst.

Irgendwie konnte ich nicht glauben das es nicht geht und habe einige Jahre damit verbracht darüber zu grübeln. Dann kahm ich auf einen alten Algorithmus aus den 60ern der recht wenig bekannt ist. Das Ergebnis: 2 bis 3 Größenordnungen weniger Iterationen. Heute startet man am Abend die Rechnung und am nächsten Morgen hat man das Ergebnis vorliegen.

Habe vor einiger Zeit gelesen das er für die Korrelation für das James Webb Teleskop verwendet wurde.

Fazit:

-Stochastische und Evolutionäre Algorithmen sind robust und einfach einzusetzen aber oft sehr ineffizient.

-Technische Probleme sind oft nicht so kompliziert das sie diese Algorithmen wirklich brauchen. Sie werden oft nur kompliziert gemacht. Besonders durch anscheinliche Vereinfachungen und ungeschickte Definitionen.

Der Algorithmus ist der gute und der schlechte algorythmus von Broyden. (Ja die heißen wirklich so, Nicht bfgs!) Man findet ihn nicht bei den optimierung algorythmen sondern bei lösungen zum gelichungssystemen. Bei Wikipedia ist die Geschichte vom blinden Bogenschützen verlinkt, der erklärt es im einfachen Worten.

Ob der Algorithmus auch sich auf die finanzielle Optimierung anwenden lässt, bin ich mir nicht sicher. Könnte mir aber vorstellen das es mit einigen Anpassungen sinnvoll ist. Folgende Punkte passen:

-Viele Eingangsparameter

  • mehrere Ausgangsparameter

  • lokal relativ monoton (typisch für technische reale Probleme)

  • Iterationen vom Modell sind das was "kostet".

Um das Modell an historischen Daten anzupassen ist es genau richtig.

Gruß Luke

Konnte nicht schlafen und muste darüber grübeln.

Ich stimme @drdebian voll zu.

Neuronale Netze, stochastische Methoden usw. sind funny, fanncy und lustig anzuschauen aber hier ineffizient und eher eine Sackgasse.

Der Grund ist das deren Aufwand mit der Anzahl an Parametern sehr schnell steigt.

Ich könnte mir vorstellen das folgender algorythmus ein gut funktionieren könnte:

Betrachten wir 2 Kategorien die optimiert werden:

Variable Verbraucher die in einem Zeit Fenster verschoben werden können (Waschmaschine)

Speicher in Energie verbraucht und später einspart. (mit einem Wirkungsgrad)

So kann man vorgehen:

1) Energiekosten berechnen

simulieren 2 Wochen einem 15 min Raster als hätte man keinen Speicher und ohne die Variablen Verbraucher. Die Energie speist man ein oder zieht sie aus dem Netz.

Über den Netzbezug oder Einspeisung hat man jetzt die Energie spezifischen Kosten für jeden 15 min Zeitschritt (Euro pro kwh).

2) Variablen Verbraucher optimieren.

Ich fange mit den Verbraucher mit dem größten Verbrauch in einem 15min an. Da es nicht so viele sind könnte man diese in den Kosten Profil "durchschieben" und den kostengünstigen Zeitpunkt finden. (Geht sicher besser)

3)Speicher Optimieren:

a)suche den Zeitpunkt (t_max) mit den höchsten spez. Kosten an.

b) berechne die spez. Kosten für die Speicherung relativ zu diesen Punkt.

c)Ich suche mir den Zeitpunkt mit den niedrigsten spez Kosten.(es ist egal ob er in der Vergangenheit oder Zukunft ist)

Jeder Speicher kann eine Energiemenge zu einem bestimmten Preis an. Die Energiemenge ist begrenzt durch: Speicher inhalt, Leistungsgrenzen, und ggf andere Randbedingungen.

Das einfachste Modell für den Preis ist spez. Energiekosteten Link entfernt

d)Hier lade ich den Speicher auf bis man an eine Grenze kommt. Und spare die Energie bei t_max ein.

e) aktualisiere die spez Energie Kosten.

  • 3)Das wiederhole a bis d bis es nichts zu optimieren mehr gibt.

Sonderfälle:

Ein E-auto kann man als viele kleine variable Verbraucher betrachten und ein Speicher. Die kleinen Variablen Verbraucher sind die nötigen energiepakete die man braucht um mindestens 70% um 7:00 zu haben. Das Zeitfenster ist also z.B. "jetzt bis 7:00"

Der Speicher ist nur verfügbar wenn das Auto angeschlossen ist.

Thermische Speicher (Haus oder Warmwasser hochheizen haben eine zeitlich abhängigen Wirkungsgrad). Das ist für "b" wichtig.

Gruß Luke