uc3m-aerospace / MOLTO-IT

Multi-Objective Low-Thrust Optimizer for Interplanetary Transfers
MIT License
33 stars 12 forks source link

MOLTO-IT

DOI

MOLTO-IT (Multi-Objective Low-Thrust Optimizer for Interplanetary Trajectories) is a fully automated Matlab tool for the preliminary design of low-thrust, multi-gravity assist trajectories. The software combines an outer loop that provides multi-objective optimization via a genetic algorithm (NSGA-II) with an inner loop that supplies gradient-based optimization (fmincon) of a shape-based low-thrust trajectory parameterization. It includes simplifications such as coplanar bodies and no enforced propulsion constraints along with the shape-based parameterization of the low-thrust arc.

MOLTO-IT is designed to work with minimal user oversight. Users only need to input a series of parameters, such as the spacecraft’s departure body, its final destination and some hardware characteristics (Launcher vehicle, mass, propulsion), as well as the range of launch dates, flight times and a list of available planets to flyby. The software tool then uses these data points to automatically compute the set of low-thrust trajectories, including the number, sequence and configuration of flybys that accomplish the mission most efficiently. Candidate trajectories are evaluated and compared in terms of total flight time and propellant mass consumed.

MOLTO-IT is easy to use and capable of designing a wide variety of missions on standard desktop computer.Computational times ranges from the order of minutes to a couple of hours, depending on the size of ther search spacee.

Goal

The purpose of MOLTO-IT is to provide a fast and robust mission design environment that allows the user to quickly and inexpensively perform trade studies of various mission configurations and conduct low-fidelity analysis.

Mathematical formulation

For a detailed mathematical description of the methodology, have a look at:

David Morante, Manuel Sanjurjo Rivo, and Manuel Soler. "Multi-Objective Low-Thrust Interplanetary Trajectory Optimization Based on Generalized Logarithmic Spirals", Journal of Guidance, Control, and Dynamics, Vol. 42, No. 3 (2019), pp. 476-490. https://doi.org/10.2514/1.G003702

Installation Guide

Installation requires simply that you download MOLTO-IT and add the base directory to your Matlab path.

Dependencies

A recent version of Matlab is needed to run the code (R2016a or newer). The Matlab Optimization Toolbox is required to use most of the functionality.

Download the Matlab interface of the Spice Toolkit for planets, comets and asteroids ephemerides calculations. Include the downloaded folders and subfolders in MOLTO-IT/spice.

Download apropriate ephemerides NAIF .bsp kernels. Include them in MOLTO-IT/spice/kernels

NOTE Required kernels for running the example scenarios are already included in this distribution.

Modify the function MOLTO-IT/spice/load_spice_kernels.m to load the new kernels.

Quick Usage Guide

In order to optimize a mission, the user needs to call the main function molto_it.m providing an input structure. Here you have an example:

% FLYBY MISSION TO JUPITER WITH UP TO 3 FLYBYS

        input.problem_name  = example;  % Problem name
        input.problem_type  = 'flyby';  % Type of mission: condition at arrival planet (flyby/rendezvous)
        input.planet_dep    = 'Earth';  % Departure planet using space nomenclature (e.g. 3==Earth)
        input.planet_arr    = '5';      % Arrival planet using space nomenclature (e.g. 5==Jupiter)
        input.vinf0_max     =  2;       % Hyperbolic excess velocity at departure planet (km/s)
        input.planet_fb     = [{'4'},{'3'},{'2'},{'4'},{'3'},{'2'}]; % List of available planets to flyby in spice nomenclature
        input.rfb_min       = 200;      % Minimum flyby altitude (km)
        input.n_fb          = [0,3];    % Minimum/Maximum number of possible flybys
        input.rev           = [0,0];    % Minimum/Maximum number of possible revolutions
        input.ToF           = [50  50  50  50; % Minimum/Maximum transfer time per leg (days)
            500 500 500 1000];
        input.Isp           = 3000;     % Seconds
        input.thrust        = 100;      % mN
        input.nthrusters    = 1;        % Number of thrusters
        input.mass          = 1000;     % Kg 
        input.power         = 5000;     % W
        input.Initial_Date  = [{'2029 Jan 01 00:00:00'},{'2030 Dec 31 00:00:00'}]; % Minimum/Maximum Launch date (Gregorian Date)
        input.init_file     = [];       % Init population File name (if not provided, random initial population)
        input.output_file   = [problem_name,'.txt']; % Solution population File name
        input.plot          = 0;        % Plotting option (recomended = 0, option =1 is under development)
        input.useParallel   = 'yes';    % yes/no for parallel execution of the genetic algorithm
        input.options       = [];       % Under development
        input.maxGen        = 200;      % Maximum number of generations
        input.popsize       = 200;      % Population Size

% RUN MOLTO-IT ALGORITHM
        molto_it(input)

NOTE: Ensure that all the folders and subfolders are in the matlab path.

The following window should pop-up, and the evolution process of the Pareto front can be visualized.

Pop-up window