GEGELATI
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
Selector::MapElites::CvtMapElitesArchive Class Reference

CVT Map Elites Archive class. More...

#include <cvtMapElitesArchive.h>

Inheritance diagram for Selector::MapElites::CvtMapElitesArchive:
Selector::MapElites::MapElitesArchive

Public Member Functions

 CvtMapElitesArchive (Mutator::RNG &rng, size_t nbCentroids, size_t nbDescriptors, double minValue, double maxValue, size_t nbIterationInit, size_t nbDotsInit, double a1, double b1, double a2, double b2)
 Constructor of the CVT Map Elites Archive.
 
double dist_squared (const std::vector< double > &a, const std::vector< double > &b)
 Calculate squared Euclidean distance between two points.
 
std::vector< double > add (const std::vector< double > &a, const std::vector< double > &b)
 Vector addition.
 
std::vector< double > scalar_mult (const std::vector< double > &a, double s)
 Scalar multiplication.
 
std::vector< double > average (const std::vector< std::vector< double > > &points)
 Compute the average of a set of points.
 
std::vector< double > random_point (Mutator::RNG &rng)
 Generate a random point within the descriptor bounds.
 
size_t nearest (const std::vector< double > &point, const std::vector< std::vector< double > > &centroids)
 Find the nearest centroid to a given point.
 
void initialize_cvt (Mutator::RNG &rng)
 Initialize the CVT centroids using Lloyd's algorithm.
 
size_t getIndexForDescriptor (const std::vector< double > &descriptors) const
 Get the index for given descriptors.
 
const std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > & getArchiveFromDescriptors (const std::vector< double > &descriptors) const override
 Get the archive content at given descriptors.
 
void setArchiveFromDescriptors (const TPG::TPGVertex *vertex, std::shared_ptr< Learn::EvaluationResult > eval, const std::vector< double > &descriptors) override
 Set the archive content at given descriptors.
 
virtual const std::vector< std::vector< double > > & getCentroids () const
 Return the centroids used by the CVT.
 
- Public Member Functions inherited from Selector::MapElites::MapElitesArchive
 MapElitesArchive (size_t nbBinPerDescriptor, size_t nbDescriptors, double minValue, double maxValue)
 Constructor of the MapElitesArchive.
 
uint64_t size () const
 Get the size of the archive.
 
std::pair< uint64_t, uint64_t > getDimensions () const
 Get the dimensions of the archive.
 
std::vector< double > getArchiveLimits () const
 get the archive limits
 
virtual const std::vector< std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > > & getAllArchive () const
 Get all the archive content.
 
virtual const std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > & getArchiveAt (const std::vector< uint64_t > &indices) const
 Get the archive content at given indices.
 
virtual void setArchiveAt (const TPG::TPGVertex *vertex, std::shared_ptr< Learn::EvaluationResult > eval, const std::vector< uint64_t > &indices)
 Set the archive content at given indices.
 
virtual uint64_t getIndexArchive (double value) const
 Get the index in one dimension of the archive from a value.
 
virtual uint64_t computeLinearIndex (const std::vector< uint64_t > &indices) const
 Compute the linear index from multi-dimensional indices.
 
virtual std::vector< uint64_t > computeIndices (uint64_t index) const
 Compute the multi-dimensional indices from linear index.
 
virtual bool containsRoot (const TPG::TPGVertex *root) const
 Check if the archive contains a root TPGVertex.
 
virtual void removeRootFromArchiveIfNotComplete (const TPG::TPGVertex *root, size_t maxNbEvaluation)
 Remove a root TPGVertex from the archive if its number of evaluation is below maxNbEvaluation.
 
virtual void removeRootFromArchive (const TPG::TPGVertex *root, size_t maxNbEvaluation)
 Remove a root TPGVertex from the archive.
 
virtual std::set< const TPG::TPGVertex * > getVerticesInArchive () const
 Return a set with the current vectors in the archive.
 

Protected Attributes

size_t nbCentroids
 Number of centroids.
 
size_t nbIterationInit
 Number of iterations for initialization.
 
size_t nbDotsInit
 Number of dots for initialization.
 
double a1
 CVT parameters.
 
double b1
 CVT parameters.
 
double a2
 CVT parameters.
 
double b2
 CVT parameters.
 
std::vector< std::vector< double > > centroids
 Centroids of the CVT.
 
- Protected Attributes inherited from Selector::MapElites::MapElitesArchive
uint64_t nbBinPerDescriptor
 Number of bins per descriptor.
 
uint64_t nbDescriptors
 Number of descriptors for this archive.
 
