DyOS
DyOS ist eine Softwareframework zur Lösung von dynamischen Optimierungsproblemen. Eine Übersicht über DyOS mit Fallstudie geben wir in [Caspari et al., 2019b].
DyOS wurde an der AVT.PT entwickelt und wird inzwischen an der AVT.SVT kontinuierlich weiterentwickelt. Wir bedanken uns für die finanzielle Unterstützung der DFG, der EU, des BMBF, des BMWi, der Helmholtz-Gemeinschaft sowie verschiedener privater Unternehmen, welche direkt oder indirekt zu DyOS beigetragen hat. Das Tool wurde von AVT.PT unter der GNU General Public License GPL v3.0 veröffentlicht.
Der Quellcode ist hier verfügbar
Mit DyOS können mehrstufige, gemischt-ganzzahlige dynamische Optimierungsprobleme der folgenden Form gelöst werden.
\(\begin{align*} \min_{\mathbf{u},\mathbf{z},\mathbf{p},\mathbf{x},\mathbf{y}}\,\,\, &\sum\nolimits_{i=1}^N \Phi_i(\boldsymbol{x}(t_i^+)) \newline \newline \text{ s.t.,}\boldsymbol{M\dot{x}}(t)&= \boldsymbol{f}_i(\boldsymbol{x}(t),\boldsymbol{y}(t),\boldsymbol{u}(t),\boldsymbol{p},\boldsymbol{z}), \,\,\, &\forall t\in\mathcal{T}_i,1\le i\le N \newline \boldsymbol{0} &=\boldsymbol{g}_i(\boldsymbol{x}(t),\boldsymbol{y}(t),\boldsymbol{u}(t),\boldsymbol{p},\boldsymbol{z}), \,\,\, &\forall t\in\mathcal{T}_i,1\le i\le N \newline \boldsymbol{0} &=\boldsymbol{h}_i(\boldsymbol{x}(t_i^+),\boldsymbol{x}(t_i^-),\boldsymbol{y}(t_i^-),\boldsymbol{p},\boldsymbol{z}), \,\,\, &1\le i\le N-1 \newline \boldsymbol{0} &=\boldsymbol{c}_i(\boldsymbol{x}(t),\boldsymbol{y}(t),\boldsymbol{u}(t),\boldsymbol{p},\boldsymbol{z}), \,\,\, & t\in\mathcal{T}_i,1\le i\le N \end{align*} \)
mit dem Zeithorizont \(\mathcal{T}_=U^N_{i=1}\mathcal{T}_i\) wobei \(N\) die Anzahl der Stufen ist, \(T_i=[t_i,t_{i+1}]\) der Zeithorizont der Stufe \(i\), dem semi-explizites DAE mit differentiellem Index 1 \(\boldsymbol{f}_i:X \to R^{n_x},\boldsymbol{g}_i:X\to R^{n_y}\) und der invertierbaren Massematrix \(\boldsymbol{M} \in R^{n_x\times n_x}\), die Startwerte \(\boldsymbol{h}_i:R^{n_x}\times R^{n_x}\times R^{n_y}\times R^{n_p}\times R^{n_z}\to R^{n_x}\)und Nebenbedingung \(\boldsymbol{c}_i:X\to R^{n_c}\) mit \( X:=R^{n_x}\times R^{n_y}\times R^{n_u}\times R^{n_p}\times R^{n_z}\).
Durch die Lösung des Optimierungsproblems ( 1) können die optimalen Trajektorien der Kontrollvariablen \(\boldsymbol{u}:\mathcal{T}\to R^{n_u}\), der differentiellen und algebraischen Zustände \(\boldsymbol{x}:\mathcal{T}\to R^{n_x}\) und \(\boldsymbol{y}:\mathcal{T}\to R^{n_y}\), für die Paramterwerte \(\boldsymbol{p}\in R^{n_p}\) und ganzzahligen Variablen \(\boldsymbol{z}\in N^{n_z}\) gefunden werden, die Zielfunktionen vom Mayertyp \(\Phi_i:R^{n_x}\to R\) minimieren. Die Indizes \(+\) und \(-\) bezeichnen die rechts- und linksseitigen Grenzwerte von \(t_i\).
Die Algorithmen in DyOS basieren auf adaptiven Einfach- und Mehrfachschießverfahren [Schlegel et al., 2004, Assassa and Marquardt, 2014], wobei die Diskretisierung der Kontrollvariablen automatisch verändert werden kann. Zwei Adaptionsmethoden sind implementiert: die eine basiert auf Wavelet-Analyse zur Verbesserung der Zielfunktion [Schlegel et al., 2004] die andere auf den notwendigen Optimalitätskriterien des Optimierungsproblems [Assassa and Marquardt, 2016]. Die automatische Gitteranpassung und Strukturerkennung [Assassa and Marquardt, 2015] ermöglicht es dem Nutzer, die Optimierung mit einem groben Diskretisierungsgitter zu beginnen und am Ende der Optimierung ein hinreichend feines Gitter zu erhalten. Auf diese Weise kann die Gitteranpassung die Gesamt-CPU-Zeit reduzieren, indem eine unnötig feine Parametrisierung vermieden wird. Mit einem Branch-and-Bound-Algorithmus kann DyOS gemischt-ganzzahlige Optimierungsprobleme [Oldenburg et al., 2003] lösen. Eine Besonderheit von DyOS sind darüber hinaus die speziellen Ansätze, zur Berechnung der Jacobi- und Hessematrizen der Lagrangefunktion.
Die Architektur von DyOS ist in Abb. 1 dargestellt. Eine generische Modellschnittstelle ist implementiert, die es erlaubt, verschiedene Modelle an DyOS zu koppeln. Die Modellschnittstelle unterstützt derzeit den Functional Mock-Up Interface (FMI) Standard [ FMI, 2019 ], flache Modelica-Modelle und C++ Modelle. Derzeit existieren drei Benutzerschnittstellen, die den Zugriff auf DyOS von C++, Matlab und Python aus erlauben
Anwendungen
- Mehrstufenprobleme [Frankl et al., 2012, Pontes et al., 2008],
- gemischt-ganzzahlige dynamische Optimierung (MIDO) [Oldenburg et al., 2003, Frankl et al., 2012],
- dynamische Parameter- und Eingangsgrößenschätzung [Jung et al., 2019c],
- optimale Versuchsplanung [Jung et al., 2019a]
- Optimierung von DAEs mit Komplementaritätsnebenbedingungen [Caspari et al., 2020a, Caspari et al., 2019a],
- Prozessoptimierung von Batch- und kontinuierlichen Prozessen (DO) [Jung et al., 2019b, Schäfer et al., 2019a, Caspari et al., 2019c, Vaupel et al., 2020],
- (ökonomische) modellprädiktive Regelung ((e)NMPC) und dynamische Echtzeit-Optimierung (DRTO) [Pontes et al., 2015, Caspari et al., 2018, Caspari et al., 2019d, Caspari et al., 2019e, Caspari et al., 2020b, Caspari et al., 2020c, Schäfer et al., 2019b].
Tabelle 1 fasst ausgewählte Probleme und darin vorkommender DAEs zusammen, die mit DyOS gelösten wurden vor.
Tabelle 1: Publikationen, in denen DyOS verwendet wird.
Quelle |
Problemtyp |
DAE Größe |
MIDO |
330 DAEs 32 binary variables |
|
DO |
200 differential equations 2500 algebraic equations |
|
DO |
1752 differential equations 10779 algebraic equations |
|
Integrated Scheduling and Control |
1500 equations 9 binary variables |
|
Multistage DO |
47 differential equations 1929 algebraic equations |
|
DRTO |
148 differential equations 2435 algebraic equations |
|
eNMPC |
127 differential equations 2940 algebraic equations |
|
eNMPC |
371 differential equations 14150 algebraic equations
|