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

TandEM problem. More...

#include <tandem.h>

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

Public Member Functions

 tandem (const int problemid=6, const double tof_=-1)
 Constructor. More...
 
base_ptr clone () const
 Clone method.
 
std::string pretty (const std::vector< double > &x) const
 Outputs a stream of the trajectory data. More...
 
std::string get_name () const
 Get problem's name. 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...
 
virtual std::string human_readable_extra () const
 Extra information in human readable format. 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...
 
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.
 
void set_sparsity (int &, std::vector< int > &, std::vector< int > &) const
 Implementation of the sparsity structure. 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

TandEM problem.

tandem.jpg
Encedalus orbiting around Saturn

TandEM primary goals are to understand the atmosphere, surface and interior, to determine the chemistry, and to derive constraints on the origin and evolution of Titan and of the saturnian system as a whole, with an emphasis on Enceladus.

TandEM had been proposed as an L-class candidate mission for the Cosmic Vision 2015-2025 programme in response to the Call for Proposals issued by ESA in March 2007, and has been one of the mission concepts selected by the SSAC in October 2007 for an Assessment study. The SSAC had decided that an Outer Planet mission should be one of the L-class mission candidates for the first slice of the Cosmic Vision plan, and recommended that both TandEM and Laplace (a mission to the Jupiter system) concepts should be studied initially, with a decision on which one to pursue to take place following a better definition of the mission's characteristics.

In early February 2009 ESA and NASA jointly announced that the Europa-Jupiter System Mission, or Laplace (see problem::laplace), would be the candidate for the first L mission.

We transcribe here TandEM interplanetary trajectory transfer problem as an MGA-DSM problem and we allow to instanciate 25 different types, depending on the fly-by sequence adopted. The mission data are taken from those used by a joint ESA/NASA working group that performed, together with industrial partners a preliminary trajectory design for the TandEM mission during the first months of 2008. Please refer to http://www.esa.int/gsp/ACT/inf/op/globopt/TandEM.htm to select the proper instance. A default choice is 6, which corrsponds to an EVEES fly-by sequence. The possibility of adding one additional constraint on the time-of-flight is given. If such a constraint is specified the components x[4]-x[7] are no longer time of flights but they represent the percentage of the remaining time of flight to be used in one leg. Thus the linear constraint on the time of flight is automatically transformed into a box constraint.

The problem is transcribed as an MGA-DSM problem allowing one chemical manouvre per trajectory leg. The objective function is defined as $ f = -\log(m_f)$ where $m_f$ is the final spacecraft mass. The problem is also part of the Global Trajectory Optimization database (GTOP)

tandem is a box constrained single objective, continuous optimization problem of dimension 18.

See also
http://www.esa.int/gsp/ACT/inf/op/globopt/TandEM.htm
Author
Dario Izzo (dario.nosp@m..izz.nosp@m.o@esa.nosp@m..int)

Definition at line 80 of file tandem.h.

Constructor & Destructor Documentation

pagmo::problem::tandem::tandem ( const int  probid = 6,
const double  tof_ = -1 
)

Constructor.

Instantiates one of the possible TandEM problems

Parameters
[in]probidThis is an integer number from 1 to 24 encoding the fly-by sequence to be used (default is EVEES). Check http://www.esa.int/gsp/ACT/inf/op/globopt/TandEM.htm for more information
[in]tof_(in years) This is a number setting the constraint on the total time of flight (10 from the GTOP database). If -1 (default) an unconstrained problem is instantiated

Definition at line 71 of file tandem.cpp.

Member Function Documentation

std::string pagmo::problem::tandem::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 256 of file tandem.cpp.

std::string pagmo::problem::tandem::pretty ( const std::vector< double > &  x) const

Outputs a stream of the trajectory data.

While the chromosome contains all necessary information to describe a trajectory, mission analysits often require a different set of data to understand a trajectory. 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 177 of file tandem.cpp.

void pagmo::problem::tandem::set_sparsity ( int &  lenG,
std::vector< int > &  iGfun,
std::vector< int > &  jGvar 
) const
protectedvirtual

Implementation of the sparsity structure.

This implementation does not make use of problem::base::estimate_sparsity as the numerical difficulties introduced by the objective function definition through a logarithm makes automated detection unreliable (e.g. also SNOPT algorithm fails). Clearly, as the problem is box constrained no sarsity is present.

Reimplemented from pagmo::problem::base.

Definition at line 244 of file tandem.cpp.


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