#include <gtoc1.hpp>
Public Member Functions | |
gtoc1 () | |
double | evaluate (const arma::vec &agent) const override |
Public Member Functions inherited from pass::problem | |
arma::vec | bounds_range () const noexcept |
arma::uword | dimension () const noexcept |
problem (const arma::uword dimension, const double lower_bound, const double upper_bound, const std::string &name) | |
problem (const arma::vec &lower_bounds, const arma::vec &upper_bounds, const std::string &name) | |
double | evaluate_normalised (const arma::vec &normalised_agent) const |
arma::mat | normalised_random_agents (const arma::uword count) const |
arma::mat | normalised_hammersley_agents (const arma::uword count) const |
arma::mat | initialise_normalised_agents (const arma::uword count) const |
Public Attributes | |
std::array< const celestial_body *, 7 > | sequence |
std::array< bool, 8 > | rev_flag |
asteroid | destination |
double | Isp |
double | mass |
double | DVlaunch |
Public Attributes inherited from pass::problem | |
const arma::vec | lower_bounds |
const arma::vec | upper_bounds |
const std::string | name |
Detailed Description
GTOC1
is an 8-dimensional optimization problem issued by the ESA: https://www.esa.int/gsp/ACT/projects/gtop/gtoc1.html The underlying goal is to alter the trajectory of an asteroid by hitting it with a spacecraft. To maximize the collision impact, the spacecraft performs multiple gravity assists (https://en.wikipedia.org/wiki/Gravity_assist). This code assumes a planet sequence has been defined, and evaluates the impulse gained from a whole maneuver if the spacecraft arrives at the nth planet at the point in time specified by the nth problem parameter.
Constructor & Destructor Documentation
◆ gtoc1()
pass::gtoc1::gtoc1 | ( | ) |
Sets the lower and upper bounds for the times to (3000, 10000) (14, 2000) (14, 2000) (14, 2000) (14, 2000) (100, 9000) (366, 9000) (300, 9000)
t0: start time (in MJD2000) t1-7: transfer time from planet to another planet (in days)
Member Function Documentation
◆ evaluate()
|
overridevirtual |
Evaluates this problem at agent
, which must match the dimensions of this problem.
Implements pass::problem.
Member Data Documentation
◆ destination
asteroid pass::gtoc1::destination |
The destination of this gravity assist; the final element in the flyby sequence. (First Vector) Data for the Asteroid 2001 TW229 (Second Double Value) Asteroid Epoche initialized with 53600.0 (Third Double Value) mu (standard gravitational parameter) initialized with 0.0 Further Info: http://www.esa.int/gsp/ACT/doc/MAD/ACT-MEM-MAD-GTOC1-The%20Problem_V4.pdf
◆ DVlaunch
double pass::gtoc1::DVlaunch |
Launch deviation of the spacecraft. Initialized to 2.5 km/sec.
◆ Isp
double pass::gtoc1::Isp |
Specific impulse of the spacecraft. Initialized to 2500 Sek.
◆ mass
double pass::gtoc1::mass |
Mass of the spacecraft. Initialized to 1500 Kg.
◆ rev_flag
std::array<bool, 8> pass::gtoc1::rev_flag |
Vector of flags for clockwise legs Tell if the planet is passed in a clockwise way or not 1 - clockwise 0 - counter clockwise
◆ sequence
std::array<const celestial_body *, 7> pass::gtoc1::sequence |
Fly-by sequence of planets. This sequence is 1 element smaller than the problem dimension because the last section always targets the asteroid
.
Is initialized to: earth, venus, earth, venus, earth, jupiter, saturn.
The documentation for this class was generated from the following files: