Dieses Video demonstriert die Einbettung trainierter neuronaler Netze in CasADi-Optimierungsgraphen zur Lösung von Problemen der optimalen Steuerung (Optimal Control Problems, OCP). Am Beispiel eines Zwei-Zustands-Shuttle-Systems mit Mehrziel-Schiess-Formulierung (Multiple Shooting) wird gezeigt, wie externe Kennfelder oder Modelle im ONNX-Format (Open Neural Network Exchange) integriert werden.
Die Ausführung erfolgt primär über die C-API der Microsoft ONNX Runtime. Da Roh-ONNX-Graphen für den Solver zunächst als Black-Box erscheinen, erfordert der Standardansatz finite Differenzen zur Gradientenberechnung. Um diesen Rechenaufwand zu reduzieren, stellt das Hilfspaket torch2casadi eine Lösung bereit: Es führt in PyTorch eine symbolische automatische Differentiation (AD) durch und exportiert adjungierte ONNX-Graphen für exakte Ableitungen erster und zweiter Ordnung. Abschließend werden die C-Code-Generierung für parametrisches MPC (Model Predictive Control) sowie das symbolische Tracing von ONNX-Graphen direkt in native CasADi-MX-Ausdrücke behandelt, was die Abhängigkeit von externen Laufzeitbibliotheken bei kleineren Netzen eliminiert.
Wichtigste Punkte & Zeitstempel
0:00 Einbettung von Neuronalen Netzen in CasADi: Vorstellung der Funktion zur Integration neuronaler Netze in CasADi-Optimierungsgraphen am Beispiel eines Zwei-Zustands-Shuttle-Systems mit Vibrationsbeschränkung und Wettermesswert als exogenem Parameter ($\tau$).
1:18 Problemformulierung & Mehrziel-Schiessen: Abbildung des Mehrziel-Schiess-Verfahrens (Multiple Shooting) in der CasADi-Opti-Schnittstelle unter Berücksichtigung von Systemdynamik, Zustands- und Steuerungsbeschränkungen; Unterstützung von Python, MATLAB, Octave, Julia und JavaScript.
4:09 Automatische dünnbesetzte Differenzierung & Solver: Automatische Erkennung der Dünnbesetztheit (Sparsity) des Constraints-Jacobians durch vorwärts-/rückwärtsgerichtete AD-Sprints sowie Lösung des NLPs mittels IPOPT.
5:55 Export von Ausdrucksgraphen: Erzeugung interaktiver HTML-Visualisierungen des Rechengraphen inklusive Unterdrückung gemeinsamer Unterausdrücke (Common Subexpression Elimination).
7:46 Export neuronaler Netze via ONNX: Export trainierter Machine-Learning-Modelle in das herstellerneutrale ONNX-Inferenzformat als Schnittstelle zu CasADi.
9:07 Einbindung der ONNX Runtime & Finite Differenzen: Einbindung von ONNX-Dateien über den graph_builder und die Microsoft ONNX Runtime (ONNXRUNTIME_LIB); Nutzung finiter Differenzen (enable_fd=True) zur Gradientenberechnung bei Black-Box-Modellen.
13:13 Exakte AD mit torch2casadi: Nutzung des Pakets torch2casadi zur Erzeugung symbolisch differenzierter ONNX-Adjoint-Graphen in PyTorch, wodurch exakte Ableitungen ohne finite Differenzen in CasADi bereitstehen.
16:51 C-Code-Generierung für Parametrisches MPC: Export des NLP-Solvers als eigenständige C-Datei mittels opti.to_function() zur Ausführung parametrischer Optimierungen im Kontext modellprädiktiver Regelungen.
19:22 Symbolisches Tracing in Native CasADi MX: Übersetzung des ONNX-Graphen in native CasADi-MX-Ausdrücke (symbolic=True) zur Eliminierung externer Bibliotheksabhängigkeiten und Performance-Steigerung bei kleinen bis mittleren Netzen.
21:10 CasADi-Schulungsankündigung: Informationen zum mehrwöchigen interaktiven CasADi-Kurs ab dem 13. Oktober mit Schwerpunkten auf Optimierungs-Primitiven und Modellprädiktiver Regelung (MPC).
Glossar
CasADi: Eine Open-Source-Softwarebibliothek zur symbolischen Datenverarbeitung und automatischen Differenzierung, entwickelt für die numerische Optimierung und optimale Steuerung.
ONNX (Open Neural Network Exchange): Ein offenes Standardformat zur Darwertungs- und Austauschbarkeit von Machine-Learning-Modellen zwischen unterschiedlichen Frameworks (z. B. PyTorch, TensorFlow).
ONNX Runtime: Eine von Microsoft entwickelte, plattformübergreifende Ausführungsumgebung zur performanten Evaluierung (Inferenz) von ONNX-Modellen.
Multiple Shooting (Mehrziel-Schiess-Verfahren): Eine direkte Methode der optimalen Steuerung, bei der das Zeitintervall in mehrere Abschnitte unterteilt wird und die Systemdynamik durch Gleichungsnebenbedingungen zwischen den Abschnitten erzwungen wird.
IPOPT (Interior Point Optimizer): Ein Softwaresystem zur Lösung großdimensionierter, nichtlinearer Optimierungsprobleme (NLPs) mittels Innere-Punkte-Verfahren.
Automatische Differentiation (AD): Eine mathematisch exakte Methode zur numerischen Berechnung der Ableitungen von in Code ausgedrückten Funktionen mittels Kettenregel, im Gegensatz zu näherungsweisen finiten Differenzen.
Finite Differenzen: Ein numerisches Verfahren zur näherungsweisen Berechnung von Ableitungen durch differenzielle Abtastung der Funktion an leicht verschobenen Stützstellen.
Common Subexpression Elimination (CSE): Eine Compiler-Optimierungstechnik, die identische Teilausdrücke innerhalb eines Rechengraphen identifiziert und wiederholte Berechnungen vermeidet.
Model Predictive Control (MPC / Modellprädiktive Regelung): Ein Regelungsverfahren, das ein mathematisches Prozessmodell nutzt, um das künftige Systemverhalten über einen Horizont vorausjuberechnen und online ein OCP zu lösen.
MX-Ausdruck: Eine fundamentale Symbolik-Datenstruktur in CasADi zur effizienten Repräsentation spärlich besetzter Matrizen und allgemeiner Vektor-Rechengraphen.