https://github.com/istellartech/OpenGoddard https://istellartech.github.io/OpenGoddard/
Verwendung von OpenGoddard 1 Verwendung von OpenGoddard 2 Verwendung von OpenGoddard 3 OpenGoddard How to use 4 ← Jetzt hier
Dieses Mal werde ich über die Formulierung und die Ergebnisse unter Verwendung einer der Standardtechniken zur Optimierung sprechen.
Aufgrund der Entwicklung elektrischer Antriebe wie des Ionenmotors, der berühmt wurde, weil der Asteroidenforscher auch in Yabusa installiert wurde, wird es immer häufiger, durch elektrischen Antrieb von der Erde zu anderen Planeten zu gelangen, anstatt durch chemischen Antrieb wie einen Raketentriebwerk. Ich tat. Es ist bekannt, dass der Orbitalübergang beim chemischen Antrieb die minimale Energie erfordert, die erforderlich ist, um eine Umlaufbahn zu nehmen, die als Hohmann-Umlaufbahn bezeichnet wird. Dies ist jedoch nur ein Motor mit ausreichendem Schub, und bei niedrigem Schub ist es eine Flugbahn, die als Spiralbahn bezeichnet wird. Die meisten Probleme des Orbitalübergangs zwischen zwei Punkten werden als Randwertprobleme gelöst (Lamberts Problem, auch Lambert-Problem genannt), aber hier werden wir sie als optimale Steuerungsprobleme behandeln und lösen.
Die Originalarbeiten sind wie folgt.
Ross, I. Michael, Qi Gong, and Pooya Sekhavat. "Low-thrust, high-accuracy trajectory optimization." Journal of Guidance, Control, and Dynamics 30.4 (2007): 921-933. https://doi.org/10.2514/1.23181
\begin{align}
\dot{r} &= v_r \\
\dot{v_r} &= v_t^2 / r - 1 / r^2 + u_r \\
\dot{v_t} &= - v_r v_t / r + u_t
\end{align}
Geben Sie den Anfangs- und den Endwert ein, um die Schubgröße zu begrenzen.
|u_r| \leq 0.01 \\
|u_t| \leq 0.01 \\
0 < t_f < 55
Ziel ist es, die für den Schub erforderliche Gesamtzeit zu minimieren.
J = \int_{t_0}^{t_f} |u_r| + |u_t| dt
Da die Bewertungsfunktion, die Absolutwerte enthält, nicht reibungslos ist, wird das Ersetzen durch freie Variablen (auch Hilfsvariablen) als Standard für die numerische Analyse durchgeführt. http://www.msi.co.jp/nuopt/download/introduction/module/technic.pdf
u = u_1 - u_2 \\
|u| = u_1 + u_2
In Anbetracht dessen beschreiben Sie als 3 Zustandsvariablen ($ r, v_r, v_t
Wenn die Auswertungsfunktion einen Integrationsbegriff hat, geben Sie den Inhalt des Integrationsbegriffs in running_cost an.
def running_cost(prob, obj):
ur1 = prob.controls_all_section(0)
ur2 = prob.controls_all_section(1)
ut1 = prob.controls_all_section(2)
ut2 = prob.controls_all_section(3)
return (ur1 + ur2) + (ut1 + ut2)
prob.running_cost = running_cost
Wenn wir uns den Graphen von u ansehen, der die Steuervariable ist, können wir sehen, dass die Geschichte des Schubes für den Menschen schwer zu verstehen ist. Selbst solch ein schwieriges Problem kann leicht gelöst werden (obwohl es einige Versuche und Know-how erfordert).
Wie oben erwähnt, haben wir die Punkte erläutert, die anhand eines einfachen Beispiels bei Verwendung von OpenGoddard festgestellt werden können. Das Folgende ist eine kurze Zusammenfassung.
Obwohl der Bereich als nicht intuitiver Teil mit Know-how verbleibt, ist es dennoch möglich, die Lösung (Trajektorie) einer nichtlinearen optimalen Steuerung leicht zu finden. Es ist wichtig anzumerken, dass es keine Garantie dafür gibt, dass es der optimale Wert ist, da es sich um eine numerische Lösung handelt und dass es sich um eine lokal optimale Lösung handelt, aber ich denke, dass es in vielen Praktiken kein Problem gibt. Bitte versuchen Sie es mit Open Goddard!
Das SLSQP von Scipy wird derzeit in Version 1.0.0 als Löser für die sequentielle Sekundärplanung verwendet. Die Leistung dieses Lösers ist jedoch nicht für große Probleme geeignet. Probleme mit einer großen Anzahl von Variablen und Knoten erfordern eine beträchtliche Rechenzeit. Es scheint, dass Coco Rahen einen hochwertigen Löser verwenden sollte, der die Eigenschaften einer spärlichen Matrix verwendet, aber dies wurde nicht verifiziert. SNOPT und IPOPT werden häufig in Veröffentlichungen erwähnt.
Zusätzlich zu dem diesmal erklärten Open Goddard haben wir ein Programm namens Open Tsiolkovsky veröffentlicht.
Diese beiden sind ein Paar Software, das Rückwärtsproblem und das Vorwärtsproblem.
Der ursprüngliche Grund für die Herstellung ist die Erzeugung der Raketenbahn, daher ist Open Goddard ein ziemlich vielseitiges Werkzeug. Es mag besser sein, ein anderes Tool für große Probleme bei der optimalen Steuerung zu verwenden, aber ich denke, dass es ein gutes Tool ist, da einfache Berechnungen nur wenige Abhängigkeiten aufweisen und einfach zu installieren sind (heißes Selbstlob).
Recommended Posts