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}