OpenGoddard Verwendung der 2-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung

https://github.com/istellartech/OpenGoddard https://istellartech.github.io/OpenGoddard/

Verwendung von OpenGoddard 1 Open Goddard How to use 2 ← Jetzt hier Verwendung von OpenGoddard 3 Verwendung von OpenGoddard 4

Goddard-Problem (Problem der optimalen Raketenaufstiegskontrolle in der Atmosphäre)

Wir werden das Goddard-Problem lösen, das ein klassisches Problem in der Raketentechnik ist, das Problem der optimalen Schubkontrolle für den optimalen Aufstieg einer Rakete in die Atmosphäre. Weitere Informationen finden Sie in der Datei Beispiel.

Bewegungsgleichung

Betrachten Sie die Bewegung der Rakete in einer Dimension (nur Höhe). Berücksichtigen Sie die Maximierung der Höhe, indem Sie den Schub und den Luftwiderstand des Raketentriebwerks berücksichtigen. T: Schub D: Widerstand (Luftwiderstand) g: Schwerkraftbeschleunigung

2_rocket.png

\begin{align}
\dot{h} &= v \\
\dot{v} &= \frac{T - D}{m} - g \\
\dot{m} &= - \frac{T}{c}
\end{align}

Rückhaltebedingung

Geben Sie die oberen und unteren Grenzen der Anfangsbedingung, der Endwertbedingung, der Zustandsvariablen und der Steuervariablen ein.

Bewertungsfunktion

Geben Sie den Wert ein, den Sie minimieren möchten. Hier möchten wir die Höhe maximieren, achten Sie also wie folgt auf das Zeichen.

J = -h

Ergebnis

2_0knot_.png

Das Ergebnis war, dass es besser war, zuerst Vollgas zu geben und dann den Schub in der Mitte zu reduzieren. Dies ist ein Kompromiss zwischen der Eigenschaft, dass der Schub so groß wie möglich sein sollte, um die Verzögerung aufgrund der Schwerkraft in Bezug auf das Phänomen zu verringern, und der Eigenschaft, dass es besser ist, in einer dichten Luft nicht zu stark zu beschleunigen, da der Luftwiderstand klein sein sollte. Das Ergebnis. In technischer Hinsicht ist es die Minimierung der Summe aus Schwerkraftverlust und aerodynamischem Verlust. Dasselbe gilt tatsächlich für die eigentliche Rakete, und bei der Festbrennstoffrakete wird der Schub auf ein gutes Gefühl auf dem Weg eingestellt. Die Lösung für das Goddard-Problem ist in Gebrauch! Optimierungsprobleme sind für die Welt nützlich! Beeindruckend!

knotting method Die Pseudospektralmethode, die den Inhalt von OpenGoddard enthält, ist ein großartiger Algorithmus, aber ich bin nicht gut in Zustandsvariablen und Steuervariablen, die nicht glatt (nicht differenzierbar) sind. Ich bin nicht gut darin, Steuervariablen diskontinuierlich zu ändern. Ich bin auch nicht gut in absoluten Werten. In Bezug auf das Goddard-Problem wird es nur so gelöst, dass Höhe, Geschwindigkeit, Gewicht und Schub glatt sind. Die Knotenmethode wird verwendet, um Lösungen für Zustandsvariablen und Steuervariablen zu finden, selbst wenn diese an einem bestimmten Punkt diskontinuierlich sind. Dies ist eine Methode zum Teilen des Berechnungsintervalls durch diskontinuierliche Teile. Open Goddard erleichtert die Verwendung der Knotenmethode. (Es gibt auch eine Algorithmusoptimierungssoftware, die den Abschnitt der Knotenmethode in der Welt automatisch unterteilt ...)

Goddard Problem (mit Knoten)

Listen Sie die Werte auf, die in die Problemklasse eingefügt werden sollen.

time_init = [0.0, 0.1, 0.3]
n = [25, 25]
num_states = [3, 3]
num_controls = [1, 1]

Außerdem wird angegeben, welche Bewegungsgleichung für jedes Intervall angewendet wird und ob die Zustandsvariablen stetig sind. Hier wird True mit der Erwartung ausgewählt, dass sich nur die Steuervariablen diskontinuierlich ändern. Das Richtig / Falsch hier und die Einschränkungsbedingung hängen eng zusammen. Geben Sie sie daher sorgfältig an. Wenn False, wird es divergieren, es sei denn, die Variable ist am Knotenpunkt in der Randbedingung (Gleichheit) festgelegt.

prob.dynamics = [dynamics, dynamics]
prob.knot_states_smooth = [True]

Von Oben,

2_1knot_.png

Mit Knoten ist die maximale Höhe gesunken. .. .. Es war nicht sehr gut. Es ist nicht einfach gut, diese Knotenmethode so zu verwenden, aber es ist jetzt möglich, Probleme mit diskontinuierlichen Variablen zu behandeln.

Recommended Posts

OpenGoddard Verwendung der 2-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 3-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 4-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 1-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung von Anfragen (Python Library)
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
So installieren und verwenden Sie pandas_datareader [Python]
[Python] Organisieren der Verwendung für Anweisungen
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von "deque" für Python-Daten
Verwendung von Python zip und Aufzählung
Verwendung ist und == in Python
Verwendung der C-Bibliothek in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
[Python] Verwendung von Hash-Funktion und Taple.
Tipps für diejenigen, die verwirrt sind, wie man is und == in Python verwendet
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Python # So überprüfen Sie Typ und Typ für Super-Anfänger
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Python: So verwenden Sie Async mit
So installieren und verwenden Sie Tesseract-OCR
[Python] Verwendung der Pandas-Serie
Verwendung von SQLite in Python
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Verwendung der Zip-Funktion von Python
[Python] Verwendung der Typetalk-API
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
Verwendung von Umgebungsvariablen für Serverless Framework und Python und Verwaltung von Phasen
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Verwendung eines externen Editors für die Python-Entwicklung mit Grasshopper