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

Evolutionary Neuro-Controller for the MIT Spheres (perception-action defined in the body frame) More...

#include <spheres_q.h>

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

Public Member Functions

 spheres_q (int n_evaluations=10, int n_hidden=10, double ode_prec=1E-3, unsigned int seed=0)
 Constructor. More...
 
 spheres_q (const spheres_q &)
 Copy Constructor. More...
 
 ~spheres_q ()
 Destructor. More...
 
std::vector< std::vector< double > > post_evaluate (const decision_vector &x, int N=25000, unsigned int seed=0) const
 Post evaluation of the neural controller. More...
 
std::vector< std::vector< double > > simulate (const decision_vector &x, const std::vector< double > &ic, int N) const
 Performs one "detailed" simulation. More...
 
base_ptr clone () const
 Clone method.
 
- Public Member Functions inherited from pagmo::problem::base_stochastic
 base_stochastic (int, unsigned int=0u)
 Constructor from global dimension and random seed. More...
 
 base_stochastic (int, int, int, int, int, const double &, unsigned int)
 Constructor from global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More...
 
 base_stochastic (int, int, int, int, int, const std::vector< double > &, unsigned int)
 Constructor from global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance vector. More...
 
unsigned int get_seed () const
 Gets the pseudo random generator seed. More...
 
void set_seed (unsigned int) const
 Sets the pseudo random generator seed. 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...
 
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...
 
virtual std::string get_name () const
 Get problem's name. 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
 Objective function implementation. 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.
 
- Protected Attributes inherited from pagmo::problem::base_stochastic
rng_double m_drng
 Random number generator for double-precision floating point values.
 
rng_uint32 m_urng
 Random number generator for unsigned integer values.
 
unsigned int m_seed
 Seed of the random number generator.
 

Detailed Description

Evolutionary Neuro-Controller for the MIT Spheres (perception-action defined in the body frame)

spheres.jpg
The MIT spheres test-bed on board of the ISS.

This problem (a stochastic optimization problem) aims at 'evolving' an artificial neural network able to steer the positions of three satellites representing the SPHERES MIT test-bed on-board of the ISS. It requies GSL libraries and thus it is compiled only if that option is activated when compiling pagmo.

The objective function is the average over multiple runs of the following fitness

\[ F = |L^2 - r_{12}^2| + |L^2 - r_{13}^2| + |L^2 - r_{23}^2| + (|v_1^2| + |v_2^2| + |v_3^2|) / 2 \]

rewarding neurocontrollers that drive the spheres towards a triangular configuration in space with zero absolute velocity.

NOTE: the dynamical model of the spheres is here that of six-degrees of freedom bodies. With respect to pagmo::problem::spheres, this requires the intorduction of quaternion dynamics, hence the name spheres_q (q is the classical letter to indicate a quaternion)

Author
Dario Izzo (dario.nosp@m..izz.nosp@m.o@esa.nosp@m..int)

Definition at line 66 of file spheres_q.h.

Constructor & Destructor Documentation

pagmo::problem::spheres_q::spheres_q ( int  n_evaluations = 10,
int  n_hidden = 10,
double  ode_prec = 1E-3,
unsigned int  seed = 0 
)

Constructor.

Initializes the Sphere simulator, the neural net and everything else!!!

Parameters
[in]n_evaluationsNumber of initial conditions each neural network fitness is evaluated upon
[in]n_hiddennumber of hidden neurons in the neural net
[in]ode_precprecision requested to adapt the ode-solver step size
[in]seedseed used to produce all random initial conditions

Definition at line 126 of file spheres_q.cpp.

pagmo::problem::spheres_q::spheres_q ( const spheres_q other)

Copy Constructor.

Necessary to properly handle the gsl variables (pointers!!!)

Definition at line 141 of file spheres_q.cpp.

pagmo::problem::spheres_q::~spheres_q ( )

Destructor.

Necessary to properly clear memory allocated by gsl routines

Definition at line 153 of file spheres_q.cpp.

Member Function Documentation

void pagmo::problem::spheres_q::objfun_impl ( fitness_vector f,
const decision_vector x 
) const
protectedvirtual

Objective function implementation.

Takes a pagmo::decision_vector x as input and writes its pagmo::fitness_vector to f. This function is not to be called directly, it is invoked by objfun() after a series of safety checks is performed on x and f.

Parameters
[out]ffitness vector into which x's fitness will be written.
[in]xdecision vector whose fitness will be calculated.

Implements pagmo::problem::base.

Definition at line 312 of file spheres_q.cpp.

std::vector< std::vector< double > > pagmo::problem::spheres_q::post_evaluate ( const decision_vector x,
int  N = 25000,
unsigned int  seed = 0 
) const

Post evaluation of the neural controller.

It tests a given neural controller over a large set of initial conditions (different from those the controller's fitness was actually evaluated upon during evolution)

Parameters
[in]xchromosome encoding the neural network
[in]Nnumber of initial conditions we want it to be tested against
[in]seedseed used to produce all random initial conditions
Returns
A vector containing, for each simulation, a vector of [ic, fitness] sorted by fitness

Definition at line 363 of file spheres_q.cpp.

std::vector< std::vector< double > > pagmo::problem::spheres_q::simulate ( const decision_vector x,
const std::vector< double > &  ic,
int  N 
) const

Performs one "detailed" simulation.

One single run of the ode solver is made, maintaining the states along the simulation ....)

Parameters
[in]xchromosome encoding the neural network
[in]icinitial condition for the simulation
[in]Nnumber of points to retain along the simulation (plus the ic, of course)
Returns
A vector containing, for each time, a vector of [t, states]

Definition at line 417 of file spheres_q.cpp.


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