Seems like a lot changed...
This commit is contained in:
122
LaTeX/thesis.tex
122
LaTeX/thesis.tex
@@ -12,8 +12,8 @@
|
||||
\degree{Master of Science}{M.S., Aerospace Engineering}
|
||||
\dept{Department of}{Aerospace Engineering}
|
||||
\advisor{Prof.}{Natasha Bosanac}
|
||||
\reader{TBD: Kathryn Davis}
|
||||
\readerThree{TBD: Daniel Scheeres}
|
||||
\reader{Kathryn Davis}
|
||||
\readerThree{Daniel Scheeres}
|
||||
|
||||
\abstract{ \OnePageChapter
|
||||
There are a variety of approaches to finding and optimizing low-thrust trajectories in
|
||||
@@ -573,7 +573,7 @@
|
||||
Englander in his Hybrid Optimal Control Problem paper, but does not allow for missions
|
||||
with multiple targets, simplifying the optimization.
|
||||
|
||||
\section{Inner Loop Implementation}
|
||||
\section{Inner Loop Implementation}\label{inner_loop_section}
|
||||
|
||||
The optimization routine can be reasonable separated into two separate ``loops'' wherein
|
||||
the first loop is used, given an initial guess, to find valid trajectories within the
|
||||
@@ -761,13 +761,117 @@
|
||||
in order to achieve maximum precision.
|
||||
|
||||
\section{Outer Loop Implementation}
|
||||
Overview the outer loop. This may require a final flowchart, but might potentially be too
|
||||
simple to lend itself to one.
|
||||
|
||||
\subsection{Inner Loop Calling Function}
|
||||
The primary reason for including this section is to discuss the error handling.
|
||||
Now we have the tools in place for, given a potential ''mission guess`` in the
|
||||
vicinity of a valid guess, attempting to find a valid and optimal solution in that
|
||||
vicinity. Now what remains is to develop a routine for efficiently generating these
|
||||
random mission guesses in such a way that thoroughly searches the entirety of the
|
||||
solution space with enough granularity that all spaces are considered by the inner loop
|
||||
solver.
|
||||
|
||||
\subsection{Monotonic Basin Hopping}
|
||||
Once that has been accomplished, all that remains is an ''outer loop`` that can generate
|
||||
new guesses or perturb existing valid missions as needed in order to drill down into a
|
||||
specific local minimum. In this thesis, that is accomplished through the use of a
|
||||
Monotonic Basin Hopping algorithm. This will be described more thoroughly in
|
||||
Section~\ref{mbh_subsection}, but Figure~\ref{mbh_flow} outlines the process steps of
|
||||
the algorithm.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{flowcharts/mbh}
|
||||
\caption{A flowchart visualizing the steps in the monotonic basin hopping
|
||||
algorithm}
|
||||
\label{mbh_flow}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Random Mission Generation}
|
||||
|
||||
At a basic level, the algorithm needs to produce a mission guess (represented by all
|
||||
of the values described in Section~\ref{inner_loop_section}) that contains random
|
||||
values within reasonable bounds in the space. This leaves a number of variables open
|
||||
to for implementation. For instance, it remains to be determined which distribution
|
||||
function to use for the random values over each of those variables, which bounds to
|
||||
use, as well as the possibilities for any improvements to a purely random search.
|
||||
|
||||
Currently, the first value set for the mission guess is that of $n$, which is the
|
||||
number of sub-trajectories that each arc will be broken into for the Sims-Flanagan
|
||||
based propagator. For this implementation, that was chosen to be 20, based upon a
|
||||
number of tests in which the calculation time for the propagation was compared
|
||||
against the accuracy of a much higher $n$ value for some known thrust controls, such
|
||||
as a simple spiral orbit trajectory. This value of 20 tends to perform well and
|
||||
provide reasonable accuracy, without producing too many variables for the NLP
|
||||
optimizer to control for (since the impulsive thrust at the center of each of the
|
||||
sub-trajectories is a control variable). This leaves some room for future
|
||||
improvements, as will be discussed in Section~\ref{improvement_section}.
|
||||
|
||||
The bounds for the launch date are provided by the user in the form of a launch
|
||||
window, so the initial launch date is just chosen as a standard random value from a
|
||||
uniform distribution within those bounds.
|
||||
|
||||
A unit launch direction is then also chosen as a 3-length vector of uniform random
|
||||
numbers, then normalized. This unit vector is then multiplied by a uniform random
|
||||
number between 0 and the square root of the maximum launch $C_3$ specified by the
|
||||
user to generate an initial $\vec{v_\infty}$ vector at launch.
|
||||
|
||||
Next, the times of flight of each phase of the mission is then decided. Since launch
|
||||
date has already been selected, the maximum time of flight can be calculated by
|
||||
subtracting the launch date from the latest arrival date provided by the mission
|
||||
designer. Then, each leg is chosen from a uniform distribution with bounds currently
|
||||
set to a minimum flight time of 30 days and a maximum of 70\% of the maximum time of
|
||||
flight. These leg flight times are then iteratively re-generated until the total
|
||||
time of flight (represented by the sum of the leg flight times) is less than the
|
||||
maximum time of flight. This allows for a lot of flexibility in the leg flight
|
||||
times, but does tend toward more often producing longer missions, particularly for
|
||||
missions with more flybys.
|
||||
|
||||
Then, the internal components for each phase are generated. It is at this step, that
|
||||
the mission guess generator splits the outputs into two separate outputs. The first
|
||||
is meant to be truly random, as is generally used as input for a monotonic basin
|
||||
hopping algorithm. The second utilizes a Lambert's solver to determine the
|
||||
appropriate hyperbolic velocities (both in and out) at each flyby to generate a
|
||||
natural trajectory arc. For this Lambert's case, the mission guess is simply seeded
|
||||
with zero thrust controls and outputted to the monotonic basin hopper. The intention
|
||||
here is that if the time of flights are randomly chosen so as to produce a
|
||||
trajectory that is possible with a control in the vicinity of a natural trajectory,
|
||||
we want to be sure to find that trajectory. More detail on how this is handled is
|
||||
available in Section~\ref{mbh_subsection}.
|
||||
|
||||
However, for the truly random mission guess, there are still the $v_\infty$ values
|
||||
and the initial thrust guesses to generate. For each of the phases, the incoming
|
||||
excess hyperbolic velocity is calculated in much the same way that the launch
|
||||
velocity was calculated. However, instead of multiplying the randomly generate unit
|
||||
direction vector by a random number between 0 and the square root of the maximum
|
||||
launch $C_3$, bounds of 0 and 10 kilometers per second are used instead, to provide
|
||||
realistic flyby values.
|
||||
|
||||
The outgoing excess hyperbolic velocity at infinity is then calculated by again
|
||||
choosing a uniform random unit direction vector, then by multiplying this value by
|
||||
the magnitude of the incoming $v_{\infty}$ since this is a constraint of a
|
||||
non-powered flyby.
|
||||
|
||||
From these two velocity vectors the turning angle, and thus the periapsis of the
|
||||
flyby, can then be calculated by the following equations:
|
||||
|
||||
\begin{align}
|
||||
\delta &= \arccos \left( \frac{\vec{v}_{\infty,in} \cdot
|
||||
\vec{v}_{\infty,out}}{|v_{\infty,in}| \cdot {|v_{\infty,out}}|} \right) \\
|
||||
r_p &= \frac{\mu}{\vec{v}_{\infty,in} \cdot \vec{v}_{\infty,out}} \cdot \left(
|
||||
\frac{1}{\sin(\delta/2)} - 1 \right)
|
||||
\end{align}
|
||||
|
||||
If this radius of periapse is then found to be less than the minimum safe radius
|
||||
(currently set to the radius of the planet plus 100 kilometers), then the process is
|
||||
repeated with new random flyby velocities until a valid seed flyby is found. These
|
||||
checks are also performed each time a mission is perturbed or generated by the nlp
|
||||
solver.
|
||||
|
||||
The final requirement then, is the thrust controls, which are actually quite simple.
|
||||
Since the thrust is defined as a 3-vector of values between -1 and 1 representing
|
||||
some percentage of the full thrust producible by the spacecraft thrusters in that
|
||||
direction, the initial thrust controls can then be generated as a $20 \times 3$
|
||||
matrix of uniform random numbers within that bound.
|
||||
|
||||
\subsection{Monotonic Basin Hopping}\label{mbh_subsection}
|
||||
Outline the MBH algorithm, going into detail at each step. Mention the long-tailed PDF being
|
||||
used and go into quite a bit of detail. Englander's paper on the MBH algorithm specifically
|
||||
should be a good guide. Mention validation.
|
||||
@@ -798,7 +902,7 @@
|
||||
Talk a bit about why this work is valuable. Missions that could have benefited, missions that
|
||||
this enables, etc.
|
||||
|
||||
\section{Recommendations for Future Work}
|
||||
\section{Recommendations for Future Work}\label{improvement_section}
|
||||
Recommend future work, obviously. There are a \emph{ton} of opportunities for improvement
|
||||
including parallelization, cluster computing, etc.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user