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}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user