Ultra 0.9.4
Loading...
Searching...
No Matches
gp/src/search.h
Go to the documentation of this file.
1
12
13#if !defined(ULTRA_SRC_SEARCH_H)
14#define ULTRA_SRC_SEARCH_H
15
19#include "kernel/search.h"
20
21#include <variant>
22
23namespace ultra::src
24{
26template<Individual P = gp::individual> class search;
27
28enum class metric_flags : unsigned
29{
30 nothing = 0x0000,
31
32 accuracy = 1 << 0,
33 f1_score = 1 << 1,
34
35 everything = 0xFFFF
36};
37
42template<template<class> class ES, Evaluator E>
43class basic_search : public ultra::basic_search<ES, E>
44{
45public:
46 using individual_t = typename ultra::basic_search<ES, E>::individual_t;
47 using fitness_t = typename ultra::basic_search<ES, E>::fitness_t;
48
49 explicit basic_search(problem &, metric_flags = metric_flags::accuracy);
50
51 [[nodiscard]] auto predictor(const individual_t &) const;
52
53 [[nodiscard]] bool is_valid() const override;
54
55protected:
56 // ---- Template methods / customization points ----
58 const individual_t &) const override;
59
60 void tune_parameters() override;
61
62private:
63 template<Individual> friend class search;
64
65 [[nodiscard]] problem &prob() const noexcept;
66
67 // ---- Private data members ----
68 metric_flags metrics_; // metrics we have to calculate during the search
69}; // class basic_search
70
77template<Individual P>
78class search
79{
80public:
81 // ---- Member types ----
82 using individual_t = P;
83 using fitness_t = double;
84
85 using after_generation_callback_t =
86 ultra::after_generation_callback_t<P, fitness_t>;
87 using on_training_new_best_callback_t =
88 ultra::on_new_best_callback_t<P, fitness_t>;
89
90 using class_evaluator_t = gaussian_evaluator<P>;
91 using reg_evaluator_t = rmae_evaluator<P>;
92
93 // ---- Constructor ----
94 explicit search(problem &, metric_flags = metric_flags::accuracy);
95
96 // ---- Run ----
99
100 [[nodiscard]] std::unique_ptr<basic_oracle> predictor(const P &) const;
101
102 // ---- Hooks ----
103 search &after_generation(after_generation_callback_t);
105 search &messages(bool) noexcept;
106 search &on_training_new_best(on_training_new_best_callback_t);
107 template<class F> search &refinement(F &&);
108 search &stop_source(std::stop_source);
109 search &tag(const std::string &);
110
111 template<ValidationStrategy, class... Args>
112 search &validation_strategy(Args && ...);
113
114private:
115 using class_search_t = basic_search<alps_es, class_evaluator_t>;
116 using reg_search_t = basic_search<alps_es, reg_evaluator_t>;
117 using engine_t = std::variant<class_search_t, reg_search_t>;
118
119 [[nodiscard]] static engine_t make_engine(problem &, metric_flags);
120 [[nodiscard]] bool problem_type_unchanged() const noexcept;
121
122 // ---- Private data members ----
123 engine_t engine_;
124 const problem &prob_;
125 const bool classification_; // problem type captured at construction time
126};
127
128
129#include "kernel/gp/src/search.tcc"
130
131} // namespace ultra::src
132
133#endif // include guard
Definition search.h:43
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
basic_search & after_generation(after_generation_callback_t)
Definition search.h:166
basic_search & stop_source(std::stop_source)
Definition search.h:74
basic_search & tag(const std::string &)
Definition search.h:109
basic_search & on_training_new_best(on_training_new_best_callback_t)
Definition search.h:181
Definition search_log.h:28
Definition search_stats.h:44
Definition gp/src/search.h:44
auto predictor(const individual_t &) const
Definition gp/src/search.h:86
bool is_valid() const override
Definition gp/src/search.h:221
void tune_parameters() override
Definition gp/src/search.h:162
basic_search(problem &, metric_flags=metric_flags::accuracy)
Definition gp/src/search.h:65
model_measurements< fitness_t > calculate_metrics(const individual_t &) const override
Definition gp/src/search.h:119
Definition gp/src/evaluator.h:361
Definition gp/src/problem.h:66
Definition gp/src/search.h:79
Definition validation_strategy.h:29
Definition evaluator.h:44
Definition individual.h:93
Definition validation_strategy.h:84
avg_error_evaluator< P, rmae_error_functor< P > > rmae_evaluator
Definition gp/src/evaluator.h:254
Definition model_measurements.h:28