PaGMO
1.1.5
|
The TSP - Debris Selection Problem. More...
#include <tsp_ds.h>
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_vector & | get_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_vector & | get_lb () const |
Lower bounds getter. More... | |
const decision_vector & | get_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... | |
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)
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
[in] | planets | an std::vector of kep_toolbox::planet_ptr containing the orbiting objects one wants to visit |
[in] | values | a std::vector representing the value (score) of a visit (is the same order as planets) |
[in] | max_DV | the maximum DV available on board the spacecraft (corresponding to max_path_length parameter in the problem::tsp_cs problem) |
[in] | times | an std::vector of doubles containing [t0,T1,T2,...] the starting mission epoch and the time of flights between orbiting objects |
[in] | encoding | a pagmo::problem::tsp::encoding representing the chosen encoding |
Definition at line 50 of file tsp_ds.cpp.
|
virtual |
Copy constructor for polymorphic objects.
Clone method.
Implements pagmo::problem::base.
Definition at line 84 of file tsp_ds.cpp.
|
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
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
[in] | tour | the hamiltonian path encoded with a CITIES encoding (i.e. the list of cities ids) |
[out] | retval_p | the total cumulative value of the subpath |
[out] | retval_l | the total saved length of the Hamiltonian path |
[out] | retval_it_l | the id of the city where the subpath starts |
[out] | retval_it_r | the id of the city where the subpath ends |
value_error | if 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 |
double pagmo::problem::tsp_ds::get_max_DV | ( | ) | const |
|
virtual |
Getter for m_eph_el.
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.
Definition at line 463 of file tsp_ds.cpp.
const std::vector< double > & pagmo::problem::tsp_ds::get_values | ( | ) | const |
|
virtual |
Extra human readable info for the problem.
Reimplemented from pagmo::problem::base.
Definition at line 515 of file tsp_ds.cpp.