Kann mir jemand eine "Flugbahnoptimierung für Dummies" beantworten?

Also mache ich gerade ein Projekt zur Trajektorienoptimierung. Ich verstehe das Prinzip, minimiere die Treibstoffkosten für eine Reise oder versuche, das Gewicht des Raumfahrzeugs am Zielort zu maximieren, und das spuckt dafür eine optimale Flugbahn aus. Ich bin mir nur nicht sicher.. wie soll ich das wirklich machen? Ich lese viel über Dinge wie "Primer-Vektoren" und formbasierte Methoden und sogar Hamiltonianer (die diesen armen Ingenieur zu Tode erschrecken) und ich bin mir einfach nicht sicher, wie ich überhaupt mit der Konstruktion eines beginnen soll optimale Flugbahn?

Gibt es überhaupt eine Erklärung für Dummies oder ein Buch, um es für Dummies zu erklären?

Danke im Voraus!

Während es derzeit vier positive Stimmen gibt, gibt es auch drei Stimmen zum Schließen und noch keine hilfreichen Kommentare zur Verbesserung der Frage, also werde ich versuchen zu helfen. Die beiden Abstimmungen zum Schließen sind darauf zurückzuführen, dass die Frage "zu breit" ist, und das ist wahrscheinlich wahr. Das bedeutet nicht, dass es eine schlechte Frage ist, aber dass es nicht gut zu Stack Exchange passt. Ich würde empfehlen, dass Sie versuchen, dies auf eine spezifischere Frage einzugrenzen, die leicht in ein paar Sätzen bis höchstens ein paar Absätzen beantwortet werden kann. Im Moment ist das gesamte hypothetische Buch "Trajektorienoptimierung für Dummies"
ist wirklich notwendig, um diese Frage zu beantworten, und das ist viel zu viel für eine Frage. Sie könnten zum Beispiel eine Frage zu Primvektoren stellen ; eine Passage zitieren, die den Begriff verwendet, einen Link zur Quelle angeben und eine spezifische Frage dazu stellen. Sie können sich auch die Dutzenden von Fragen und Antworten hier zur „Flugbahnoptimierung“ (beachten Sie die alternative Schreibweise) space.stackexchange.com/search?q=trajectory+optimization ansehen und dann nach einem bestimmten Thema fragen, das nicht vollständig genug erklärt wird für dich.
Beifall! Schätzen Sie die Hilfe, sehr neu auf dieser Seite! werde versuchen, in Zukunft schmaler zu sein!
Ich habe festgestellt, dass diese Seite am nützlichsten ist, wenn ich sie in einzelne Fragen aufteilen kann. Fügen Sie die einfachste Version der Frage in den Fragentitel ein und lassen Sie die Erläuterung für den Fragentext übrig.
@uhoh Es scheint, als wäre eine Buchempfehlung tatsächlich nützlich. Kennen Sie ein solches Buch?
@DoctorMohawk Ich habe nicht den Hintergrund, um die "guten Bücher" zu kennen, aber mehrere Benutzer hier haben einige Ressourcen und Referenzen zum Thema Weltraumforschung zusammengestellt . Eine neue Frage, die ein spezifisches Problem umreißt und um eine Antwort bittet, sowie eine Buchempfehlung könnten eine hervorrufen. Wenn Sie "anständig in Python" sind, haben Sie irgendwelche Gedanken zu stackoverflow.com/q/51609953/3904031 ?
Ja, die Frage ist verdammt breit ... Die Optimierung des Transfers zwischen zwei koplanaren kreisförmigen Umlaufbahnen mit einem vereinfachten 2-Körper-Problem (1 massiver + 1 leichter Körper) ist bereits schwierig. Dann erhalten Sie nicht kreisförmige, nicht koplanare, nicht 2-Körper-, nicht impulsive Verbrennungen, Schwerkraftunterstützung, Zeitbeschränkungen, thermische Beschränkungen (kein Oberth-Manöver gegen die Sonne!), Aerobraking, massives Fahrzeug im tatsächlichen n-Körper-System, nichtkugelförmige Körper, leichter Druck, unreines Vakuum, und jedes einzelne davon erhöht die Schwierigkeit um eine Größenordnung. Wie präzise und flexibel sind Sie bereit zu gehen?
Ich stimme allen ausdrücklich nicht zu, dass diese Frage als zu weit gefasst geschlossen werden sollte. Basierend auf den Antworten, die diese Frage provoziert hat, denke ich, dass es bleiben muss. Ich möchte an einer Antwort auf dieses Problem arbeiten, die alles ausfüllt, was ich über die Primer-Vektor-/indirekte Methode gelernt habe, aber es ist nur eine Menge Arbeit (ich wünschte, Sie könnten Entwürfe speichern und zurückkommen und eine Antwort fertig stellen Wochen Zeit)

