Große Simulations­studien mit Modelica und Python

Wann bietet sich eine Parameterstudie an? Und wie sollte man dabei vorgehen? Wir stellen eine Werkzeugkette vom Simulationsmodell in Modelica über den FMU-Export und die Nutzung von Python-Skripten bis hin zur visuellen Datenexploration vor.

Franz Lanzerath

Franz Lanzerath

|

October 22, 2020

© Maksim Kabakou / 123RF.com

Warum eine Parameterstudie und was ist ein Versuchsplan?

Motivation für die Durchführung einer Parameterstudie sind im Allgemeinen neue Erkenntnisse, die man über ein System gewinnen möchte. Dabei kann das System zum Beispiel eine reale technische Anlage sein oder ein Simulationsmodell. Das Vorgehen ist folgendes: Man ändert etwas am System (einen Modellparameter bzw. Faktor) und schaut was passiert. Im Extremfall spielt man so alle Kombinationen durch und weiß dann, wie sich das System in allen möglichen Fällen verhält. Diese einfache Herangehensweise wird vollfaktorieller Versuchsplan genannt. Das Problem hierbei ist, dass der Aufwand sehr schnell sehr groß werden kann: Bei 8 Parametern (Faktoren) mit jeweils fünf Abstufungen ergibt sich ein vollfaktorieller Versuchsplan mit insgesamt 58=390.625 Versuchen.

Ist der Aufwand für die Durchführung der Versuche zu hoch, gibt es in der statistischen Versuchsplanung verschiedene Ansätze die Anzahl der Versuche zu reduzieren. Hier sind zum Beispiel Teilfaktorpläne zu nennen, die mit weniger Versuchen auskommen, dafür aber auch weniger Informationen liefern. Ein Nachteil ist z.B., dass die Wechselwirkungen der Faktoren nicht mehr vollständig erfasst werden können. In der Praxis führt man daher oft eine sequenzielle Versuchsplanung durch. Dabei wird die Anzahl der Versuche begrenzt und die Durchführung und Auswertung der Versuche erfolgt im Wechsel bis die gewünschte Genauigkeit bzw. der Informationsgewinn erreicht ist. „Fahren auf Sicht“ sozusagen.

Eine ähnliche Herangehensweise haben wir auch für die Analyse des Wärmebedarfs eines Elektrobusses gewählt, die wir im Folgenden näher erläutern.

Werkzeugkette für große Simulationsstudien mit Modelica

Ziel der Simulationsstudie war es den Wärmebedarf eines Elektrobusses für die Auslegung eines thermischen Speichers zu ermitteln. Da zum Zeitpunkt der Studie weder der Bus noch dessen Einsatzszenario vollständig festgelegt waren, wollten wir den Wärmebedarf in Abhängigkeit von Wetter, Fahrzeug und Betrieb untersuchen.

Zur Untersuchung dieser Parameter haben wir ein Fahrzeugmodell in Modelica benutzt. Modelica als objekt-orientierte, gleichungsbasierte Sprache eignet sich hervorragend für die Modellierung physikalischer Systeme, wie das einer Fahrzeugkabine. Allerdings bieten die Modelica-Entwicklungsumgebungen (z.B. OpenModelica, Dymola, SimulationX) derzeit keine besonders guten Möglichkeiten zu Durchführung groß angelegter Simulationsstudien.

Daher haben wir das Fahrzeugmodell als Functional Mock-Up Unit (FMU) exportiert. Eine FMU enthält eine kompilierte und somit ausführbare Version des Modells und kann von Applikationen, die das Functional Mock-Up Interface (FMI) unterstützen, simuliert werden. Eine Liste mit kompatiblen Tools findet sich unter https://fmi-standard.org.

Wir haben uns für Python entschieden, zum einen da wir mit MoBA Automation ein hauseigenes FMU-Tool für Python haben und zum anderen weil Python eine Vielzahl an sehr guten Bibliotheken zum Post-Processing und zur Visualisierung der Simulationsergebnisse bietet. Zur Visualisierung, oder besser gesagt zur visuellen Datenexploration, haben wir die freiverfügbare Bibliothek bokeh genutzt.

Werkzeugkette für große Simulationsstudien mit Modelica

Simulationsmodell des Busses in Modelica

Da wir für unsere Studie ein Modell nutzen, können wir natürlich deutlich mehr Varianten untersuchen, als dies im Experiment möglich ist. Allerdings muss das Modell für diesen Fall zwei Voraussetzungen erfüllen: Es muss schnell und zuverlässig rechnen.

Die Dauer der Simulationsstudie skaliert linear mir der Rechengeschwindigkeit des Modells. Nehmen wir unser obiges Beispiel mit 8 Parametern und je 5 Abstufungen ergibt sich bei einer Rechenzeit von nur einer Sekunde eine Gesamtzeit von 4,5 Tagen (390.625 s) für die Berechnung des vollfaktoriellen Versuchsplans.

Damit wird auch deutlich, warum das Modell robust laufen sollte. Kommt es während der Simulationsstudie zu Verzögerungen oder Abstürzen des Modells, kann dies die Rechenzeit stark erhöhen. Von daher ist bereits bei der Modellerstellung darauf zu achten, dass dieses im geplanten Parameterraum robust und schnell rechnet. Hierzu sollten in einem Teilfaktorplan die Min-Max-Werte der Parameter zumindest einzeln getestet werden (2 Varianten x 8 Parameter = 16 Simulationen), oder besser noch die Kombinationen aller Min-Max-Werte (28=256 Simulationen). In einem weiteren Artikel gehen wir detailliert auf das Thema statistische Versuchsplanung ein.

Kommen wir nun aber zum eigentlichen Modell. Dieses haben wir in Modelica mit unserer Bibliothek TIL und dem Add-on “TIL Cabin” aufgesetzt. Das Add-on beinhaltet bereits fertige Fahrzeugkabinen-Modelle, die wir nur noch für unsere Anwendung modifizieren mussten. Eine genauere Beschreibung des Modells und der zugrundeliegenden Physik findet sich im Blogbeitrag: „Heizlastberechnung einer Fahrzeugkabine mittels Simulation“.

Bei unserem Simulationsobjekt handelt es sich um einen 4,5m langen Elektrobus für maximal 15 Personen. Zur Untersuchung des Wettereinflusses, der Fahrzeugbeschaffenheit und des Betriebs haben wir in unserer Studie insgesamt 8 Parameter gewählt:

  • Wetter: Außentemperatur und Sonneneinstrahlung
  • Fahrzeug: Fläche und Strahlungstransmission der Fenster sowie der Wärmedurchgang von Fenstern und Wandflächen
  • Betrieb: Anzahl der Passagiere und Luftwechselrate

Die Solltemperatur im Fahrzeug ist nicht konstant, sondern in Abhängigkeit der Außentemperatur gewählt. Hierbei haben wir uns nach den Vorgaben des Verbands Deutscher Verkehrsunternehmen (VDV-236 Klimatisierung von Linienbussen) gerichtet. Die letztlich ermittelte Heiz- und Kühlleistung entspricht der notwendigen Leistung zur Einhaltung dieser Temperaturgrenzen für den stationären Zustand.

VDV-236 Temperaturband

Modellexport und Simulationsstudie in Python

Nach Export des Modells als FMU konnten wir die Simulationsstudie losgelöst von unserer Modellentwicklungsumgebung durchführen. Der weitere Teil der Werkzeugkette ist damit nicht mehr von Modelica abhängig, sondern benötigt lediglich ein Simulationsmodell in Form einer FMU. Diese kann auch aus anderen Entwicklungsumgebungen stammen, wie z.B. ANSYS oder MATLAB Simulink.

Die Simulationsstudie haben wir dann mit dem hauseigenen Tool MoBA Automation durchgeführt. MoBA Automation ist ein Python-basiertes Software-Tool mit vordefinierten, aber anpassbaren Funktionen, und grafischem Benutzer-Interface. Intern nutzt MoBA Automation den TLK Simulator zur Simulation der FMU. Alternativ kann man natürlich auch andere Python-FMU-Simulatoren verwenden (siehe: https://fmi-standard.org) und die entsprechenden Skripte und Funktionen für die Parameterstudie selbst schreiben. Aber wir wollen ja das Rad nicht jedes Mal neu erfinden 😉. MoBA Automation ist für diese Art von Aufgabenstellung konzipiert und erspart uns somit einen großen Programmier- und Zeitaufwand.

Nun zum Ablauf der Studie: Als erstes stellen wir in MoBA Automation den Versuchsplan durch entsprechende Kombination der Parameter auf (combine input parameter). Dann wird dieser in kleinere Pakete aufgeteilt (evaluate number of simulations & subdivide simulations), was uns eine Parallelisierung ermöglicht. MoBA Automation unterstützt hierbei sowohl die Verteilung der Simulationen auf die lokalen Rechenkerne der CPU als auch eine netzwerkweite Nutzung von CPUs. Die Kernfunktion zum Berechnen und Speichern der Ergebnisse (simulate and store results) enthält im Wesentlichen verschachtelte For-Schleifen. Wichtig ist hierbei, dass die Schleifen ein Timeout enthalten, sodass einzelne Simulationen übersprungen werden können, falls diese (trotz aller Mühe bei der Modellerstellung) zu lange rechnen oder gar abstürzen. Zudem sollten alle Fehler in der Schleife für ein späteres Debugging und Modellanpassungen geloggt werden.

Natürlich sollten die Ergebnisse der durchgelaufenen Simulationen regelmäßig gespeichert werden, da bei einem Absturz eine komplette Wiederholung der Studie notwendig sein könnte. Wir nutzen für die Speicherung eine SQL-Datenbank, die sukzessive mit den Parameter-Sets und den berechneten Wärme- und Kältebedarfen befüllt wird. Bei der Frequenz der Speicherung ist zwischen der Zeitdauer für die Speichervorgänge und der Dauer der Simulationen abzuwägen.

Neben den hier vorgestellten Funktionen beinhaltet MoBA Automation noch viele weitere Funktionen für Simulationsstudien, Messdatenverarbeitung und Datenanalyse. Falls Sie neugierig geworden sind und mehr erfahren möchten, kontaktieren Sie uns einfach: info@tlk-energy.de

MoBA Automation

Visuelle Datenexploration

Nach beschriebenem Ablauf haben wir die Simulationsstudie schließlich durchgeführt. Auch wir sind dabei sequenziell vorgegangen: Wir haben simuliert, die Ergebnisse analysiert, die Parameter-Sets erweitert bzw. verfeinert und wieder simuliert. Insgesamt haben wir dazu mehrere hunderttausend Simulationen durchgeführt und die Ergebnisse in unserer Datenbank gespeichert.

Bei dieser großen Anzahl an Daten muss man sich auch ein paar Gedanken zur Auswertung machen. Ein Blick auf die Zahlenreihen hilft kaum weiter. Aussagekräftige Graphiken sind hier das Maß der Dinge, da der Mensch so die Informationen viel schneller und besser erfassen kann. Allerdings ist es bei diesen großen Datenmengen hilfreich nur einen Teil der Daten darzustellen, sprich die Daten zu filtern.

Für das Filtern und Plotten stehen in Python verschiedene Bibliotheken zur Verfügung, wovon wir folgende empfehlen können:

Mit diesen Bibliotheken können eine Vielzahl aussagekräftiger Graphiken (z.B. scatter plots, bar charts, box plots, heatmaps) erstellt werden. Bokeh hält hierbei eine Besonderheit bereit: Mit interaktiven Plots gestattet die Bibliothek eine schnellere und intuitivere Datenexploration als es über die Kommandozeile möglich ist. Zudem liegen die erzeugten Plots als html-Datei vor und können so online geteilt werden. Genau dies haben wir mit einem Teil unserer Simulationsergebnisse gemacht:


bokeh Plot

Die gezeigten Daten enthalten Ergebnisse unserer Simulationsstudie, wobei 7 Parameter in je drei Abstufungen (Parametervariationen) gefiltert werden können. Die Außentemperatur ist in 6 Stufen auf der x-Achse aufgetragen. Insgesamt enthält der Datensatz somit 37×6=13.122 Versuche. Auf der y-Achse ist der Wärme- und Kältebedarf des Busses aufgetragen. Beim Hovern über einen Datenpunkt erscheint eine Info zum Parametersatz. Zudem kann auf einen Boxplot umgeschaltet werden, um statistische Infos zum Datensatz zu erhalten.

Ein Hinweis zu den Ergebnissen: Da bei der Zusammenstellung der Parametersets ein faktorieller Versuchsplan verwendet wurde, können auch Kombinationen auftreten, die in Wirklichkeit sehr selten oder gar nicht auftreten (z.B. niedrige Temperaturen von -15°C und hohe Sonneneinstrahlung von 500 W/m²). Dies ist bei der Interpretation der Ergebnisse unbedingt zu berücksichtigen.

Durch Filtern der Daten kann nun interaktiv der Einfluss der verschiedenen Parameter erfasst werden. So zeigt sich schnell, dass solare Einstrahlung und Luftwechselrate einen großen Einfluss auf den Wärme- und Kältebedarf des Busses haben. Zudem erkennt man, dass die Luftwechselrate, insbesondere bei hohen und niedrigen Außentemperaturen, den stärksten Einfluss hat und dieser abnimmt, wenn die Außentemperatur näher an die Soll-Temperatur des Busses heranrückt.

Fazit

Durch Export des Modelica-Modells als FMU ist es möglich mit überschaubarem Aufwand große Parameterstudien in Python durchzuführen. Hierbei sind eine Automatisierung und eine entsprechende visuelle Aufbereitung sehr zu empfehlen. Die beschriebene Werkzeugkette hat sich in unserem Forschungsprojekt LatHe.GO (gefördert vom Europäischen Fond für regionale Entwicklung (EFRE)) bewährt und insbesondere die Diskussion der Ergebnisse anhand der interaktiven Plots war sehr hilfreich.

Sehen Sie sich mit ähnlichen Herausforderungen konfrontiert und könnten von unserem Knowhow profitieren? Gerne können Sie uns kontaktieren: info@tlk-energy.de
Natürlich freue ich mich auch über Kommentare und Anregungen zu meinem Blogbeitrag.

Franz Lanzerath

Dr.-Ing.

Franz Lanzerath

Managing Director

TLK Energy

Dr.-Ing. Franz Lanzerath hat am Lehrstuhl für Technische Thermodynamik der RWTH Aachen promoviert. Seit 2007 beschäftigt er sich intensiv mit der modellgestützten Entwicklung thermischer Systeme. Hierbei ist einer seiner Schwerpunkte die Schnittstelle zwischen Modell und Experiment, also die Modell-Kalibrierung und Validierung. Bei der TLK Energy ist er u.a. für den Transfer neuester wissenschaftlicher Methoden und Erkenntnisse in die industrielle Praxis verantwortlich.

Weitere Blogbeiträge: