Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
RickGelhausen committed Jun 25, 2024
1 parent 346a935 commit 4afd932
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions exercise-sheet-5.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -196,15 +196,24 @@ 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.
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.
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 $.
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$.

---

0 comments on commit 4afd932

Please sign in to comment.