Antworten (3)

Ich bin auf der Suche nach einer ähnlichen Antwort, also dachte ich, ich würde hier eine starten und andere Eingaben machen lassen. Hier ist, was ich bisher gefunden habe.

Lese liste

Ich werde hier anfangen, einige allgemeine Links zusammenzustellen.

Bücher

Andere

Entwurfsschritte für Trajektorien

Bootstrap

Um eine Mission zu planen, müssen Sie einige allgemeine Missionseinschränkungen identifizieren. Wenn es sich um ein neues Problem handelt, müssen Sie möglicherweise eine Lösung booten, um zu verstehen, welche Einschränkungen möglicherweise bestehen.

Dazu können Sie ein bestimmtes Startdatum der Mission auswählen, an dem Sie denken, dass eine Flugbahn machbar sein könnte, sowie einige andere spezifische Einschränkungen (eine gewisse Menge an verfügbarem Kraftstoff, Isp des Motors usw.). Laut Ocampo (Kapitel 4 von Spacecraft Trajectory Optimization , herausgegeben von Conway), dem Schöpfer des Copernicus -Flugbahnoptimierungsprogramms der NASA , gibt es vier grundlegende Schritte:

  1. Finden Sie eine praktikable impulsive Lösung (sofortiges Delta-V).
  2. Optimieren Sie die impulsive Lösung (z. B. durch Minimierung von Delta-V).
  3. Wandeln Sie impulsive Manöver in endliche Verbrennungen (nicht sofortige Verbrennungen) um, indem Sie eine suboptimale Steuerung verwenden, und optimieren Sie erneut (diesmal durch Maximieren der endgültigen Masse oder durch Minimieren der erforderlichen anfänglichen Nassmasse).
  4. Rekonstruieren Sie Schubvektoren unter Verwendung optimaler Steuerung und optimieren Sie eine endgültige Zeit.

Ich denke, die Schritte 1-2 sind alles, was Sie wirklich brauchen, um C3- oder DV-Plots zu erstellen. Nachdem Sie Ihre allgemeinen Einschränkungen identifiziert haben (unten), können Sie einen bestimmten Satz von Missionsdaten auswählen und alle Schritte ausführen.

Wenn bereits Referenztrajektorien vorhanden sind, können Sie die Schritte 1-2 überspringen, Ihre C3/DV-Diagramme erstellen und dann alle vier Schritte ausführen, sobald Sie Ihre Abfahrts- und Ankunftsdaten usw. bestimmt haben.

Es ist erwähnenswert, dass Paul in einer anderen Antwort auf diese Frage einige wirklich gute Informationen darüber bereitgestellt hat, wie die Optimierung selbst durchgeführt wird . Ich werde jetzt nicht versuchen, seine Antwort zu verbessern.

Identifizieren Sie allgemeine Einschränkungen

Wo gehst du hin? Was sind die minimale und maximale Missionsdauer? Wann können Sie frühestens gehen? Das Neueste? Interessieren Sie sich für Flugbahnen mit niedrigem Schub oder etwas Hohmann-ähnlicheres?

Interplanetarisch

Verwenden Sie ein Schweinekotelett-Diagramm für extrem angenäherte Trajektorien, die Ihre ausgewählten Grenzen erfüllen.

