Maybe nearing the final commit
This commit is contained in:
@@ -234,6 +234,15 @@
|
||||
Earth. From knowledge of the mass flow rate, we can then decrement the mass
|
||||
appropriately based on the magnitude of the thrust vector at each point.
|
||||
|
||||
In the implementation provided in this thesis, a Sims-Flanagan $n$ value of 20 was
|
||||
chosen for each of the phases. This value, as tested by
|
||||
Englander\cite{englander2012automated}, is sufficient for trajectories that maintain a
|
||||
reasonably small number of solar revolutions. In the future, a more intelligent solution
|
||||
could be to determine, roughly, the number of revolutions around the sun that the orbit
|
||||
will likely take (perhaps by using the period of the orbit at the beginning of the
|
||||
propagation and the time of flight), and scaling $n$ according to the number of
|
||||
revolutions.
|
||||
|
||||
\subsection{Non-Linear Problem Solver}
|
||||
|
||||
Now that we have the basic building blocks of a continuous-thrust trajectory, we can
|
||||
@@ -434,15 +443,24 @@
|
||||
generator produces two random missions as described in
|
||||
Section~\ref{random_gen_section} that differ only in that one contains random flyby
|
||||
velocities and control thrusts and the other contains Lambert's-solved flyby
|
||||
velocities and zero control thrusts. For each of these guesses, the NLP solver is
|
||||
called. If either of these mission guesses have converged onto a valid solution, the
|
||||
lower loop, the ``drill loop'' is entered for the valid solution. After the
|
||||
convergence checks and potentially drill loops are performed, if a valid solution
|
||||
has been found, this solution is stored in an archive. If the solution found is
|
||||
better than the current best solution in the archive (as determined by a
|
||||
user-provided cost function of fuel usage, $C_3$ at launch, and $v-\infty$ at
|
||||
arrival) then the new solution replaces the current best solution and the loop is
|
||||
repeated. Taken by itself, the search loop should quickly generate enough random
|
||||
velocities and zero control thrusts.
|
||||
|
||||
The choice of adding a ``Lambert's solution-seeded'' random mission is an attempt to
|
||||
improve upon previous low-thrust MBH iterations by more intelligently choosing some of
|
||||
the initial guesses. Because the majority of the initial guesses that are truly random
|
||||
don't converge, this provides a greater number of valid initial guesses for the MBH
|
||||
algorithm to use to find better trajectories. However, each MBH loop does then take
|
||||
twice the time, which increases the amount of time required to truly traverse the entire
|
||||
space.
|
||||
|
||||
For each of these guesses, the NLP solver is called. If either of these mission guesses
|
||||
have converged onto a valid solution, the lower loop, the ``drill loop'' is entered for
|
||||
the valid solution. After the convergence checks and potentially drill loops are
|
||||
performed, if a valid solution has been found, this solution is stored in an archive. If
|
||||
the solution found is better than the current best solution in the archive (as
|
||||
determined by a user-provided cost function of fuel usage, $C_3$ at launch, and
|
||||
$v-\infty$ at arrival) then the new solution replaces the current best solution and the
|
||||
loop is repeated. Taken by itself, the search loop should quickly generate enough random
|
||||
mission guesses to find all ``basins'' or areas in the solution space with valid
|
||||
trajectories, but never attempts to more thoroughly explore the space around valid
|
||||
solutions within these basins.
|
||||
@@ -489,4 +507,25 @@
|
||||
iterations to perform without improvement in a row before ending the drill loop.
|
||||
This process can be repeated essentially ''search patience`` number of times in
|
||||
order to fully traverse all basins.
|
||||
|
||||
It is worth validating whether the described Monotonic Basin Hopping algorithm
|
||||
actually provides significant improvements in global cost-function minimization over
|
||||
a single NLP-optimization run for the particular problem of low-thrust
|
||||
interplanetary trajectories. Therefore, a simple sample Earth to Saturn trajectory
|
||||
was selected and every single valid trajectory discovered by the MBH algorithm was
|
||||
stored. In Figure~\ref{mbh_analysis}, the cost function values for each of these
|
||||
valid trajectories is plotted in the order in which they were found. The line
|
||||
indicates the minimum cost function discovered until that point in time. This
|
||||
validates that the MBH, over sufficient number of iterations, will find optimal
|
||||
values that the NLP optimization scheme could not discover on its own. It is also
|
||||
worth noting that the ``basin drilling'' feature of the MBH scheme can be clearly
|
||||
seen in the plot, where the algorithm continues to improve its own ``basin-best''
|
||||
until it no longer can do so over a number of attempts.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{LaTeX/fig/mbh_analysis}
|
||||
\caption{MBH cost function reduction over time}
|
||||
\label{mbh_analysis}
|
||||
\end{figure}
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
parameters. This makes the mission designer's job significantly simpler in that they can
|
||||
simply explore a number of different flyby selection options in order to get a good
|
||||
understanding of the mission scope and search space for a given spacecraft, launch window,
|
||||
and target.
|
||||
and target. The aim of this exploration was to examine whether a Monotonic Basin Hopping
|
||||
algorithm utilizing an inner-loop NLP solver would be an appropriate choice for the
|
||||
particular problem of low-thrust interplanetary trajectory optimization.
|
||||
|
||||
In performing this examination, two results were selected for further analysis. These
|
||||
results are outlined in Table~\ref{results_table}. As can be seen in the table, both
|
||||
|
||||
BIN
LaTeX/fig/mbh_analysis.png
Normal file
BIN
LaTeX/fig/mbh_analysis.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
@@ -101,6 +101,47 @@
|
||||
\item EVVJS
|
||||
\end{itemize}
|
||||
|
||||
For each of these trajectories, the optimization algorithm was run. During the MBH phase
|
||||
of the optimization algorithm, anytime a new ``basin best'' mission was discovered, it
|
||||
was recorded. The resultant cost function values of each of those discovered missions
|
||||
can be found in the table below:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\begin{adjustbox}{height=0.3\textheight}
|
||||
\begin{tabular}{ | c c c c | }
|
||||
\hline
|
||||
\bfseries Flyby Selection &
|
||||
\bfseries Cost Function Value &
|
||||
\bfseries Flyby Selection &
|
||||
\bfseries Cost Function Value \\
|
||||
\hline
|
||||
EMS & 0.64797 & EMJS & 0.66014 \\
|
||||
EMS & 0.68828 & EMS & 0.69704 \\
|
||||
EMJS & 0.74576 & EMJS & 0.79745 \\
|
||||
EMJS & 0.80372 & EMJS & 0.82510 \\
|
||||
EMMJS & 0.91149 & EMJS & 0.94148 \\
|
||||
EMJS & 0.96141 & EMS & 1.02972 \\
|
||||
EJS & 1.12848 & ES & 1.23167 \\
|
||||
EVMS & 1.32600 & EMS & 1.32879 \\
|
||||
EMS & 1.33779 & EMJS & 1.39527 \\
|
||||
EVMS & 1.41517 & EVMS & 1.45960 \\
|
||||
EVMS & 1.46649 & EVMS & 1.52207 \\
|
||||
EVMS & 1.59234 & EVMJS & 1.66943 \\
|
||||
EMS & 1.70295 & EMJS & 1.70438 \\
|
||||
EMS & 1.78107 & EVVJS & 2.0106 \\
|
||||
EMJS & 2.15952 & EJS & 2.16216 \\
|
||||
EMJS & 2.22167 & EMMJS & 2.38431 \\
|
||||
EMJS & 2.42457 & EMMJS & 2.46453 \\
|
||||
EVVJS & 2.49257 & EMJS & 2.49485 \\
|
||||
EVMS & 2.71118 & EMJS & 2.76812 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{adjustbox}
|
||||
\caption{Table of resultant cost function values for every discovered mission}
|
||||
\label{cost_fn_table}
|
||||
\end{table}
|
||||
|
||||
\section{Faster, Less Efficient Trajectory}
|
||||
|
||||
In order to showcase the flexibility of the optimization algorithm (and the chosen cost
|
||||
@@ -120,11 +161,14 @@
|
||||
The mission begins in late June of 2024 and proceeds first to an initial gravity assist with
|
||||
Mars after three and one half years to rendezvous in mid-December 2027. Unfortunately, the
|
||||
launch energy required to effectively use the gravity assist with Mars at this time is
|
||||
quite high. The $C_3$ value was found to be $60.4102 \frac{\text{km}^2}{\text{s}^2}$. However,
|
||||
for this phase, the thrust magnitudes are quite low, raising slowly only as the spacecraft
|
||||
approaches Mars, allowing for a nearly-natural trajectory to Mars rendezvous. Note also that
|
||||
the in-plane thrust angle was neither zero nor $\pi$, implying that these thrusts were
|
||||
steering thrusts rather than momentum-increasing thrusts.
|
||||
quite high. The $C_3$ value was found to be $60.4102 \frac{\text{km}^2}{\text{s}^2}$. While
|
||||
not as low as some of the other missions found to be very optimal, it should be noted that
|
||||
missions with this $C_3$ and launch mass are still quite feasible.
|
||||
|
||||
However, for this phase, the thrust magnitudes are quite low, raising slowly only as the
|
||||
spacecraft approaches Mars, allowing for a nearly-natural trajectory to Mars rendezvous.
|
||||
Note also that the in-plane thrust angle was neither zero nor $\pi$, implying that these
|
||||
thrusts were steering thrusts rather than momentum-increasing thrusts.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
\usepackage{amsfonts}
|
||||
\usepackage{float}
|
||||
\usepackage{xfrac}
|
||||
\usepackage{adjustbox}
|
||||
|
||||
\title{Designing Optimal Low-Thrust Interplanetary Trajectories Utilizing Monotonic Basin Hopping}
|
||||
\author{Richard C.}{Johnstone}
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
the end, we'll also assume that the mass of the spacecraft ($m_2$) is much much smaller
|
||||
than the mass of the planetary body ($m_1$) and enough so as to be considered
|
||||
negligible.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.65\textwidth]{LaTeX/fig/2bp}
|
||||
@@ -42,21 +41,18 @@
|
||||
the center of mass in the two body problem}
|
||||
\label{2bp_fig}
|
||||
\end{figure}
|
||||
|
||||
Under these assumptions, the force acting on the body due to the law of universal
|
||||
gravitation is:
|
||||
\begin{align}
|
||||
F_2 &= - \frac{G m_1 m_2}{r^2} \frac{\vec{r}}{\left| r \right|} \\
|
||||
F_1 &= \frac{G m_2 m_1}{r^2} \frac{\vec{r}}{\left| r \right|}
|
||||
\end{align}
|
||||
|
||||
And by Newton's second law (force is the product of mass and acceleration), we can
|
||||
derive the following differential equations for $r_1$ and $r_2$:
|
||||
\begin{align}
|
||||
m_2 \ddot{\vec{r}}_2 &= - \frac{G m_1 m_2}{r^2} \frac{\vec{r}}{\left| r \right|} \\
|
||||
m_1 \ddot{\vec{r}}_1 &= \frac{G m_2 m_1}{r^2} \frac{\vec{r}}{\left| r \right|}
|
||||
\end{align}
|
||||
|
||||
Where $\vec{r}$ is the position of the spacecraft relative to the primary body,
|
||||
$\vec{r}_1$ is the position of the primary body relative to the origin of the inertial
|
||||
frame, and $\vec{r}_2$ is the position of the spacecraft relative to the center of the
|
||||
@@ -177,7 +173,6 @@
|
||||
&= \frac{abE}{2} - \frac{ab}{2} \left( \cos E \sin E \right) \\
|
||||
&= \frac{ab}{2} \left( E - \cos E \sin E \right)
|
||||
\end{align}
|
||||
|
||||
By substituting the two areas back into Equation~\ref{areas_eq} we can get the $k$ area
|
||||
swept out by the spacecraft:
|
||||
\begin{equation}
|
||||
@@ -224,7 +219,6 @@
|
||||
\frac{-d^2\ln|g(x)|}{dx^2} &= \frac{1}{(x - x_1)^2} + \frac{1}{(x - x_2)^2} + ... +
|
||||
\frac{1}{(x - x_m)^2} = G_2(x)
|
||||
\end{align}
|
||||
|
||||
Now we define the targeted root as $x_1$ and make the approximation that all of the
|
||||
other roots are equidistant from the targeted root, which means:
|
||||
\begin{equation}
|
||||
@@ -333,7 +327,6 @@
|
||||
\begin{equation}
|
||||
\xi = \frac{v^2}{2} - \frac{\mu}{r} = \frac{v_\infty^2}{2}
|
||||
\end{equation}
|
||||
|
||||
We can then leverage the conservation of energy to determine the velocity at a
|
||||
particular point, $r_{ins}$:
|
||||
\begin{align}
|
||||
@@ -482,14 +475,12 @@
|
||||
\cos (\Delta \theta) &= \frac{\vec{r}_1 \cdot \vec{r}_2}{|\vec{r}_1| |\vec{r}_2|} \\
|
||||
\Delta \theta &= \arctan(y_2/x_2) - \arctan(y_1/x_1)
|
||||
\end{align}
|
||||
|
||||
The direction of motion is then chosen such that counter-clockwise orbits are
|
||||
considered, as travelling in the same direction as the planets is generally more
|
||||
efficient. Next, the variable $A$ is defined:
|
||||
\begin{equation}
|
||||
A = DM \sqrt{|r_1| |r_2| (1 - \cos(\Delta \theta))}
|
||||
\end{equation}
|
||||
|
||||
A is independent of $\psi$, and therefore won't need updating as the iteration
|
||||
proceeds. Then $\psi$ is initialized to any number within its bounds
|
||||
($[-4\pi,4\pi^2]$), arbitrarily set to 0, representing a parabolic arc as a starting
|
||||
@@ -520,7 +511,6 @@
|
||||
\begin{equation}
|
||||
y = |r_1| + |r_2| + \frac{A (c_3 \psi - 1)}{\sqrt{c_2}}
|
||||
\end{equation}
|
||||
|
||||
We can then finally calculate the variable $\chi$, and from that, the time of
|
||||
flight:
|
||||
\begin{equation}
|
||||
|
||||
Reference in New Issue
Block a user