double minValue
 Minimum value for the descriptors.
 
double maxValue
 Maximum value for the descriptors.
 
std::vector< double > archiveLimits
 Limits of the bins for the descriptors.
 
std::vector< std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > > archive
 

Detailed Description

CVT Map Elites Archive class.

This class implements a CVT (Centroidal Voronoi Tessellation) based Map Elites Archive It inherits from the MapElitesArchive class.

Constructor & Destructor Documentation

◆ CvtMapElitesArchive()

Selector::MapElites::CvtMapElitesArchive::CvtMapElitesArchive ( Mutator::RNG & rng,
size_t nbCentroids,
size_t nbDescriptors,
double minValue,
double maxValue,
size_t nbIterationInit,
size_t nbDotsInit,
double a1,
double b1,
double a2,
double b2 )
inline

Constructor of the CVT Map Elites Archive.

Parameters
[in]rngRandom number generator
[in]nbCentroidsNumber of centroids
[in]nbDescriptorsNumber of descriptors
[in]minValueMinimum value for the descriptors
[in]maxValueMaximum value for the descriptors
[in]nbIterationInitNumber of iterations for initialization
[in]nbDotsInitNumber of dots for initialization
[in]a1CVT parameter
[in]b1CVT parameter
[in]a2CVT parameter
[in]b2CVT parameter

Member Function Documentation

◆ add()

std::vector< double > Selector::MapElites::CvtMapElitesArchive::add ( const std::vector< double > & a,
const std::vector< double > & b )

Vector addition.

Parameters
[in]aFirst vector
[in]bSecond vector

◆ average()

std::vector< double > Selector::MapElites::CvtMapElitesArchive::average ( const std::vector< std::vector< double > > & points)

Compute the average of a set of points.

Parameters
[in]pointsSet of points

◆ dist_squared()

double Selector::MapElites::CvtMapElitesArchive::dist_squared ( const std::vector< double > & a,
const std::vector< double > & b )

Calculate squared Euclidean distance between two points.

Parameters
[in]aFirst point
[in]bSecond point

Copyright or © or Copr. IETR/INSA - Rennes (2025) :

Quentin Vacher qvach.nosp@m.er@i.nosp@m.nsa-r.nosp@m.enne.nosp@m.s.fr (2025)

GEGELATI is an open-source reinforcement learning framework for training artificial intelligence based on Tangled Program Graphs (TPGs).

This software is governed by the CeCILL-C license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL-C license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability.

In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security.

The fact that you are presently reading this means that you have had knowledge of the CeCILL-C license and that you accept its terms.

◆ getArchiveFromDescriptors()

const std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > & Selector::MapElites::CvtMapElitesArchive::getArchiveFromDescriptors ( const std::vector< double > & descriptors) const
overridevirtual

Get the archive content at given descriptors.

Reimplemented from Selector::MapElites::MapElitesArchive.

◆ getIndexForDescriptor()

size_t Selector::MapElites::CvtMapElitesArchive::getIndexForDescriptor ( const std::vector< double > & descriptors) const

Get the index for given descriptors.

Parameters
[in]descriptorsThe descriptors to get the index for

◆ initialize_cvt()

void Selector::MapElites::CvtMapElitesArchive::initialize_cvt ( Mutator::RNG & rng)

Initialize the CVT centroids using Lloyd's algorithm.

Parameters
[in]rngRandom number generator

◆ nearest()

size_t Selector::MapElites::CvtMapElitesArchive::nearest ( const std::vector< double > & point,
const std::vector< std::vector< double > > & centroids )

Find the nearest centroid to a given point.

Parameters
[in]pointThe point to find the nearest centroid for
[in]centroidsThe list of centroids

◆ random_point()

std::vector< double > Selector::MapElites::CvtMapElitesArchive::random_point ( Mutator::RNG & rng)

Generate a random point within the descriptor bounds.

Parameters
[in]rngRandom number generator

◆ scalar_mult()

std::vector< double > Selector::MapElites::CvtMapElitesArchive::scalar_mult ( const std::vector< double > & a,
double s )

Scalar multiplication.

Parameters
[in]aVector
[in]sScalar

◆ setArchiveFromDescriptors()

void Selector::MapElites::CvtMapElitesArchive::setArchiveFromDescriptors ( const TPG::TPGVertex * vertex,
std::shared_ptr< Learn::EvaluationResult > eval,
const std::vector< double > & descriptors )
overridevirtual

Set the archive content at given descriptors.

Reimplemented from Selector::MapElites::MapElitesArchive.


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