Für Erde-Mars gibt es ein webbasiertes Tool zum Generieren dieser . Dieses Tool scheint das Lambert-Targeting zu verwenden, führt also direkte Übertragungen durch und wird wahrscheinlich nicht viel bei Flugbahnen mit niedriger Energie helfen, die Schwerkraftunterstützung beinhalten.

Allgemeiner gesagt hat die NASA eine Suchmaschine für Flugbahnen (die viele Informationen zu diesem Thema bereitstellt). Wie bei der obigen App und anscheinend im Allgemeinen: „Die Datenbank enthält Lösungen für direkte Transfers und einfache Schwerkraftunterstützungen auf ausgehenden Strecken. Komplexere Schwerkraftunterstützungsmanöver und andere Strategien können verwendet werden, um alternative Trajektorien zu finden, die nicht in der Datenbank aufgeführt sind.“

Es ist nicht ungewöhnlich, dass Schweinekotelett-Plots große leere Bereiche enthalten, in denen keine Flugbahninformationen angezeigt werden. Betrachten Sie zum Beispiel diesen aus dem Trajectory Browser der NASA:

Trajektoriendiagramme können große leere Flächen enthalten.  Dieses von der NASA zeigt Abflug- und Ankunftsfenster für Erde-Apophis innerhalb bestimmter Grenzen.

Es kann sein, dass die Autoren keine Trajektorien im weißen Bereich berechnet haben, weil sie wussten, dass der DV zu hoch sein würde, oder es kann sein, dass sie einfach nicht angezeigt werden, weil sie um Größenordnungen höher sind als die gezeigten und die verzerren Farbbalken. Die Erkenntnis hier ist, dass das Schweinekotelett-Diagramm nur relevante Trajektorien zeigen sollte.

Mond

Ich habe (bisher) keine Porkchop-Plots für Mondmissionen gesehen. Die Idee scheint jedoch die gleiche zu sein: Sie identifizieren Ihre Einschränkungen und wählen eine Klasse von Missionen (z. B. direkte Transfers) aus, die Sie sich ansehen möchten. Dann betrachten Sie entweder die spezifische Energie (C3) oder den DV.

Betrachten Sie zum Beispiel dieses Kapitel aus dem Buch „Low-Energy Lunar Transfer Design“ des JPL . Sie beginnen damit, drei verschiedene Klassen von Missionen zu betrachten: direkte Übertragung, kurze Niedrigenergie, lange Niedrigenergie. Sie variieren den Längengrad des aufsteigenden Knotens (der eine Funktion des Abreisedatums ist) und zeigen, wie sich das Delta-V für die Mondeinfügung für jeden dieser Knoten ändert.

Orbit Insertion Delta-V für verschiedene Missionsklassen über einen Längenbereich des aufsteigenden Knotens.

Im Allgemeinen haben sie also Einschränkungen für ihre Missionen herausgefunden und dann bestimmt, welche Variablen die größte Kontrolle über DV (oder C3) ausüben.

Entwickeln Sie informierte Einschränkungen

Sobald Sie Ihre Schweinekotelett- (oder Delta-V-) Diagramme erstellt haben, können Sie die Einschränkungen identifizieren, die gleichzeitig Ihre Missionsanforderungen erfüllen und die größte Flexibilität bieten (z. B. langes Startfenster, größte Fehlertoleranz usw.).

Und ich werde hier vorerst aufhören und später zurückkommen und weitere hinzufügen (wie ich lerne).

In seiner breitesten Form findet die Trajektorienoptimierung einfach den besten Pfad (und Steuerwerte, um diesen Pfad zu erzeugen), der die Dynamik erfüllt. Die Dynamik ist in diesem Fall entweder die Orbitaldynamik (z. B. Keplers 2-Körper-Problem mit richtigen Ephemeriden), die Raketenaufstiegsdynamik oder die ballistische/hebende Wiedereintrittsdynamik. Die Kostenfunktion kann auf viele verschiedene Arten erstellt werden, je nachdem, was Sie am Ende wollen. Beispielsweise möchten Sie möglicherweise die Dynamik optimieren, um einen bestimmten Zustand am Ende eines festgelegten Zeitintervalls zu erzeugen. Oder Sie möchten den Kraftstoffverbrauch während der Fahrt minimieren (was die Nutzlastmasse maximiert). Oder Sie möchten die Zeit, die zum Erreichen eines bestimmten Endzustands benötigt wird, mit dem geringsten (drosselbaren/vektorgesteuerten Schub) minimieren.

