Multi-Stage Quadratic and Nonlinear Programming (MSQNLP)

Algorithmus zur Lösung von nichtlinearen Optimalsteuerungsproblemen.

Einleitung

Am Institut für Systemdynamik wird ein numerischer Optimierungsalgorithmus zur Lösung von nichtlinearen/quadratischen Optimalsteuerungsproblemen entwickelt. Dabei wird besonderer Wert auf eine Ausnutzung der besonderen Struktur von Optimalsteuerungsproblemen gelegt, sodass eine schnelle Lösung möglich ist.

Der Algorithmus wird in ANSI-C geschrieben und ist somit plattformunabhängig. Als Bibliothek für Vektor-/Matrixoperationen kommt die ebenfalls in C implementierte MESCHACH-Bibliothek zum Einsatz. Da für die meisten Embedded-Systeme C-Compiler verfügbar sind, ist eine Anwendung auf diesen möglich.

Algorithmus

Die nichtlinearen Optimalsteuerungsprobleme, auf welche hier besonderes Augenmerk gelegt wird, haben eine Stufenstruktur der Form

$$\begin{align} & \rlap{\min_{\lbrace x_{k+1}, u_k \rbrace_{k=0}^{N-1}} \sum_{k=0}^{N-1} J_k( x_k, u_k ) + J_N( x_N ) } & & & & & & \sf{Gütefunktional} \\ {\sf{u.Nb.\quad}} x_{k+1} &= F_k(x_k, u_k) & & & & k = 0,\ldots,N-1 & & \sf{Systemzustandsgleichung} \\ x_0 &= x_I & & & & & & \sf{Anfangsbedingung} \\ 0 &\leq c_k( x_k, u_k ) & & & & k = 0,\ldots,N-1 & & \sf{Pfadbeschränkungen} \\ 0 &\leq c_N( x_N ) & & & & & & \sf{Endzustandsbeschränkung} \end{align} $$

Die Lösung des o.g. Optimalsteuerungsproblems wird mithilfe einer Kombination eines Vollschritt-SQP Verfahrens [2] und eines unterlagerten, primal-dual Aktive-Menge-Verfahrens [6] berechnet. Die Schrittweite wird im SQP-Verfahren durch einen Vertrauensbereich begrenzt, welcher über einen Filtermechanismus angepasst wird [5]. Bei Auftreten eines unzulässigen QPs wird eine sog. Restaurationsphase [5] angewendet.

Die Modellfunktionen \(F_k\), \(J_k\) und \(c_k\) müssen zweifach stetig differenzierbar bezüglich der Zustände \(x_k\) und Stellgrößen \(u_k\) sein. Die Hessematrix des Gütefunktionals darf dabei indefinit sein, da bei der Lösung der unterlagerten QPs Richtungen mit negativer Krümmung bzw. mit unendlich-linearem Abstieg explizit berücksichtigt werden [3,4].

Die Struktur eines linear-quadratischen Optimalsteuerungsproblems ergibt sich zu

\begin{align} & \rlap{\min_{\lbrace x_{k+1}, u_k \rbrace_{k=0}^{N-1}} \sum_{k=0}^{N-1} \frac{1}{2} \begin{pmatrix} x_k \\ u_k \end{pmatrix}^T \begin{pmatrix} H_{xx,k} & H_{xu,k} \\ H_{xu,k}^T & H_{uu,k} \end{pmatrix} \begin{pmatrix} x_k \\ u_k \end{pmatrix} + \begin{pmatrix} f_{x,k} \\ f_{u,k} \end{pmatrix}^T \begin{pmatrix} x_k \\ u_k \end{pmatrix} + j_k} \\ & \rlap{\qquad\qquad\qquad +\frac{1}{2}x_N^T H_{xx,N} x_N + f_{x,N}^T \cdot x_N + j_N } & & & & & & \\ {\sf{u.Nb.\quad}} x_{k+1} &= A_k \cdot x_k + B_k \cdot u_k + b_k & & & & k = 0,\ldots,N-1 & & \sf{Systemzustandsgleichung} \\ x_0 &= x_I & & & & & & \sf{Anfangsbedingung} \\ 0 &\leq C_{x,k} x_k + C_{u,k} u_k + c_k & & & & k = 0,\ldots,N-1 & & \sf{Pfadbeschränkungen} \\ 0 &\leq C_{x,N} x_N + c_N & & & & & & \sf{Endzustandsbeschränkung} \end{align}

