From bd7d36ec559c4fb664864a449033584f9ab8e232 Mon Sep 17 00:00:00 2001 From: RickGelhausen Date: Tue, 25 Jun 2024 15:38:47 +0200 Subject: [PATCH] test --- exercise-sheet-5.Rmd | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/exercise-sheet-5.Rmd b/exercise-sheet-5.Rmd index ae9597f..631957b 100644 --- a/exercise-sheet-5.Rmd +++ b/exercise-sheet-5.Rmd @@ -162,41 +162,3 @@ mit $ r_i(R) = R $ für $ i \in \{1, 2, 3\} $ und $ r_i(R) = 2R $ für $ i \in \ ```{r, echo=FALSE, out.width='50%', fig.align='center', fig.show='hold', fig.cap='**Abbildung 4** - Links: Skizze des Pendels. Rechts: Trajektorie des Pendels mit Initialzustand $ x_0 = \left[\frac{3\pi}{4} \quad 0\right]^T $ und ohne Steuerung, $ u_k = 0 \forall k $.'} knitr::include_graphics("figures/sheet-5/p5.png") ``` - -Wir betrachten ein Pendel. Dessen Position ist durch den Winkel $ \theta $ eindeutig bestimmt. Dabei entspricht $ \theta = \pi $ der Position, in der es gerade nach unten hängt. Eine Illustration finden Sie in Abbildung 4. In der Aufhängung des Pendels sitzt ein Motor, sodass es anhand eines Drehmoments $ u $ gesteuert werden kann. Die Winkelgeschwindigkeit ist $ \omega = \dot{\theta} $. Fassen wir Position und Geschwindigkeit im Zustandsvektor $ x = \begin{bmatrix} \theta \\ \omega \end{bmatrix}^T $ zusammen, können wir die Dynamik des Pendels durch die gewöhnliche Differentialgleichung (ordinary differential equation, ODE) - -\[ -\dot{x} = \begin{bmatrix} \dot{\theta} \\ \dot{\omega} \end{bmatrix} = f(x, u) := \begin{bmatrix} \omega \\ \sin \theta + u \end{bmatrix} -\] - -beschreiben. (Zur Vereinfachung haben wir hier alle Einheiten ignoriert. Eigentlich müsste vor den Sinus ein Faktor mit Einheit, -da dieser dann mit dem Drehmoment summiert wird.) - - -Wir betrachten das Pendel über die Zeitdauer $ T $ und diskretisieren diese in $ N $ Zeitschritte. Zur Simulation verwenden wir das Runge-Kutta-Verfahren 4. Ordnung (RK4) und erhalten dadurch die diskretisierte Dynamik - -\[ -x_{k+1} = F(x_k, u_k), -\] - -wobei $ x_k $ der Zustand zum diskreten Zeitpunkt $ k $, $ k = 0, \ldots, N $, und $ h = \frac{T}{N} $ der Integrationschritt ist. Wir fassen die Zustände und die Steuerungsinputs zu allein Zeitpunkten in den Matrizen - -\[ -X := \begin{bmatrix} x_0 & \ldots & x_N \end{bmatrix} \in \mathbb{R}^{2 \times (N+1)} \quad \text{und} \quad U := \begin{bmatrix} u_0 & \ldots & u_{N-1} \end{bmatrix} \in \mathbb{R}^{1 \times N} -\] - -zusammen. - -Unser Ziel ist es nun, das Pendel aus seiner herabhängenden Ruhelage $x_0 = \begin{bmatrix} \pi & 0 \end{bmatrix}^T$ zum Zeitpunkt $k = 0$ in die aufrechte stehende Position $x_N = \begin{bmatrix} 0 & 0 \end{bmatrix}^T$ zum Zeitpunkt $k = N$ zu schwingen. -Dabei wollen wir den Steuerungsaufwand $ L(U) := \sum_{k=0}^{N-1} u_k^2 $ minimieren. - -**Aufgaben:** - -1. Formulieren Sie unser Optimalsteuerungsproblem als nichtlineares Programm. Dabei sollen $ x_0, \ldots, x_N $ und $ u_0, \ldots, u_{N-1} $ die Entscheidungsvariablen sein. Die Nebenbedingungen sind die Dynamik, sowie die Start- und Zielposition. -2. Diskutieren Sie kurz, ob das Problem konvex ist. -3. Benutzen Sie das bereitgestellte Template, um das NLP mit CasADi und IPOPT zu lösen. Erstellen Sie Plots der optimalen Trajektorien von $ \theta $, $ \omega $ und $ u $, mit der diskreten Zeit $ k $ auf der $ x $-Achse. Sie können Ihre Lösung außerdem mit der bereitgestellten Animation (pendulum.gif) vergleichen. -4. Wir führen nun eine zusätzliche Beschränkung der Steuerung ein. Zu allen Zeitpunkten soll gelten: $ |u_k| \leq u_{\text{max}} $. Diskutieren Sie kurz, wie sich der optimale Wert der Zielfunktion dadurch verändert. -5. Erweitern Sie Ihre NLP Formulierung um die zusätzliche Beschränkung. Beachten Sie, dass Sie hierbei die Betragsfunktion $ | \cdot | $ nicht verwenden sollten, da diese an der Stelle 0 nicht differenzierbar ist. Dies kann zu Problemen führen. Finden Sie stattdessen eine Umformulierung dieser Nebenbedingung. -6. Erweitern Sie Ihre Implementierung um die zusätzliche Nebenbedingung. Verwenden Sie $ u_{\text{max}} = 0.13 $. - ----