PaGMO  1.1.5
Public Member Functions | Protected Member Functions | Friends
pagmo::problem::mga_1dsm_tof Class Reference

A generic MGA-1DSM Problem (tof encoding) More...

#include <mga_1dsm_tof.h>

Inheritance diagram for pagmo::problem::mga_1dsm_tof:
Inheritance graph
[legend]

Public Member Functions

 mga_1dsm_tof (const std::vector< kep_toolbox::planet::planet_ptr >=construct_default_sequence(), const kep_toolbox::epoch t0_l=kep_toolbox::epoch(0), const kep_toolbox::epoch t0_r=kep_toolbox::epoch(1000), const std::vector< boost::array< double, 2 > >=construct_default_tof(), const double vinf_l=0.5, const double vinf_u=2.5, const bool mo=false, const bool add_vinf_dep=false, const bool add_vinf_arr=true)
 Constructor. More...
 
 mga_1dsm_tof (const mga_1dsm_tof &)
 Copy Constructor. Performs a deep copy.
 
base_ptr clone () const
 Clone method.
 
std::string get_name () const
 Get problem's name. More...
 
std::string pretty (const std::vector< double > &x, bool extended_output=false) const
 Outputs a stream with the trajectory data. More...
 
void set_tof (const std::vector< boost::array< double, 2 > >)
 Sets the mission time of flight. More...
 
void set_launch_window (const kep_toolbox::epoch &, const kep_toolbox::epoch &)
 Sets the mission launch window. More...
 
void set_vinf (const double)
 Sets the launch hyperbolic velocity. More...
 
std::vector< kep_toolbox::planet::planet_ptr > get_sequence () const
 Gets the planetary sequence defining the interplanetary mga-1dsm mission. More...
 
std::vector< std::vector< double > > get_tof () const
 Gets the sequence of time of flights for the mga-1dsm mission. More...
 
- Public Member Functions inherited from pagmo::problem::base
 base (int, int=0, int=1, int=0, int=0, const double &=0)
 Constructor from global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
 base (int, int, int, int, int, const std::vector< double > &)
 Constructor from global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
 base (const double &, const double &, int, int=0, int=1, int=0, int=0, const double &=0)
 Constructor from values for lower and upper bounds, global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
 base (const decision_vector &, const decision_vector &, int=0, int=1, int=0, int=0, const double &=0)
 Constructor from upper/lower bounds, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
template<std::size_t N>
 base (const double(&v1)[N], const double(&v2)[N], int ni=0, int nf=1, int nc=0, int nic=0, const double &c_tol=0)
 Constructor from raw arrays, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
template<class Iterator1 , class Iterator2 >
 base (Iterator1 start1, Iterator1 end1, Iterator2 start2, Iterator2 end2, int ni=0, int nf=1, int nc=0, int nic=0, const double &c_tol=0)
 Constructor from iterators, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
virtual ~base ()
 Trivial destructor. More...
 
std::string human_readable () const
 Return human readable representation of the problem. More...
 
bool operator== (const base &) const
 Equality operator. More...
 
bool operator!= (const base &) const
 Inequality operator. More...
 
bool is_compatible (const base &) const
 Compatibility operator. More...
 
bool compare_x (const decision_vector &, const decision_vector &) const
 Compare decision vectors. More...
 
bool verify_x (const decision_vector &) const
 Verify compatibility of decision vector x with problem. More...
 
bool compare_fc (const fitness_vector &, const constraint_vector &, const fitness_vector &, const constraint_vector &) const
 Simultaneous fitness-constraint comparison. More...
 
virtual void pre_evolution (population &) const
 Pre-evolution hook. More...
 
virtual void post_evolution (population &) const
 Post-evolution hook. More...
 
virtual void set_sparsity (int &lenG, std::vector< int > &iGfun, std::vector< int > &jGvar) const
 Sets the sparsity pattern of the gradient. More...
 
const decision_vectorget_lb () const
 Lower bounds getter. More...
 
const decision_vectorget_ub () const
 Upper bounds getter. More...
 
