1 #ifndef ELITEPOOLSCORER_HPP
2 #define ELITEPOOLSCORER_HPP
4 #include "../util/log.hpp"
5 #include <boost/container/flat_set.hpp>
21 class ElitePoolScorer {
23 ElitePoolScorer(
const Instance & instance,
const SolverConfig & sconf);
25 double get_score_for(
size_t s,
size_t t)
const noexcept;
26 void incorporate_result(
27 double quality,
const std::vector<unsigned int> & start_times,
28 const std::vector<std::vector<detail::Edge>> & adjacency_list);
29 void iteration(
size_t iteration) noexcept;
32 constexpr
static double EPS_DOUBLE_DELTA = 0.0000001;
36 void replace_elite_pool(
size_t index,
double quality,
37 const std::vector<unsigned int> & start_times);
39 size_t solutions_seen;
44 double sigmoid_coefficient;
51 std::vector<std::vector<unsigned int>> pool_start_times;
54 std::vector<double> scores;
60 size_t i_before_j_count;
64 mutable std::vector<std::vector<CacheEntry>> cache;
66 void update_cache(
size_t s,
size_t t)
const;
68 size_t current_generation;
71 std::vector<unsigned int> durations;