GEGELATI
Loading...
Searching...
No Matches
mapElitesArchive.h
1
36#ifndef MAP_ELITES_ARCHIVE_H
37#define MAP_ELITES_ARCHIVE_H
38
39#include <cmath>
40#include <fstream>
41#include <iostream>
42#include <string>
43#include <vector>
44
45#include "learn/evaluationResult.h"
46#include "tpg/tpgGraph.h"
47
48namespace Selector {
49 namespace MapElites {
50
58 {
59 protected:
62
64 uint64_t nbDescriptors;
65
67 double minValue;
68
70 double maxValue;
71
73 std::vector<double> archiveLimits;
74
77 std::vector<std::pair<std::shared_ptr<Learn::EvaluationResult>,
78 const TPG::TPGVertex*>>
80
81 public:
91 double minValue, double maxValue)
95 {
96
97 if (nbBinPerDescriptor > 0 && nbDescriptors > 0) {
98 archive.resize(std::pow(nbBinPerDescriptor, nbDescriptors));
99 }
100
101 for (size_t idx = 1; idx <= nbBinPerDescriptor; ++idx) {
102 archiveLimits.push_back((double)idx *
103 (maxValue - minValue) /
104 (double)nbBinPerDescriptor +
105 minValue);
106 }
107 }
108
112 uint64_t size() const;
113
117 std::pair<uint64_t, uint64_t> getDimensions() const;
118
122 std::vector<double> getArchiveLimits() const;
123
127 virtual const std::vector<
128 std::pair<std::shared_ptr<Learn::EvaluationResult>,
129 const TPG::TPGVertex*>>&
130 getAllArchive() const;
131
137 virtual const std::pair<std::shared_ptr<Learn::EvaluationResult>,
138 const TPG::TPGVertex*>&
139 getArchiveAt(const std::vector<uint64_t>& indices) const;
140
147 virtual const std::pair<std::shared_ptr<Learn::EvaluationResult>,
148 const TPG::TPGVertex*>&
150 const std::vector<double>& descriptors) const;
151
159 virtual void setArchiveAt(
160 const TPG::TPGVertex* vertex,
161 std::shared_ptr<Learn::EvaluationResult> eval,
162 const std::vector<uint64_t>& indices);
163
172 virtual void setArchiveFromDescriptors(
173 const TPG::TPGVertex* vertex,
174 std::shared_ptr<Learn::EvaluationResult> eval,
175 const std::vector<double>& descriptors);
176
182 virtual uint64_t getIndexArchive(double value) const;
183
190 virtual uint64_t computeLinearIndex(
191 const std::vector<uint64_t>& indices) const;
192
198 virtual std::vector<uint64_t> computeIndices(uint64_t index) const;
199
205 virtual bool containsRoot(const TPG::TPGVertex* root) const;
206
216 const TPG::TPGVertex* root, size_t maxNbEvaluation);
217
225 virtual void removeRootFromArchive(const TPG::TPGVertex* root,
226 size_t maxNbEvaluation);
227
231 virtual std::set<const TPG::TPGVertex*> getVerticesInArchive()
232 const;
233 };
234
235 }; // namespace MapElites
236}; // namespace Selector
237
238#endif // MAP_ELITES_SELECTOR_H
Class representing a Map Elites archive.
Definition mapElitesArchive.h:58
double minValue
Minimum value for the descriptors.
Definition mapElitesArchive.h:67
virtual uint64_t getIndexArchive(double value) const
Get the index in one dimension of the archive from a value.
Definition mapElitesArchive.cpp:62
std::pair< uint64_t, uint64_t > getDimensions() const
Get the dimensions of the archive.
Definition mapElitesArchive.cpp:44
virtual void removeRootFromArchive(const TPG::TPGVertex *root, size_t maxNbEvaluation)
Remove a root TPGVertex from the archive.
Definition mapElitesArchive.cpp:164
virtual std::vector< uint64_t > computeIndices(uint64_t index) const
Compute the multi-dimensional indices from linear index.
Definition mapElitesArchive.cpp:86
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
virtual uint64_t computeLinearIndex(const std::vector< uint64_t > &indices) const
Compute the linear index from multi-dimensional indices.
Definition mapElitesArchive.cpp:72
uint64_t nbBinPerDescriptor
Number of bins per descriptor.
Definition mapElitesArchive.h:61
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.
Definition mapElitesArchive.cpp:149
virtual std::set< const TPG::TPGVertex * > getVerticesInArchive() const
Return a set with the current vectors in the archive.
Definition mapElitesArchive.cpp:177
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.
Definition mapElitesArchive.cpp:130
uint64_t nbDescriptors
Number of descriptors for this archive.
Definition mapElitesArchive.h:64
MapElitesArchive(size_t nbBinPerDescriptor, size_t nbDescriptors, double minValue, double maxValue)
Constructor of the MapElitesArchive.
Definition mapElitesArchive.h:90
std::vector< double > getArchiveLimits() const
get the archive limits
Definition mapElitesArchive.cpp:49
virtual const std::vector< std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > > & getAllArchive() const
Get all the archive content.
Definition mapElitesArchive.cpp:57
virtual const std::pair< std::shared_ptr< Learn::EvaluationResult >, const TPG::TPGVertex * > & getArchiveFromDescriptors(const std::vector< double > &descriptors) const
Get the archive content at given descriptors.
Definition mapElitesArchive.cpp:99
uint64_t size() const
Get the size of the archive.
Definition mapElitesArchive.cpp:38
virtual bool containsRoot(const TPG::TPGVertex *root) const
Check if the archive contains a root TPGVertex.
Definition mapElitesArchive.cpp:137
std::vector< double > archiveLimits
Limits of the bins for the descriptors.
Definition mapElitesArchive.h:73
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.
Definition mapElitesArchive.cpp:124
virtual void setArchiveFromDescriptors(const TPG::TPGVertex *vertex, std::shared_ptr< Learn::EvaluationResult > eval, const std::vector< double > &descriptors)
Set the archive content at given descriptors.
Definition mapElitesArchive.cpp:110
Abstract class representing the vertices of a TPGGraph.
Definition tpgVertex.h:55
Definition mapElitesArchiveLogger.h:45