#include <gtoc1.hpp>

Inheritance diagram for pass::gtoc1:
Collaboration diagram for pass::gtoc1:

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()

double pass::gtoc1::evaluate ( const arma::vec &  agent) const
overridevirtual

Evaluates this problem at agent, which must match the dimensions of this problem.

Implements pass::problem.

Here is the call graph for this function:

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:
  • /Users/romeo/Desktop/PASS/include/pass_bits/problem/space_mission/gtoc1.hpp
  • /Users/romeo/Desktop/PASS/src/problem/space_mission/gtoc1.cpp