void set_bounds (const decision_vector &, const decision_vector &)
 Bounds setter from pagmo::decision_vector. More...
 
template<class Iterator1 , class Iterator2 >
void set_bounds (Iterator1 start1, Iterator1 end1, Iterator2 start2, Iterator2 end2)
 Bounds setter from iterators. More...
 
template<std::size_t N>
void set_bounds (const double(&v1)[N], const double(&v2)[N])
 Bounds setter from raw arrays. More...
 
void set_bounds (const double &, const double &)
 Set bounds to specified values. More...
 
void set_bounds (int, const double &, const double &)
 Set bounds to specified values. More...
 
void set_lb (const decision_vector &)
 Set lower bounds from pagmo::decision_vector. More...
 
void set_lb (int, const double &)
 Set specific lower bound to value. More...
 
void set_lb (const double &)
 Set all lower bounds to value. More...
 
template<class Iterator >
void set_lb (Iterator start, Iterator end)
 Lower bounds setter from iterators. More...
 
template<std::size_t N>
void set_lb (const double(&v)[N])
 Lower bounds setter from raw array. More...
 
void set_ub (const decision_vector &)
 Set upper bounds from pagmo::decision_vector. More...
 
void set_ub (int, const double &)
 Set specific upper bound to value. More...
 
void set_ub (const double &)
 Set all upper bounds to value. More...
 
template<class Iterator >
void set_ub (Iterator start, Iterator end)
 Upper bounds setter from iterators. More...
 
template<std::size_t N>
void set_ub (const double(&v)[N])
 Upper bounds setter from raw array. More...
 
unsigned int get_fevals () const
 Return number of function evaluations. More...
 
unsigned int get_cevals () const
 Return number of constraints function evaluations. More...
 
size_type get_dimension () const
 Return global dimension. More...
 
size_type get_i_dimension () const
 Return integer dimension. More...
 
f_size_type get_f_dimension () const
 Return fitness dimension. More...
 
c_size_type get_c_dimension () const
 Return global constraints dimension. More...
 
c_size_type get_ic_dimension () const
 Return inequality constraints dimension. More...
 
const std::vector< double > & get_c_tol () const
 Return constraints tolerance. More...
 
double get_diameter () const
 Get the diameter of the problem. More...
 
constraint_vector compute_constraints (const decision_vector &) const
 Compute constraints and return constraint vector. More...
 
void compute_constraints (constraint_vector &, const decision_vector &) const
 Compute constraints and write them into contraint vector. More...
 
bool compare_constraints (const constraint_vector &, const constraint_vector &) const
 Compare constraint vectors. More...
 
bool test_constraint (const constraint_vector &, const c_size_type &) const
 Test i-th constraint of c (using tolerance information). More...
 
bool feasibility_x (const decision_vector &) const
 Test feasibility of decision vector. More...
 
bool feasibility_c (const constraint_vector &) const
 Test feasibility of constraint vector. More...
 
fitness_vector objfun (const decision_vector &) const
 Return fitness of pagmo::decision_vector. More...
 
void objfun (fitness_vector &, const decision_vector &) const
 Write fitness of pagmo::decision_vector into pagmo::fitness_vector. More...
 
bool compare_fitness (const fitness_vector &, const fitness_vector &) const
 Compare fitness vectors. More...
 
void reset_caches () const
 Reset internal caches. More...
 
const std::vector< constraint_vector > & get_best_c (void) const
 Get the best known constraint vector. More...
 
const std::vector< decision_vector > & get_best_x (void) const
 Get the best known decision vector. More...
 
const std::vector< fitness_vector > & get_best_f (void) const
 Get the best known fitness vector. More...
 
void set_best_x (const std::vector< decision_vector > &)
 Sets the best known decision vectors. More...
 

Protected Member Functions

void objfun_impl (fitness_vector &, const decision_vector &) const
 Implementation of the objective function.
 
std::string human_readable_extra () const
 Extra human readable info for the problem. More...
 
- Protected Member Functions inherited from pagmo::problem::base
virtual bool equality_operator_extra (const base &) const
 Extra requirements for equality. More...
 
virtual bool compare_fc_impl (const fitness_vector &, const constraint_vector &, const fitness_vector &, const constraint_vector &) const
 Implementation of simultaneous fitness-constraint comparison. More...
 
void estimate_sparsity (const decision_vector &, int &lenG, std::vector< int > &iGfun, std::vector< int > &jGvar) const
 Heuristics to estimate the sparsity pattern of the problem. More...
 
void estimate_sparsity (int &lenG, std::vector< int > &iGfun, std::vector< int > &jGvar) const
 Heuristics to estimate the sparsity pattern of the problem. More...
 
virtual void compute_constraints_impl (constraint_vector &, const decision_vector &) const
 Implementation of constraint computation. More...
 
virtual bool compare_constraints_impl (const constraint_vector &, const constraint_vector &) const
 Implementation of constraint vector comparison. More...
 
virtual bool compare_fitness_impl (const fitness_vector &, const fitness_vector &) const
 Implementation of fitness vectors comparison. More...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Public Types inherited from pagmo::problem::base
typedef decision_vector::size_type size_type
 Problem's size type: the same as pagmo::decision_vector's size type.
 
typedef fitness_vector::size_type f_size_type
 Fitness' size type: the same as pagmo::fitness_vector's size type.
 
typedef constraint_vector::size_type c_size_type
 Constraints' size type: the same as pagmo::constraint_vector's size type.
 
- Static Public Attributes inherited from pagmo::problem::base
static const std::size_t cache_capacity = 5
 Capacity of the internal caches.
 

Detailed Description

A generic MGA-1DSM Problem (tof encoding)

This class defines the global optimization problem (box-bounded, continuous) of an interplanetary trajectory modelled as a Multiple Gravity Assist mission allowing one only Deep Space Manouvre per leg.

mga_1dsm.gif
Visualization of an inetrplanetary trajectory to jupiter as encoded by the mga_1dsm

The decision vector is $ [t_0] + [u,v,V_{\infty},\eta_1,T_1] + [\beta, r_p/r_P, \eta_2,T_2]$ ..... in the units: [mjd2000] + [nd,nd,km/s,nd,days] + [rad,nd,nd,days] + .... where $ \mathbf V_{\infty} = V_{\infty}*(\cos(\theta)\cos(\phi)\mathbf i+\cos(\theta)\sin(\phi)\mathbf j+\sin(\phi)\mathbf k) $ and $ \theta = 2\pi u, \phi = acos(2v-1)-\pi/2 $

Each leg time-of-flight is directly encoded (as T1, T2, ...) in contrast to mga_1dsm_alpha. Thus you have to define the bounds on the time of flights for each leg separately upon construction.

NOTE: The resulting problem is box-bounded (unconstrained). The resulting trajectory is time-bounded.

See also
Izzo: "Global Optimization and Space Pruning for Spacecraft Trajectory Design, Spacecraft Trajectory Optimization, Conway, B. (Eds.), Cambridge University Press, pp.178-199, 2010)
Author
Dario Izzo (dario.nosp@m..izz.nosp@m.o@esa.nosp@m..int)
Marcus Maertens (mmarc.nosp@m.usx@.nosp@m.gmail.nosp@m..com)

Definition at line 63 of file mga_1dsm_tof.h.

Constructor & Destructor Documentation

pagmo::problem::mga_1dsm_tof::mga_1dsm_tof ( const std::vector< kep_toolbox::planet::planet_ptr >  seq = construct_default_sequence(),
const kep_toolbox::epoch  t0_l = kep_toolbox::epoch(0),
const kep_toolbox::epoch  t0_u = kep_toolbox::epoch(1000),
const std::vector< boost::array< double, 2 > >  tof = construct_default_tof(),
const double  vinf_l = 0.5,
const double  vinf_u = 2.5,
const bool  mo = false,
const bool  add_vinf_dep = false,
const bool  add_vinf_arr = true 
)

Constructor.

Constructs a global optimization problem (box-bounded, continuous) representing an interplanetary trajectory modelled as a Multiple Gravity Assist trajectory that allows one only Deep Space Manouvre between each leg.