Sobald Sie Ihre dynamischen Gleichungen und Ihre "Kostenfunktion" festgelegt haben, können Sie dies in eine Reihe von Gleichungen übersetzen, die Sie lösen können. Dieser Vorgang wird in der Trajektorienoptimierungsnomenklatur "Transkription" genannt. Im Großen und Ganzen gibt es zwei Möglichkeiten, das Problem zu transkribieren. Die "indirekte" Methode schlägt vor, dass Sie die Optimalitätsbedingungen zuerst analytisch formulieren und diese Bedingungen dann über eine bestimmte Anzahl von Zeitschritten N diskretisieren sollten. Dies führt zu einem nichtlinearen Gleichungssystem mit M N Variablen, wobei M die Anzahl der Variablen zur Beschreibung eines Zustands zu einem bestimmten Zeitpunkt ist (z. B. die Anzahl der Differentialgleichungen); Plus P N Kontrollvariablen, wobei P die Anzahl der Kontrollen ist, die in jedem Zeitschritt angewendet werden. Beispielsweise haben Sie bei einem 2-Körper-Problem in kartesischen Koordinaten vier Zustandsvariablen in jedem Zeitschritt (x-Position, x-Geschwindigkeit, y-Position und y-Geschwindigkeit). Die Steuerung kann ein drosselbarer Schub sein, der immer in Geschwindigkeitsrichtung zeigt. Es gäbe also nur 1 Kontrolle in jedem Zeitschritt. Dies kann oft mühsam sein, da ein Großteil der Arbeit von Hand erledigt werden muss.

Die Alternative wird als "direktes" Verfahren bezeichnet. In diesem Fall würden Sie die Gleichungen zuerst diskretisieren und dann die Bedingungen für Optimalität formulieren. Anstatt also die Bedingungen für einen unendlichen Raum zu formulieren (indirekte Methode), formulieren Sie sie nur für den endlichdimensionalen Raum (eine endliche Anzahl von Zustands- und Kontrollvariablen). Der Vorteil dieser Methode besteht darin, dass das Problem nun zu einem nichtlinearen eingeschränkten Optimierungsproblem wird (das einfacher direkt zu programmieren und unter Verwendung von Softwarepaketen zu lösen ist).

Unter dem Dach der direkten Methoden gibt es verschiedene Möglichkeiten, das Problem zu diskretisieren. Eine Methode wird als Kollokation bezeichnet, bei der wir die Dynamik zwingen, zu bestimmten Zeitpunkten zuzustimmen (während wir eine Art Interpolationsschema zwischen diesen Punkten annehmen, z. B. lineare oder quadratische Interpolation). Der andere Ansatz wird Shooting genannt, was so etwas wie ein Trial-and-Error-Ansatz ist, bei dem die Diskrepanz (auch bekannt als die Fehlerbeschränkung) bei jedem Zeitschritt diskretisiert und auch minimiert wird. Ich habe keine Aufnahmemethoden zur Flugbahnoptimierung verwendet, aber ich habe die Kollokationsmethode verwendet, also werde ich sie direkt ansprechen.

Der Schlüsseltrick bei der Kollokationsmethode besteht darin, zu wissen, wie die nichtlinearen Gleichheitsbeschränkungen unter Verwendung der Dynamik des Problems berechnet werden. Die Schlüsselidee ist, dass man bei jedem Zeitschritt den vorhergesagten Wert aus der Dynamik so einschränken muss, dass er am Ende des Zeitschritts gleich dem wahren Wert ist. Angenommen, wir betrachten den i-ten Zeitschritt, der Zustandsvariablen hat x ich und x ich + 1 jeweils in Zeitschritten t ich und t ich + 1 . Nehmen wir auch an, dass die dynamische Gleichung in der Form geschrieben werden kann x ˙ = f . Integriert man beide Seiten dieser Gleichung zeitlich über das Intervall von t ich zu t ich + 1 , wir bekommen

