From 472662fb601cd951f366b7e124975a6e764133f1 Mon Sep 17 00:00:00 2001 From: Connor Date: Sat, 19 Feb 2022 13:37:10 -0700 Subject: [PATCH] Finished section 5 draft finally --- LaTeX/thesis.bib | 8 +++++ LaTeX/thesis.tex | 86 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 90 insertions(+), 4 deletions(-) diff --git a/LaTeX/thesis.bib b/LaTeX/thesis.bib index 38be63d..802bf63 100644 --- a/LaTeX/thesis.bib +++ b/LaTeX/thesis.bib @@ -24,3 +24,11 @@ year = {2016}, url = {https://arxiv.org/abs/1607.07892} } + +@inproceedings{englander2014tuning, + title={Tuning monotonic basin hopping: improving the efficiency of stochastic search as applied to low-thrust trajectory optimization}, + author={Englander, Jacob A and Englander, Arnold C}, + booktitle={International Symposium on Space Flight Dynamics 2014}, + number={GSFC-E-DAA-TN14154}, + year={2014} +} diff --git a/LaTeX/thesis.tex b/LaTeX/thesis.tex index 297a44f..a3843f4 100644 --- a/LaTeX/thesis.tex +++ b/LaTeX/thesis.tex @@ -784,7 +784,7 @@ \label{mbh_flow} \end{figure} - \subsection{Random Mission Generation} + \subsection{Random Mission Generation}\label{random_gen_section} 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 @@ -872,9 +872,87 @@ 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. + + Now that a generator has been developed for mission guesses, we can build the + monotonic basin hopping algorithm. Since the implementation of the MBH algorithm + used in this paper differs from the standard implementation, the standard version + won't be described here. Instead, the variation used in this paper, with some + performance improvements, will be considered. + + The aim of a monotonic basin hopping algorithm is to provide an efficient method for + completely traversing a large search space and providing many seed values within the + space for an ''inner loop`` solver or optimizer. These solutions are then perturbed + slightly, in order to provide higher fidelity searching in the space near valid + solutions in order to fully explore the vicinity of discovered local minima. This + makes it an excellent algorithm for problems with a large search space, including + several clusters of local minima, such as this application. + + The algorithm contains two loops, the size of each of which can be independently + modified (generally by specifying a ''patience value``, or number of loops to + perform, for each) to account for trade-offs between accuracy and performance depending on + mission needs and the unique qualities of a certain search space. + + The first loop, the ''search loop``, first calls the random mission generator. This + 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 + 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. + + The drill loop, then, is used for this purpose. For the first step of the drill + loop, the current solution is saved as the ''basin solution``. If it's better than + the current best, it also replaces the current best solution. Then, until the + stopping condition has been met (generally when the ''drill counter`` has reached + the ''drill patience`` value) the current solution is perturbed slightly by adding + or subtracting a small random value to the components of the mission. + + The performance of this perturbation in terms of more quickly converging upon the + true minimum of that particular basin, as described in detail by + Englander\cite{englander2014tuning}, is highly dependent on the distribution + function used for producing these random perturbations. While the intuitive choice + of a simple Gaussian distribution would make sense to use, it has been found that a + long-tailed distribution, such as a Cauchy distribution or a Pareto distribution is + more robust in terms of well chose boundary conditions and initial seed solutions as + well as more performant in time required to converge upon the minimum for that basin. + + Because of this, the perturbation used in this implementation follows a + bi-directional, long-tailed Pareto distribution generated by the following + probability density function: + + \begin{equation} + 1 + + \left[ \frac{s}{\epsilon} \right] \cdot + \left[ \frac{\alpha - 1}{\frac{\epsilon}{\epsilon + r}^{-\alpha}} \right] + \end{equation} + + Where $s$ is a random array of signs (either plus one or minus one) with dimension + equal to the perturbed variable and bounds of -1 and 1, $r$ is a uniformly + distributed random array with dimension equal to the perturbed variable and bounds + of 0 and 1, $\epsilon$ is a small value (nominally set to $1e-10$), and $\alpha$ is + a tuning parameter to determine the size of the tails and width of the distribution + set to $1.01$, but easily tunable. + + The perturbation function, then steps through each parameter of the mission, + generating a new mission guess with the parameters modified by the above Pareto + distribution. After this perturbation, the NLP solver is then called again to find + a valid solution in the vicinity of this new guess. If the solution is better than + the current basin solution, it replaces that value and the drill counter is reset to + zero. If it is better than the current total best, it replaces that value as well. + Otherwise, the drill counter increments and the process is repeated. Therefore, the + drill patience allows the mission designer to determine a maximum number of + iterations to perform without any improvements in a row before ending a given drill + loop. This process can be repeated essentially ''search patience`` number of times + in order to fully traverse all basins. \chapter{Results Analysis} \label{results} Simply highlight that the algorithm was tested on a sample trajectory to Saturn.