wobei die Besetztheitsstruktur des KKT-Systems typischerweise ähnlich zu der in Abbildung 1 aussieht.

Text?
Abbildung 1: Besetztheitsstruktur des KKT-Systems

Bei der Lösung des QPs wird die Struktur der schwach besetzten Beschränkungs- und Hessematrizen explizit ausgenutzt und nicht eine Kondensierung durch Elimination der Systemzustände durchgeführt. Dadurch ergibt sich ein effizientes, rekursives Lösungsverfahren [1].

Es kommt ein Nullraumverfahren zum Einsatz, in dem die Beschränkungen der im Zuge des Aktive-Menge-Verfahren autretenden gleichungsbeschränkten QPs mithilfe einer QR-Zerlegung aufgelöst werden. Bei Aktivierung und Deaktivierung einer Beschränkung wird ausgenutzt, dass nachfolgende Stufen nicht neu berechnet werden müssen. Dadurch verringert sich der Rechenaufwand.

Neue SQP-Iterationen werden mit der vorigen QP-Lösung initialisiert. Falls die alte Steuertrajektorie nicht zulässig ist, wird ein Phase-1 LP gelöst, welches die Steuertrajektorie so modifiziert, dass ein möglichst guter Warmstart mit einer zulässigen Trajektorie erfolgen kann.


MATLAB®-Interface

Zur komfortablen prototypischen Anwendung des Solvers existiert ein MATLAB® MEX-Interface, welches eine Implementierung der Modellfunktionen direkt in MATLAB® ermöglicht. Dabei ist auch eine Eingabe der Zustandstransitionsgleichungen \(F_k\) als Differentialgleichungssystem zur automatischen numerischen Integration möglich, wobei hier eine Anzahl an Integrationsverfahren wählbar ist (Euler-Vorwärts, RK2-HEUN, RK4, DOPRI5).

Download

Es ist geplant in Zukunft zunächst das Matlab-Interface als Binärdatei und anschließend den Quelltext hier zu veröffentlichen.

Literatur

[1] Arnold, E., Tatjewski, P. and Wołochowicz, P.
Two methods for large-scale nonlinear optimization and their comparison on a case study of hydropower optimization
Journal of Optimization Theory and Applications, Springer, 1994, Vol. 81(2), pp. 221-248
[2] Boggs, P. and Tolle, J.
Sequential quadratic programming
Acta numerica, Cambridge Univ Press, 1995, Vol. 4(1), pp. 51
[3] Casas, E. and Pola, C.
An algorithm for indefinite quadratic programming based on a partial Cholesky factorization
RAIRO. Recherche opérationnelle, EDP Sciences, 1993, Vol. 27(4), pp. 401-426
[4] Conn, A. R. and Gould, N. I.
On the location of directions of infinite descent for nonlinear programming algorithms
SIAM Journal on Numerical Analysis, SIAM, 1984, Vol. 21(6), pp. 1162-1179
[5] Fletcher, R. and Leyffer, S.
Nonlinear programming without a penalty function
Mathematical Programming, Springer, 1997, Vol. 91(2), pp. 239-269
[6] Goldfarb, D. and Idnani, A.
A numerically stable dual method for solving strictly convex quadratic programs
Mathematical programming, Springer, 1983, Vol. 27(1), pp. 1-33

Kontakt

Dipl.-Ing. Marcus Sonntag

Zum Seitenanfang