Ultra 0.9.4
Loading...
Searching...
No Matches
search.h
Go to the documentation of this file.
1
12
13#if !defined(ULTRA_SEARCH_H)
14#define ULTRA_SEARCH_H
15
17#include "kernel/evolution.h"
19#include "kernel/problem.h"
20#include "kernel/search_log.h"
21#include "kernel/search_stats.h"
23
24#include <algorithm>
25#include <fstream>
26#include <format>
27#include <memory>
28#include <string>
29#include <stop_token>
30#include <utility>
31#include <vector>
32
33namespace ultra
34{
35
41template<template<class> class ES, Evaluator E>
43{
44public:
45 // ---- Member types ----
46 using individual_t = evaluator_individual_t<E>;
47 using fitness_t = evaluator_fitness_t<E>;
48 using after_generation_callback_t =
49 ultra::after_generation_callback_t<individual_t, fitness_t>;
50 using refinement_callback_t =
52 using on_training_new_best_callback_t =
53 ultra::on_new_best_callback_t<individual_t, fitness_t>;
54
55 // ---- Constructor ----
57
58 // basic_search is directly instantiable. The virtual destructor only
59 // protects against accidental base-pointer deletion; polymorphic
60 // ownership is discouraged.
61 virtual ~basic_search() = default;
62
63 // ---- Run ----
65 unsigned = 1, const model_measurements<fitness_t> & = {});
66
67 // ---- Hooks ----
68 basic_search &after_generation(after_generation_callback_t);
70 basic_search &refinement(refinement_callback_t);
71 basic_search &on_training_new_best(on_training_new_best_callback_t);
72
73 basic_search &messages(bool) noexcept;
74 basic_search &tag(const std::string &);
75 basic_search &stop_source(std::stop_source);
76
77 template<ValidationStrategy, class... Args>
80
81 // ---- Misc ----
82 [[nodiscard]] virtual bool is_valid() const;
83
84protected:
85 // ---- Template methods ----
86 virtual void after_evolution(
87 unsigned, const std::vector<model_measurements<fitness_t>> &);
88
90 const individual_t &) const;
91
92 virtual void tune_parameters();
93
94 // ---- Data members ----
96
97 std::unique_ptr<ultra::validation_strategy> vs_
98 {std::make_unique<as_is_validation>()};
99
100 problem &prob_; // problem we're working on
101
102 // Callback functions.
103 after_generation_callback_t after_generation_callback_ {};
104 refinement_callback_t refinement_callback_ {};
105 on_training_new_best_callback_t on_training_new_best_callback_ {};
106
107private:
108 // Template method of the `basic_search::run` member function.
109 virtual void init();
110
111 bool load();
112
113 mutable search_log *search_log_ {nullptr};
114 std::stop_source stop_source_ {std::nostopstate};
115 std::string tag_ {};
116 bool emit_messages_ {true};
117}; // class basic_search
118
119
120template<Evaluator E>
121class search : public basic_search<alps_es, E>
122{
123public:
124 search(problem &prob, E eva)
125 : basic_search<alps_es, E>(prob, std::move(eva))
126 {
127 }
128};
129
130template<Evaluator E> search(problem &, E) -> search<E>;
131
132#include "kernel/search.tcc"
133} // namespace ultra
134
135#endif // include guard
Definition evolution_strategy.h:163
search_stats< individual_t, fitness_t > run(unsigned=1, const model_measurements< fitness_t > &={})
Definition search.h:230
basic_search & logger(search_log &) noexcept
Definition search.h:92
virtual void after_evolution(unsigned, const std::vector< model_measurements< fitness_t > > &)
Definition search.h:123
basic_search & after_generation(after_generation_callback_t)
Definition search.h:166
virtual void tune_parameters()
Definition gp/src/search.tcc:161
basic_search & stop_source(std::stop_source)
Definition search.h:74
basic_search & tag(const std::string &)
Definition search.h:109
basic_search< de_es, E > & validation_strategy(Args &&...args)
Definition search.h:309
virtual model_measurements< fitness_t > calculate_metrics(const individual_t &) const
Definition search.h:290
basic_search(problem &, E)
Definition search.h:28
basic_search & on_training_new_best(on_training_new_best_callback_t)
Definition search.h:181
virtual bool is_valid() const
Definition gp/src/search.tcc:220
Definition evaluator_proxy.h:45
Definition search_log.h:28
Definition search_stats.h:44
Definition search.h:122
Definition validation_strategy.h:29
Definition evaluator.h:44
Definition validation_strategy.h:84
STL namespace.
std::function< std::optional< evaluator_fitness_t< E > >( evaluator_individual_t< E > &, const E &, const parameters::refinement_parameters &)> refinement_callback_t
Definition evolution_callbacks.h:46
Definition model_measurements.h:28
Definition problem.h:26