36#ifndef CVT_MAP_ELITES_ARCHIVE_H
37#define CVT_MAP_ELITES_ARCHIVE_H
39#include "mapElitesArchive.h"
116 const std::vector<double>& b);
124 std::vector<double>
add(
const std::vector<double>& a,
125 const std::vector<double>& b);
133 std::vector<double>
scalar_mult(
const std::vector<double>& a,
142 const std::vector<std::vector<double>>& points);
157 size_t nearest(
const std::vector<double>& point,
158 const std::vector<std::vector<double>>&
centroids);
173 const std::vector<double>& descriptors)
const;
178 const std::pair<std::shared_ptr<Learn::EvaluationResult>,
181 const std::vector<double>& descriptors)
const override;
188 std::shared_ptr<Learn::EvaluationResult> eval,
189 const std::vector<double>& descriptors)
override;
194 virtual const std::vector<std::vector<double>>&
getCentroids()
CVT Map Elites Archive class.
Definition cvtMapElitesArchive.h:52
size_t nbDotsInit
Number of dots for initialization.
Definition cvtMapElitesArchive.h:61
size_t nearest(const std::vector< double > &point, const std::vector< std::vector< double > > ¢roids)
Find the nearest centroid to a given point.
Definition cvtMapElitesArchive.cpp:93
std::vector< double > add(const std::vector< double > &a, const std::vector< double > &b)
Vector addition.
Definition cvtMapElitesArchive.cpp:55
virtual const std::vector< std::vector< double > > & getCentroids() const
Return the centroids used by the CVT.
Definition cvtMapElitesArchive.cpp:199
double b2
CVT parameters.
Definition cvtMapElitesArchive.h:73
std::vector< double > random_point(Mutator::RNG &rng)
Generate a random point within the descriptor bounds.
Definition cvtMapElitesArchive.cpp:84
void initialize_cvt(Mutator::RNG &rng)
Initialize the CVT centroids using Lloyd's algorithm.
Definition cvtMapElitesArchive.cpp:112
double b1
CVT parameters.
Definition cvtMapElitesArchive.h:67
size_t nbIterationInit
Number of iterations for initialization.
Definition cvtMapElitesArchive.h:58
std::vector< std::vector< double > > centroids
Centroids of the CVT.
Definition cvtMapElitesArchive.h:76
double dist_squared(const std::vector< double > &a, const std::vector< double > &b)
Calculate squared Euclidean distance between two points.
Definition cvtMapElitesArchive.cpp:46
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.
Definition cvtMapElitesArchive.h:95
size_t nbCentroids
Number of centroids.
Definition cvtMapElitesArchive.h:55
double a2
CVT parameters.
Definition cvtMapElitesArchive.h:70
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.
Definition cvtMapElitesArchive.cpp:169
std::vector< double > average(const std::vector< std::vector< double > > &points)
Compute the average of a set of points.
Definition cvtMapElitesArchive.cpp:73
std::vector< double > scalar_mult(const std::vector< double > &a, double s)
Scalar multiplication.
Definition cvtMapElitesArchive.cpp:64
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.
Definition cvtMapElitesArchive.cpp:162
double a1
CVT parameters.
Definition cvtMapElitesArchive.h:64
size_t getIndexForDescriptor(const std::vector< double > &descriptors) const
Get the index for given descriptors.
Definition cvtMapElitesArchive.cpp:177
Class representing a Map Elites archive.
Definition mapElitesArchive.h:58
double minValue
Minimum value for the descriptors.
Definition mapElitesArchive.h:67
double maxValue
Maximum value for the descriptors.
Definition mapElitesArchive.h:70
std::vector< std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > > archive
Definition mapElitesArchive.h:79
uint64_t nbDescriptors
Number of descriptors for this archive.
Definition mapElitesArchive.h:64
Abstract class representing the vertices of a TPGGraph.
Definition tpgVertex.h:55
Helper file gathering all headers from the GEGELATI lib to ease their inclusion in apps.
Definition mapElitesArchiveLogger.h:45