Maybe nearing the final commit

This commit is contained in:
Connor
2022-04-18 10:59:25 -06:00
parent 0fb875c777
commit 5b6656a9a6
3598 changed files with 79349 additions and 572 deletions

View File

@@ -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}

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@@ -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

View File

@@ -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}

View File

@@ -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}