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

The TSP - Debris Selection Problem. More...

#include <tsp_ds.h>

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

Public Member Functions

 tsp_ds (const std::vector< kep_toolbox::planet::planet_ptr > &planets={kep_toolbox::planet::jpl_lp("venus").clone(), kep_toolbox::planet::jpl_lp("earth").clone(), kep_toolbox::planet::jpl_lp("mars").clone()}, const std::vector< double > &values={1., 1., 1.}, const double max_DV=30000, const std::vector< double > &epochs={1200, 1550, 1940}, const base_tsp::encoding_type &encoding=CITIES)
 Constructor. More...
 
base_ptr clone () const
 Copy constructor for polymorphic objects. More...
 
void find_subsequence (const decision_vector &, double &, double &, decision_vector::size_type &, decision_vector::size_type &, const bool=false) const
 Given an hamiltonian path finds the best subtour. More...
 
Getters
const std::vector< kep_toolbox::planet::planet_ptr > & get_planets () const
 Getter for m_planets. More...
 
const std::vector< double > & get_values () const
 Getter for m_values. More...
 
double get_max_DV () const
 Getter for m_max_DV. More...
 
const decision_vectorget_epochs () const
 Getter for m_times. More...
 
Implementation of virtual methods
std::string get_name () const
 Getter for m_eph_el. More...
 
std::string human_readable_extra () const
 Extra human readable info for the problem. More...
 
double distance (decision_vector::size_type, decision_vector::size_type) const
 Computation of the phaseless distance between two planets. More...
 
- Public Member Functions inherited from pagmo::problem::base_tsp
 base_tsp (int n_cities, int nc, int nic, encoding_type=CITIES)
 Constructor from dimensins and encoding. More...
 
encoding_type get_encoding () const
 Getter for m_encoding. More...
 
decision_vector::size_type get_n_cities () const
 Getter for m_n_cities. More...
 
pagmo::decision_vector full2cities (const pagmo::decision_vector &) const
 From FULL to CITIES encoding. More...
 
pagmo::decision_vector cities2full (const pagmo::decision_vector &) const
 From CITIES to FULL encoding. More...
 
pagmo::decision_vector randomkeys2cities (const pagmo::decision_vector &) const
 From RANDOMKEYS to CITIES encoding. More...
 
pagmo::decision_vector cities2randomkeys (const pagmo::decision_vector &, const pagmo::decision_vector &) const
 From CITIES to RANDOMKEYS encoding. 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...
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Public Types inherited from pagmo::problem::base_tsp
enum  encoding_type { RANDOMKEYS = 0, FULL = 1, CITIES = 2 }
 Mechanism used to encode the sequence of vertices to be visited. More...
 
- 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.
 
- 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 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...
 

Detailed Description

The TSP - Debris Selection Problem.

This is a class representing a new variant of the TSP where the cities are orbiting objects and must be visited with a predefined schedule.

The cost of transferring from one orbiting object to the next is computed by means of a three impulse approximation that uses the orbital element at epoch.

The distance virtual method is instead providing the same computations using the initial orbital elements (i.e. not propagating them)

The information about the schedule is contained in the data member m_epochs (MJD2000)

Author
Dario Izzo (dario.nosp@m..izz.nosp@m.o@gma.nosp@m.il.c.nosp@m.om)

Definition at line 57 of file tsp_ds.h.

Constructor & Destructor Documentation

pagmo::problem::tsp_ds::tsp_ds ( const std::vector< kep_toolbox::planet::planet_ptr > &  planets = {kep_toolbox::planet::jpl_lp("venus").clone(), kep_toolbox::planet::jpl_lp("earth").clone(), kep_toolbox::planet::jpl_lp("mars").clone()},
const std::vector< double > &  values = {1.,1.,1.},
const double  max_DV = 30000,
const std::vector< double > &  epochs = {1200, 1550, 1940},
const base_tsp::encoding_type encoding = CITIES 
)

Constructor.

Constructs a TSP - Debris Selection Problem

Parameters
[in]planetsan std::vector of kep_toolbox::planet_ptr containing the orbiting objects one wants to visit
[in]valuesa std::vector representing the value (score) of a visit (is the same order as planets)
[in]max_DVthe maximum DV available on board the spacecraft (corresponding to max_path_length parameter in the problem::tsp_cs problem)
[in]timesan std::vector of doubles containing [t0,T1,T2,...] the starting mission epoch and the time of flights between orbiting objects
[in]encodinga pagmo::problem::tsp::encoding representing the chosen encoding

Definition at line 50 of file tsp_ds.cpp.

Member Function Documentation

base_ptr pagmo::problem::tsp_ds::clone ( ) const
virtual

Copy constructor for polymorphic objects.

Clone method.

Implements pagmo::problem::base.

Definition at line 84 of file tsp_ds.cpp.

double pagmo::problem::tsp_ds::distance ( decision_vector::size_type  i,
decision_vector::size_type  j 
) const
virtual

Computation of the phaseless distance between two planets.

[in] i index of the first orbiting object [in] j index of the second orbiting object

Returns
the distance between m_planets[i] and m_planets[j]

Careful here what epoch? The default is 0 mjd2000, but the debris will be decayed by then and an exception may occur.

Implements pagmo::problem::base_tsp.

Definition at line 318 of file tsp_ds.cpp.

void pagmo::problem::tsp_ds::find_subsequence ( const decision_vector tour,
double &  retval_p,
double &  retval_l,
decision_vector::size_type &  retval_it_l,
decision_vector::size_type &  retval_it_r,
const bool  static_computations = false 
) const

Given an hamiltonian path finds the best subtour.

Finds, in a hamiltonian path, the best subsequence satisfying the max_DV constraint.

Finds, in a hamiltonian path, the best subsequence satisfying the max_DV constraint If the input planet sequence does not represent an Hamiltonian path, (i.e. its an unfeasible chromosome) the algorithm behaviour is undefined

Parameters
[in]tourthe hamiltonian path encoded with a CITIES encoding (i.e. the list of cities ids)
[out]retval_pthe total cumulative value of the subpath
[out]retval_lthe total saved length of the Hamiltonian path
[out]retval_it_lthe id of the city where the subpath starts
[out]retval_it_rthe id of the city where the subpath ends
Exceptions
value_errorif the input tour length is not equal to the city number

Definition at line 134 of file tsp_ds.cpp.

const decision_vector & pagmo::problem::tsp_ds::get_epochs ( ) const

Getter for m_times.

Returns
const reference to m_times

Definition at line 491 of file tsp_ds.cpp.

double pagmo::problem::tsp_ds::get_max_DV ( ) const

Getter for m_max_DV.

Returns
m_max_DV

Definition at line 472 of file tsp_ds.cpp.

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

Getter for m_eph_el.

Returns
const reference to m_eph_elReturns the problem name

Reimplemented from pagmo::problem::base.

Definition at line 506 of file tsp_ds.cpp.

const std::vector< kep_toolbox::planet::planet_ptr > & pagmo::problem::tsp_ds::get_planets ( ) const

Getter for m_planets.

Returns
const reference to m_planets

Definition at line 463 of file tsp_ds.cpp.

const std::vector< double > & pagmo::problem::tsp_ds::get_values ( ) const

Getter for m_values.

Returns
const reference to m_values

Definition at line 482 of file tsp_ds.cpp.

std::string pagmo::problem::tsp_ds::human_readable_extra ( ) const
virtual

Extra human readable info for the problem.

Returns
a std::string containing a list of vertices and edges

Reimplemented from pagmo::problem::base.

Definition at line 515 of file tsp_ds.cpp.


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