Objektorientierte Simulation Dr.-Ing. Siegbert Hopfgarten Fakultät für Informatik und Automatisierung Institut für Automatisierungs- und Systemtechnik Fachgebiet Simulation und Optimale Prozesse Tel., E-Mail: +49 3677 69-1418, [email protected]Raum: Z 3011 Fachgebietsinternetseite: http://www.tu-ilmenau.de/simulation Objektorientierte Simulation TU Ilmenau Seite 1 / 126
126
Embed
Objektorientierte Simulation - Startseite TU Ilmenau · Objektorientierte Simulation TU Ilmenau Seite 26 / 126. 2. Modellierungssprache Modelica R Allgemeine Klassen (Fortsetzung)
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Objektorientierte Simulation
Dr.-Ing. Siegbert Hopfgarten
Fakultät für Informatik und AutomatisierungInstitut für Automatisierungs- und SystemtechnikFachgebiet Simulation und Optimale Prozesse
Aufwändig zu erzeugen/umzuformen; manuelle Ableitung ausZustands- und Erhaltungsgleichungen; fehlerträchtig
Weniger gut wiederverwendbar
Schwierigkeiten bei komplexen Systemen, konsistenteAnfangsbedinungen herzustellen (insbesondere beidifferential-algebraischen Gleichungssystemen(DAE-Systemen)
Objektorientierte Simulation
TU Ilmenau Seite 4 / 126
1. Einführung
Kausale Modellierung - Nachteile (Fortsetzung):
A priori (Im Vorhinein): Was ist bekannt (Eingang), was istunbekannt (Ausgang)?
Annahmen über Kausalität auf Komponentenebene (nicht:Gesamtsystem)
Robustheit, Wartung: Modellparameter „verteilt“ (nicht imSinne von Systemen mit verteilten Parametern, sondern imSinne „verstreut“ im gesamten Modell (Signalflussbild))
Diagramm beinhaltet nicht genügend Informationen, umAnfangsbedingungen zu berechnen
Beschreibung eines Systems/einer Komponente anhand vonZustands- und Erhaltungsgleichungen (i. d. R. Kombination;−→ DAE-System); physikalische Gesetzmäßigkeiten
Keine explizite Festlegung über Ein- und Ausgang
Zwei Arten von Variablen: Potenzial- und Flussvariablen;(Potenzialvariablen: Triebkraft); Einheit des Produkts vonFluss- und Potenzialvariablen typischerweise Einheit derLeistung
Beispiel: Block- und objektorientierte Modellierung eineselektrischen Netzwerks (Blockschaltbild, Objektdiagramm)
Objektorientierte Simulation
TU Ilmenau Seite 6 / 126
1. EinführungBegriffe
Objekt (in der objektorientierten Programmierung):Datenstruktur mit Eigenschaften und MethodenObjektorientierung: Zuordnung/Anbindung von Eigenschaftenund Methoden an ein ObjektModell: Verhaltensbeschreibung (nicht Objekt selbst; entsprichtKlasse (class) bei objektorientierter Programmierung)Komponente: Instanz eines Modells/einer Klasse −→ Objekt(für gegebenes Modell, z. B. Widerstandsmodell, ist dieaktuelle Instanz der jeweilige Widerstand (z. B. R1, R2))Unter-, Subkomponente: ist in anderen Komponentenenthalten (hierarchische Modelle)Systemmodell: abgeschlossenes Modell; keine externenVerbindungen (engl.: self-contained); Anzahl der Unbekannten= Anzahl der Gleichungen
Objektorientierte Simulation
TU Ilmenau Seite 7 / 126
1. EinführungBegriffe (Fortsetzung)
Quantität (engl.: quantity): bezieht sich auf die Gebilde (engl.:entity), die einen Wert haben (z. B. Widerstandswert einesWiderstands (real, integer, boolean; Skalar, Feld (engl.: array)))
Definition: Beschreibung aller Variablen, Parameter,Gleichungen, die mit dem Modell verbunden sind(Modelldefinition)
Deklaration: Instanziierung/Erzeugung eines Objekts/einerKomponente, einer Variablen, eines Parameters einerbestimmten Klasse (im Systemmodell oder einer Komponente)
Paket (engl.: package): Sammlung von Modellen (Bibliothek)
Schlüsselörter (engl.: keywords): z. B. model, class, connect,equation, . . .
Vier wichtige Merkmale:1 Gleichungsbasiert; keine Zuweisungen (akausale
Modellierung, Wiederverwendbarkeit)2 Fachgebietsübergreifend3 Objektorientierte Sprache mit Klassenkonzept4 Strenges Softwarekomponentenmodell (Erzeugung und
Verbindung von Komponenten→ komplexe physikalischeSysteme)
Drei Arten von Kommentaren:” ... ”: nach Variablen, Klassendefinitionen//: Kommentar danach bis Zeilenende/* ... */ : Kommentar zwischen den Zeichen /* und */
block: Kausalitätconnector: Verbindungselemente (engl.: ports)type: Erweiterung von Typen, z. B. type vector 3D=Real[3];package und function: viele Gemeinsamkeiten mit Klasse;nicht wirklich Klasse
Nutzung dieses Modells, um auf höherer Hierarchieebene Variablen zudeklarieren→ Modifikation der Zeitkonstanten
model ModifT2Glied "Tiefpass"T2Glied F12(F1(T=6),F2.T=11);
end ModifT2Glied;
Vorhandene Typklassen (engl.: built-in type classes):Real, Integer, Boolean, String, enumeration(...)
Modifikation:
class Voltage = Real(unit="V",min=-240.0,max=240.0);type Voltage = Real(unit="V",min=-240.0,max=240.0); // äquivalenttype Voltageextends Real(unit="V",min=-240.0,max=240.0)
VererbungÜbergeordnete Klasse (engl.: superclasse, base class)Untergeordnete Klasse (engl.: subclass, derived class)Definition einer Klasse: s. o. class Point
Einführung zweier neuer Klassen ColorData und Color; Color erbtvon ColorData und fügt Gleichung als Beschränkung hinzu
Eingeschränkte Klasse function:kann wie eingeschränkte Klasse betrachtet werden mit einigenErweiterungen; Funktionswertrückgabe durch jene formalen Parameter, diemit output gekennzeichnet sind
Sechs Einschränkungen:1 Jeder formale Parameter: input, output oder public!; nicht konstant!2 Nicht in Konnektor; keine Gleichungen; höchstens ein Algorithmus3 Algorithmus oder externe Funktionsschnittstelle4 Darf nicht beinhalten: der, initial, terminal, sample, pre, edge,
change, reinit, delay, cardinality, when,5 Untertyp (engl.: subtype) eines Funktionstypen (functiontype) muss
gleich Funktionstyp selbst sein6 Größe jedes Feldes/jeder lokalen Variablen muss gegeben sein durch
formale Parameter oder durch constant- oder parameter-Ausdrücke
Algebraische Gleichungen (Fortsetzung):Bedingte Gleichungen (when):? when-Gln. werden benutzt, um momentane Gln. auszudrücken,die nur zu Ereigniszeitpunkten gelten→ zeitdiskreter Ausdruckwhen x > 2then y1 =sin(x);
y3 = 2*x + y1 +y2;end when;
? kombinierbar mit initial und terminate? Einschränkungen:• Variable = Ausdruck• (Out1,Out2,...)=function(InExpr1,...)• assert(), terminate(), reinit()• repetitive- und conditional- Anweisungen (for, if)
Algebraische Gleichungen (Fortsetzung):Bedingte Gleichungen (when) (Fortsetzung):? assert, terminate - keine Gleichungen im gewöhnlichenSinne? assert:• Test auf Modellgültigkeit; Nachricht, wenn Bedingung „false“;Nutzung für spezielle Fortsetzung.... assert(x >= LowLimit and x <= HighLimit, ...
Initialisierung, Initialisierungsgleichung oderInitialisierungsalgorithmus für abhängige Variablen inDifferentialgleichung (der(x) - zeitkontinuierlich) oder inDifferenzengleichungen (pre(x) - zeitdiskret)→ Lösen desInitialisierungsproblems für die Anfangszeit
Startattribut:
parameter Real x0=0.5;Real x(start=x0); // x0: Parameter; oder konst. Ausdruck
Bedeutung: Hinweis, dass x0 gute Schätzung ist, wenn dasAnfangswertproblem gelöst wird; heißt nicht, dass x denAnfangswert x0 haben muss
Real x(start=x0, fixed=true); // Gleichung: x(0) = x0
3 Komponenten-Rahmen (realisiert Komponenten und Verbindungen;sichert, dass Informationsaustausch und Einhaltung vonBeschränkungen über die Verbindungen gewährleistet sind)
zu 1. Komponenten
Klasse, auch Instanzen von Klassen (partial model)
„Ports“→ Konnektoren
Unabhängige Definition
Kann aus anderen/mehreren Komponenten bestehen(hierarchische Modellierung)
class Resistorextends OnePort;parameter Real R(unit="Ohm") "Resistance";
equationR*i = v;
end Resistor;... // Def. weiterer Modelle, z.B. Wechselspannungsquelleclass VsourceAC "Sine-wave voltage source"extends OnePort;parameter Voltage VA=220 "Amplitude";parameter Real f(unit="Hz") "Frequency";const Real pi = 3.14159;
Berechnungen als Algorithmus, d. h. Abfolge von Instruktionen,Anweisungen→ nicht-deklarative algorithmische Konstrukte
Deklarative Konstrukte Nicht-deklarative K.(Gleichungen, Deklarationen) (Algorithmen, Rezept)sagt aus (Beziehungen, Eigenschaften) beschreibt, wie bestimmtesund beschreibt, was Ziel ist Ziel erreicht wirdVorteil: Semantik und Bedeutung bleibtunabhängig, wo benutzt, erhalteny = z - 8; y := x -8;x = y + 2; x := y + 2;z - 3 = x + 5; // gleich mit // verschieden zux = y + 2; x := y +2;z - 3 = x + 5; y := x - 8;y + 8 = z;
annotation: Informationen über Modell (Modelldokumentation,grafisches Layout, (Symbol, Verbindungen)→ grafischer Editorbenötigt Informationen (s. Bsp.)
annotation auch möglich im Zusammenhang mit: class, package,redeclare, import, Variablendefinition, Gleichungen, Zuweisungs-und Algorithmenabschnitt, Grafik
mit m - Masse, l - Länge, g - Erdbeschleu-nigung, J - Trägheitsmoment (J = m l2), ϕ -Auslenkwinkel, ω - Winkelgeschwindigkeit,ω - Winkelbeschleunigung.
Illustration
Objektorientierte Simulation
TU Ilmenau Seite 84 / 126
3. DymolaBearbeiten von Aufgabenstellungen (Fortsetzung)
Reiter „Modeling“: Menü File/Clear All/Equation layer; Deklaration vonVariablen und Parameternparameter Real m=1;parameter Real l=1;parameter Real g=9.81;parameter Real J=m*l^2;Real phi(start=1),w;...der(phi)=w;J*der(w)=-m*g*l*sin(phi);
„Modeling“: File/Save As - SpeichernReiter „Simulation“: File/Translate - Übersetzen
„Simulation“: Menü Simulation/Simulate - Ausführen der Simulation
„Simulation“: Variable Browser - Variablen auswählen für Anzeigebzw. Druck
Objektorientierte Simulation
TU Ilmenau Seite 86 / 126
3. DymolaBearbeiten von Aufgabenstellungen (Fortsetzung)
3.) Teilweise Nutzung von Bibliothekselementen, teilweise Erstellung neuerModelle, Aufbau eines Gesamtmodells (Ausführlich: Übung)
Nutzung des vordefinierten Konnektors „Pin“Definition eines Teilmodells „Elektrisches Bauelement mit zweiAnschlüssen“Nutzung des Teilmodells und Spezifizierung eigener Modelle fürKonstantspannungquelle, Widerstand und InduktivitätAufbau des Stromkreises
Abarbeitung von Simulationsaufgaben mittels SkriptBsp. für Skript:translateModel(”Eigenes”)W.R := 1000;experiment StopTime=0.0001simulateplot(”I.v”,”W.v”)
Objektorientierte Simulation
TU Ilmenau Seite 89 / 126
3. Dymola
Simulator DymosimEigenständiger Simulator Dymosim („Stand-Alone“-Programm); kann alssolches oder aus anderen Benutzerprogrammen als C-Funktion aufgerufenwerden
Kopplung Dymola-MATLABdymosim kann aus MATLAB aus M-File aufgerufen werden (vorherigesÜbersetzen des Modells unter Dymola)
Bsp.: Van-der-Pol-Oszillator und Druck aller Resultate (Parameter:Anfangs-, Endzeit, Kommunikationsintervalllänge und-anzahl,Toleranz,Integrationsverfahren, Anfangszustand, Parameter)[s,n]=dymosim([0,50,0.1,0,1e-4,1],[0.5;0],0.2); ...tplot(s,2:size(s,2),n)
4. OpenModelicaBearbeiten von Aufgabenstellungen (OMEdit)
1.) Simulationsdiagramm aus Bibliothekselementen (Bsp.: RC-Netz mitSpannungsquelle und Erdung, s. Bsp.)
2.) Problemstellung bearbeiten anhand math.-physikal. Beschreibung;Programmieren in Modelica (Bsp.: planares, reibungsfreies Pendel, s. o.)
Math.-physikal. Beschreibung
J ω = −m g l sin(ϕ)
ϕ = ω
mit m - Masse, l - Länge, g - Erdbeschleu-nigung, J - Trägheitsmoment (J = m l2), ϕ -Auslenkwinkel, ω - Winkelgeschwindigkeit,ω - Winkelbeschleunigung.
Illustration
Objektorientierte Simulation
TU Ilmenau Seite 93 / 126
4. OpenModelica
Bearbeiten von Aufgabenstellungen (Fortsetzung)Programmtechnische Umsetzung; aufeinander folgende Wahl derIcon/Menüpunkte/Fenster:
Reiter „Modellieren“: Deklaration von Variablen und Parametern;Werte (s. o.)„Modeling“: File/Save as - SpeichernIcon „Simulate“: Simulation/Simulate - Übersetzen und Simulation (mitSimulationsparametereinstellungen)
Modellierung von Flüssigkeits- und HydrauliksystemenGesetzmäßigkeiten: Druck-Durchfluss-Beziehung, Flussbilanzen,laminare/turbulente Strömung, Kontinuitätsgleichung, Energieerhaltung
Konnektoren (FluidPort mit Massestrom (Flussvariable) und Druck(Potentialvariable); zusätzlich: stream-Variable Enthalpie, Masseanteile,Konzentrationen), Bibliothek: Fluid, Hydraulics (kommerziell), Pneumatics(kommerziell)
stream-Variable erforderlich wegen numerisch günstigerer Lösbarkeit vonGleichungssystemen (ohne 0/1-Variablen wegen Richtungsumkehr vonStoffströmen); inStream()-, actualStream()-Operatoren
Objektorientierte Simulation
TU Ilmenau Seite 100 / 126
5. Physikalische Grundgesetze ...
Modellierung von thermischen SystemenGesetzmäßigkeiten: Speicherung und Transport thermischer Energie(Wärme); Wärmeleitung (Dgl., Partielle Dgl.), Konvektion (Wärmetransportdurch Materiestrom), Wärmestrahlung, . . .; s. auch thermodynamischeSysteme
Bibliothek: Thermal
Objektorientierte Simulation
TU Ilmenau Seite 101 / 126
5. Physikalische Grundgesetze ...
Modellierung von thermodynamischen SystemenGesetzmäßgikeiten: Speicherung und Transport von Energie und Masse,Thermodynamisches Gleichgewicht (Druck, Temperatur, Volumen),thermodynamische Prozesse, Arbeit und Wärme, Masse- undEnergieerhaltung in Volumen (engl.: control volume), Energiefluss,-umwandlung, Interne Energie, Enthalpie
Bibliotheken: Thermal und freie Bibliotheken (TechThermo, ThermoSysPro,ThermoPower)
Anwenderprogrammunabhängige Schnittstelle zur Unterstützung desModellaustauschs und der Co-Simulation; Lösungsverfahren imSimulationstool bzw. in der „Functional Mockup Unit (FMU)“
FMU beinhaltet separierte Interface-Beschreibung (XML) und Funktionalität(Modell; Quellcode, binär)
6. Tools / 6.2 JModelica.orgAufbau und Komponenten (Fortsetzung)
JModelica-Compiler entwickelt mittels JastAdd
JModelica.org Model Interface (JMI) C Runtime Lib. mitAnwenderprogrammschnittstelle zu erzeugtem C-Code; automatischeDifferentiation; Nutzung der schwachen Besetztheitsstruktur von Matrizen
Benutzerinteraktion mittels Skriptsprache Python (Erstellung von Skripten,nutzerspezifische Anwendungen, prototypische Algorithmen);Python-Pakete Numpy, Scipy: Unterstützung für numerische Berechnungen(Matrizen-, Vektoroperationen, lineare Algebra, Druck)
Optimierungsalgorithmus IPOPT zur Lösung von Parameteroptimierungs-und Optimalsteuerungsaufgaben
JMU: Umwandlung in DAE-System (nützlich z. B. in einigenOptimierungsanwendungen, wo Simulation von DAE/JMU-Modellen einewichtige Voraussetzung für die Optimierung mit Kollokationsverfahren ist)
Objektorientierte Simulation
TU Ilmenau Seite 106 / 126
6. Tools / 6.2.1 Simulation mit JModelica.orgSimulationsmodell, Bsp.: Van-der-Pol-Schwinger
x1(t) =
(1− x2
2 (t))
x1(t)− x2(t) + u(t) , x1(0) = 0
x2(t) = x1(t) , x2(0) = 1 , u(t) = 0
Modelica-Modell VDP.mo
model VDP// State initial valuesparameter Real x10 = 0;parameter Real x20 = 1;// The statesReal x1(start = x10);Real x2(start = x20); //...
// ... Fortsetzung// The control signalinput Real u; // ...
# variable trajectories returned as numpy arraysx1 = res[’x1’]x2 = res[’x2’]t = res[’time’]
# visualizationplt.figure(1)plt.plot(t, x1, t, x2)plt.legend((’x1’,’x2’))plt.title(’Van der Pol oscillator.’)plt.ylabel(’Angle (rad)’)plt.xlabel(’Time (s)’)plt.show()
Objektorientierte Simulation
TU Ilmenau Seite 109 / 126
6. Tools / 6.2.2 Optimierung mit JModelica.orgMerkmale
Unterstützung der Optimierung statischer und dynamischer Modelle
Lösung von nichtlinearen Optimierungsproblemen (NLP) undOptimalsteuerungsaufgaben (DOCP) (statische und dynamischeOptimierung), z. B. optimale Parameterwahl bei Systemauslegung,Modellkalibrierung (Modellparameteranpassung), zeitoptimaler,energieoptimaler Steuerungsentwurf
Notation eines Optimalsteuerungsproblems
minu(t)
J (x(t),u(t), t) = Φ (x(tf ), tf ) +
tf∫t0
f0 (x(t),u(t), t) dt
x(t) = f (x(t),u(t), t) , t ∈ [t0, tf ] ; x(t0), x(tf ) , tf jeweils fest/frei
g (x(t),u(t), t) ≤ 0
Objektorientierte Simulation
TU Ilmenau Seite 110 / 126
6. Tools / 6.2.2 Optimierung mit JModelica.org
Schritte zur Lösung eines Optimalsteuerungsproblems
Mathematische Problemformulierung
Implementierung des Optimierungsproblems in Modelica/Optimica
Aufruf einer IPython-Shell
Problemlösung mittels JModelica.orgDynamische Optimierung von DAEs mittels direkter Kollokation undJMUs (Standard; DOCP und NLP; C, CppAD, IPOPT; function undrecord; DAEs und keine Diskontinuitäten)Dynamische Optimierung von DAEs mittels direkter Kollokation undCasADi (DOCP und NLP; Python, CasADi, IPOPT; zeitkont. DAEs,keine function und record; leistungsfähiger )
Pseudospektraloptimierung von ODEs mittels CasADi (DOCP;Python, CasADi, IPOPT; zeitkont. ODEs mit Mehrphasen...)
Objektorientierte Simulation
TU Ilmenau Seite 111 / 126
6. Tools / 6.2.2 Optimierung mit JModelica.org
Schritte zur Lösung eines Optimalsteuerungsproblems (Fortsetzung)
Problemlösung mittels JModelica.org (Fortsetzung)
Ableitungsfreie Parameteroptimierung (z. B. Modellkalibrierung) undOptimierung von ODEs mit JMU (FMU-Modelle; NLP; Nelder-Mead);großes System, und/oder Diskontinuitäten oder hybride Elemente)
d. h. Erstellung eines Python-Optimierungsskripts (z. B. VDPOpt.py) undAusführen des Python-Optimierungsskripts (z. B. run VDPOpt)