x ich + 1 x ich = t ich t ich + 1 f d t .

Man kann das Integral auf viele Arten diskretisieren. Wählen wir der Einfachheit halber so etwas wie die Trapezregel. Dann können wir erhalten

x ich + 1 = x ich + f ich + f ich + 1 2 Δ t .

Definieren wir den von der Dynamik vorhergesagten Wert als x ich + 1 p = x ich + f ich + f ich + 1 2 Δ t . Der tatsächliche Wert am Ende dieses Zeitschritts ist x ich + 1 . Um also eine dynamische Beschränkung aufzuerlegen, setzen wir einfach den vorhergesagten Wert gleich dem wahren Wert am Ende dieses Zeitintervalls. Mathematisch schreiben wir: x ich + 1 p x ich + 1 = 0 . Wir schreiben es so, weil die meisten nichtlinearen Programmierpakete verlangen, dass Sie Gleichheitsbeschränkungen schreiben, bei denen die RHS gleich Null ist.

Das ist der Großteil der harten Arbeit. Sie müssen lediglich eine Funktion erstellen, die einen Vektor berechnet, der alle diese Einschränkungen in jedem Zeitschritt gleichzeitig enthält. In ähnlicher Weise müssen Sie Ihre Zielfunktion in Bezug auf die diskreten Variablen schreiben x ich , die ein diskretisiertes Integral über die Zeit und/oder eine Funktion des Endzustands umfassen kann.

Sobald Sie die Zielfunktion und die Gleichheitsbeschränkungsfunktion haben (beide Funktionen der Zustandsvariablen und Kontrollen in allen Zeitschritten), müssen Sie auch Unter- und Obergrenzen für jede der Zustands- und Kontrollvariablen in allen Zeitschritten angeben. Diese Grenzen sind in der Regel physikalisch motiviert, z. B. muss die Masse positiv sein oder der Umlaufradius darf 2 astronomische Einheiten nicht überschreiten usw. Außerdem müssen Sie häufig eine anfängliche Schätzung abgeben, die die unteren und oberen Grenzen erfüllt. Manchmal kann ein Trajektorienoptimierungsproblem empfindlich auf Ihre anfängliche Vermutung reagieren, daher ist es eine gute Idee, es so nah wie möglich an dem zu wählen, was Ihrer Meinung nach die wahre Lösung sein sollte (z Zeit, es zu benutzen).

Sobald Sie alle diese Informationen haben, können Sie sie einfach einem nichtlinearen Programmierlöser (z. B. fmincon, ipopt usw. von Matlab) zuführen. Es gibt normalerweise verschiedene Methoden, die Sie verwenden können, um nichtlineare eingeschränkte Optimierungsprobleme zu lösen, wie z. B. sequenzielle quadratische Programmierung (SQP), Active-Set-Methoden (ASM) oder Interior-Point-Methoden (IP). Von den Methoden, die ich bei der Flugbahnoptimierung für die Orbitalmechanik verwendet habe, habe ich festgestellt, dass die Methoden der inneren Punkte die schnellsten und robustesten sind. Unabhängig davon, für welche nichtlineare Programmiermethode Sie sich entscheiden, stellen Sie sicher, dass Sie bei der Überprüfung der Konvergenz sowohl die Machbarkeit (wie viele Beschränkungsverletzungen treten auf) als auch die Optimalität erster Ordnung (wie nahe wir am Boden einer Schüssel sind) überprüfen /Senke). Beide Werte müssen klein sein, um als "konvergente" Lösung betrachtet zu werden.

Bevor Sie mit der Programmierung eines Bahnoptimierungscodes für die Orbitalmechanik beginnen, empfehle ich dringend, ein einfacheres Problem mit einer bekannten Lösung auszuprobieren. Das sogenannte Bang-Bang-Steuerungsproblem ist ein gutes Beispiel für ein 1D-Optimalsteuerungsproblem mit 1D-Bewegung. Bei diesem Problem sucht man die optimale Beschleunigung, die erforderlich ist, um eine bestimmte Entfernung in der minimalen Zeit zu erreichen, so dass Ihre Endgeschwindigkeit ebenfalls Null ist. Dies ist ein klassisches Problem mit viel physikalischer Intuition (und sogar einer analytischen Lösung). Intuitiv wäre die beste Steuerung, so schnell wie möglich in Richtung Ihres Ziels bis zu einem bestimmten Punkt zu beschleunigen und dann so schnell wie möglich zu verzögern, bis Sie Ihren Zielpunkt gerade noch mit einer Geschwindigkeit von Null erreichen.

Sie können sehen, wie dieses Bang-Bang-Problem mit der direkten Kollokationsmethode (komplett mit Matlab-Code) in Sam Pfrommers Blog transkribiert werden kann:

http://sam.pfrommer.us/tutorial-direct-collocation-trajectory-optimization-with-matlab

Für zusätzliche Informationen zur Trajektorienoptimierung im Allgemeinen mit komplizierteren Beispielen wie dem Cart-Pole-Control-Problem schlage ich vor, Matthew Kelleys Tutorial zu diesem Thema zu lesen/anzuschauen:

https://epubs.siam.org/doi/pdf/10.1137/16M1062569

[Dies wird ein Antwortentwurf sein, wenn ich mehr lerne und mehr Zeit habe, ihn auszufüllen und mit symbolischer Mathematik zu bearbeiten - im Moment wird es sehr grob und diese Antwort wird sich im Laufe der Zeit stark weiterentwickeln]

Grundlegendes vereinfachtes Problem

Das allgemeine Problem besteht darin, ein Raumfahrzeug aus einem Satz von Anfangsbedingungen zu nehmen r ( 0 ) , v ( 0 ) , m ( 0 ) zu einer Reihe von Endbedingungen r ( t f ) , v ( t f ) wo u ( t ) ist eine kontinuierliche Regelung zu lösen, für die die Schubrichtung der Rakete einer Kostenfunktion unterliegt J minimiert werden. Die Kostenfunktion ist üblicherweise die minimale Zeit oder die maximale Terminalmasse für ein Problem mit freier Endzeit oder die maximale Orbitalenergie für ein Problem mit fester Zeit. Es kann andere diskrete Kontrollen wie Schaltzeiten oder andere kontinuierliche Kontrollen geben, wenn Drosselung involviert ist, zusammen mit Pfadbeschränkungen und anderer Komplexität, die ich vorerst ignorieren werde.

Wenn einem die Lösung gegeben wird u ( t ) für alle t, dann reduziert sich das Problem auf ein einfaches Anfangswertproblem (IVP) mit einem gekoppelten System gewöhnlicher verschiedener Gleichungen (ODEs), das mit einem ODE-Löser wie der Runge-Kutta-Fehlberg-Methode (RKF45) oder vorwärts integriert werden könnte der Dormand-Prince (RKDP) Solver in Matlabs ode45.

Da sind wir nicht gegeben u ( t ) und stattdessen für diese Steuerung so lösen muss, dass die Endrandbedingungen erfüllt sind, wird es zu einem Zweipunkt-Randwertproblem (TPBVP).

Indirekte Methode

Die „indirekte“ Methode verwendet den Calculus of Variations (CoV) und einen Zweig der Mathematik namens Optimal Control Theory, der das Maximum- (oder Minimum-) Prinzip von Pontryagin verwendet. Wenn es auf das Problem der Optimierung von Raketenflugbahnen angewendet wird, wird dies zu Lawdens Primer Vector Theory, bei der ein Großteil des mathematischen Rahmens für den Ingenieur erstellt wurde.

Das indirekte Verfahren verwendet typischerweise Schießverfahren (oder mehrere Schießverfahren), um eine Schätzung der Anfangsbedingungen zeitlich vorwärts zum Endzustand zu integrieren. Das Residuum aller Grenzwerte wird konstruiert und dann wird ein Wurzelfindungswerkzeug wie Levenberg-Marquardt oder eine Quasi-Newton-Vertrauensbereichsmethode verwendet (Vanille-Newton-Raphson wird bei diesem nichtlinearen Problem Konvergenzschwierigkeiten haben).

Unter Weglassung der mathematischen Entwicklung das Problem für eine Rakete im Vakuum, die einem inversen quadratischen Zentralkraftpotential unterliegt g ( r ) = 1 r 3 r Wo die Endmasse maximiert werden soll, ist die Kostenfunktion ein einfaches Mayer-Problem:

J = φ ( r f , v f , m f , t f ) = m f

[BEARBEITEN: brauche einen Kommentar zur Normalisierung] Der Hamiltonian I wird wie folgt angeben:

H = P r T v + P v T [ 1 r 3 r + T 1 b ] + P m ( R 0 G 0 T m ich s p )

[...hier noch in Arbeit...]

Die indirekte Methode kann mit Matlabs fsolveoder lsqnonlinFunktionen zur Wurzelfindung und dem ode45Solver zum Integrieren von IVPs und Schießen gelöst werden. Oder die Kollokationslöser bvp4c/bvp5ckönnen verwendet werden, um den Staat und die Küste zu integrieren und innere Beschränkungen anzuwenden.

Die Einschränkungen der indirekten Methode sind:

  1. Das Schätzen der Küstenlinie wird sehr schwierig und mehr zu einer Kunstform, wenn die Problemkomplexität zunimmt.
  2. Die Lösung reagiert oft empfindlich auf kleine Störungen in der Anfangsküste und konvergiert nicht (insbesondere bei schwierigen Problemen wie einer exponentiellen Atmosphäre).
  3. Pfadbeschränkungen (wie z. B. dynamische Druck- oder Anstellwinkelbeschränkungen) werden schwierig anzuwenden.
  4. Die Komplexität der Primervektorgleichung wird schwierig, wenn atmosphärische Flug- und Pfadbeschränkungen berücksichtigt werden.
  5. Die Transversalitätsgleichungen sind schwer abzuleiten und eine Kunstform.

Die Vorteile der indirekten Methode sind:

  1. Schnell, insbesondere bei der Verwendung von Integratoren zur Anpassung der Schrittweite oder der analytischen Berechnung der Trajektorie
  2. Relativ einfach für uneingeschränkte Lösungen in einem Vakuum, das nur einen ODE-Löser und einen Wurzelfindungsalgorithmus erfordert

Direkte Methode

Das direkte Verfahren verwendet einige Formen von orthogonaler Kollokation und Diskretisierung, um das TPBVP in ein nichtlineares Programmierproblem umzuwandeln. Dadurch werden die Küstenlinie und die Küstengleichungen sowie die Transversalitätsbedingungen aus dem Problem eliminiert. Es wird im Allgemeinen nicht eine eindeutige Lösung des Problems geben, die die Endbedingungen erfüllt, sondern die Kostenfunktion J ( t ) wird direkt angewendet, um die Lösung zu finden, die die Endbedingungen erfüllt.

[... viele Details weggelassen, die ich erst noch erfahre...]

Die Matlab-Funktion fminconoder die Matlab-Bindungen, ipoptmit denen diese Art von Problem gelöst werden kann, SNOPTist ein häufig verwendetes kommerzielles Paket, das zur Lösung dieser Art von Problem verwendet wird und auch Matlab-Bindungen enthält.

Zu den Vorteilen der direkten Methode gehören:

  1. Kein Erraten der anfänglichen Kostenwerte, viel weniger Empfindlichkeit gegenüber der anfänglichen Kontrollschätzung
  2. Keine Kostengleichungen
  3. Keine Transversalitätsbedingungen
  4. Es ist viel einfacher, interne Pfadbeschränkungen direkt auf das Problem anzuwenden
Um diese Antwort zu ergänzen, verarbeitet die direkte Methode schlechte anfängliche Vermutungen sehr gut. Daher kann es als Ausgangspunkt für eine indirekte Optimierungsmethode dienen.
Ja, 2,5 Jahre später sollte ich wirklich sehen, ob ich das besser aktualisieren kann, da ich jetzt viel mehr verstehe.