Parameters
[in]seqstd::vector of kep_toolbox::planet_ptr containing the encounter sequence for the trajectoty (including the initial planet)
[in]t0_lkep_toolbox::epoch representing the lower bound for the launch epoch
[in]t0_ukep_toolbox::epoch representing the upper bound for the launch epoch
[in]tofstd::vector of boost::array<double,2>, containing a list of intervals for the time of flight
[in]vinf_lminimum launch hyperbolic velocity allowed (in km/s)
[in]vinf_umaximum launch hyperbolic velocity allowed (in km/s)
[in]mowhen true defines the problem as a multi-objective problem, returning total DV and time of flight
[in]add_vinf_depwhen true the objective functions contains also the contribution of the launch hypebolic velocity
[in]add_vinf_arrwhen true the objective functions contains also the contribution of the arrival hypebolic velocity
Exceptions
value_errorif the planets in seq do not all have the same central body gravitational constant and if the tof dimension is not compatible with the sequence length

Definition at line 58 of file mga_1dsm_tof.cpp.

Member Function Documentation

std::string pagmo::problem::mga_1dsm_tof::get_name ( ) const
virtual

Get problem's name.

Default implementation will return the problem's mangled C++ name.

Returns
name of the problem.

Reimplemented from pagmo::problem::base.

Definition at line 329 of file mga_1dsm_tof.cpp.

std::vector< kep_toolbox::planet::planet_ptr > pagmo::problem::mga_1dsm_tof::get_sequence ( ) const

Gets the planetary sequence defining the interplanetary mga-1dsm mission.

Returns
An std::vector containing the kep_toolbox::planets

Definition at line 393 of file mga_1dsm_tof.cpp.

std::vector< std::vector< double > > pagmo::problem::mga_1dsm_tof::get_tof ( ) const

Gets the sequence of time of flights for the mga-1dsm mission.

Returns
An std::vector of std::vector of double containing the bounds on flight time for each leg

Definition at line 375 of file mga_1dsm_tof.cpp.

std::string pagmo::problem::mga_1dsm_tof::human_readable_extra ( ) const
protectedvirtual

Extra human readable info for the problem.

Will return a formatted string containing the values vector, the weights vectors and the max weight. It is concatenated with the base::problem human_readable

Reimplemented from pagmo::problem::base.

Definition at line 402 of file mga_1dsm_tof.cpp.

std::string pagmo::problem::mga_1dsm_tof::pretty ( const std::vector< double > &  x,
bool  extended_output = false 
) const

Outputs a stream with the trajectory data.

While the chromosome contains all necessary information to describe a trajectory, mission analysis often require a different set of data to evaluate its use. This method outputs a stream with information on the trajectory that is otherwise 'hidden' in the chromosome

Parameters
[in]xchromosome representing the trajectory in the optimization process
Returns
an std::string with launch dates, DV magnitues and other information on the trajectory

Definition at line 224 of file mga_1dsm_tof.cpp.

void pagmo::problem::mga_1dsm_tof::set_launch_window ( const kep_toolbox::epoch &  start,
const kep_toolbox::epoch &  end 
)

Sets the mission launch window.

This setter changes the problem bounds as to define the launch window

Parameters
[in]startstarting epoch of the launch window
[in]endfinal epoch of the launch window

Definition at line 357 of file mga_1dsm_tof.cpp.

void pagmo::problem::mga_1dsm_tof::set_tof ( const std::vector< boost::array< double, 2 > >  tof)

Sets the mission time of flight.

This setter changes the problem bounds as to define a minimum and a maximum allowed total time of flight

Parameters
[in]tofstd::vecotr

Definition at line 340 of file mga_1dsm_tof.cpp.

void pagmo::problem::mga_1dsm_tof::set_vinf ( const double  vinf)

Sets the launch hyperbolic velocity.

This setter changes the problem bounds as to define the maximum allowed launch hyperbolic velocity

Parameters
[in]vinfmaximum allowed hyperbolic velocity in km/sec

Definition at line 367 of file mga_1dsm_tof.cpp.


The documentation for this class was generated from the following files: