#ifndef __HYPERNEAT_NOVELTY_METRIC_HPP__ #define __HYPERNEAT_NOVELTY_METRIC_HPP__ #include #include #include namespace hyperneat { class Population; class NoveltyMetric { public: const NoveltyMetricPrms& getPrms() const; const Vector& getBehaviors() const; const Vector2D& getArchive() const; Behavior& getBehaviorOf(size_t i); private: void initialize(const NoveltyMetricPrms& prms, Population* population = nullptr); void setScores(); double getDistance(const Vector& v1, const Vector& v2) const; NoveltyMetricPrms _prms; Vector _behaviors; Vector2D _archive; friend class Behavior; friend class LoadFile; friend class Population; }; } #endif