GEGELATI
Loading...
Searching...
No Matches
cvtMapElitesArchive.h
1
36#ifndef CVT_MAP_ELITES_ARCHIVE_H
37#define CVT_MAP_ELITES_ARCHIVE_H
38
39#include "mapElitesArchive.h"
40#include <gegelati.h>
41
42namespace Selector {
43 namespace MapElites {
44
52 {
53 protected:
56
59
61 size_t nbDotsInit;
62
64 double a1;
65
67 double b1;
68
70 double a2;
71
73 double b2;
74
76 std::vector<std::vector<double>> centroids;
77
78 public:
96 size_t nbDescriptors, double minValue,
97 double maxValue, size_t nbIterationInit,
98 size_t nbDotsInit, double a1, double b1,
99 double a2, double b2)
103 {
104 centroids.resize(nbCentroids);
105 archive.resize(nbCentroids);
106 initialize_cvt(rng);
107 }
108
115 double dist_squared(const std::vector<double>& a,
116 const std::vector<double>& b);
117
124 std::vector<double> add(const std::vector<double>& a,
125 const std::vector<double>& b);
126
133 std::vector<double> scalar_mult(const std::vector<double>& a,
134 double s);
135
141 std::vector<double> average(
142 const std::vector<std::vector<double>>& points);
143
149 std::vector<double> random_point(Mutator::RNG& rng);
150
157 size_t nearest(const std::vector<double>& point,
158 const std::vector<std::vector<double>>& centroids);
159
165 void initialize_cvt(Mutator::RNG& rng);
166
173 const std::vector<double>& descriptors) const;
174
178 const std::pair<std::shared_ptr<Learn::EvaluationResult>,
179 const TPG::TPGVertex*>&
181 const std::vector<double>& descriptors) const override;
182
187 const TPG::TPGVertex* vertex,
188 std::shared_ptr<Learn::EvaluationResult> eval,
189 const std::vector<double>& descriptors) override;
190
194 virtual const std::vector<std::vector<double>>& getCentroids()
195 const;
196 };
197 }; // namespace MapElites
198}; // namespace Selector
199
200#endif
Definition rng.h:52
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 > > &centroids)
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