Ultra 0.9.4
Loading...
Searching...
No Matches
gp/src/problem.h
Go to the documentation of this file.
1
12
13#if !defined(ULTRA_SRC_PROBLEM_H)
14#define ULTRA_SRC_PROBLEM_H
15
16#include "kernel/problem.h"
19
20#include <expected>
21#include <filesystem>
22#include <string>
23#include <type_traits>
24#include <vector>
25
26namespace ultra
27{
28
34enum class symbol_init : unsigned
35{
41 all = 15,
42};
43
45template<> struct is_bitmask_enum<symbol_init> : std::true_type {};
46
55
56} // namespace ultra
57
58namespace ultra::src
59{
60
65class problem : public ultra::problem
66{
67public:
68 // ---- Member types ----
77
78 // ---- Constructors ----
86 problem() = default;
87
89 explicit problem(const std::filesystem::path &,
90 const dataframe::params & = {});
91 explicit problem(std::istream &, const dataframe::params & = {});
92 problem(ultra::problem &&, dataframe);
93
94 // ---- Information about the problem ----
96 [[nodiscard]] bool classification() const noexcept { return classes() > 1; }
97
98 [[nodiscard]] std::size_t categories() const noexcept;
99 [[nodiscard]] std::size_t classes() const noexcept;
100 [[nodiscard]] std::size_t variables() const noexcept;
101
102 [[nodiscard]] std::expected<void, readiness_error> ready() const;
103
104 // ---- Misc ----
107 [[nodiscard]] bool is_valid() const override;
108
109 // ---- Public data members ----
111
112private:
113 // ---- Private support methods ----
114 [[nodiscard]] bool compatible(const function::param_data_types &,
115 const std::vector<std::string> &) const;
116};
117
118} // namespace ultra::src
119
120#endif // include guard
Definition function.h:44
Definition dataframe.h:76
Definition multi_dataset.h:50
bool classification() const noexcept
Just a shorthand for checking number of classes.
Definition gp/src/problem.h:96
readiness_error
Definition gp/src/problem.h:70
@ invalid_problem
Internal consistency check failed.
Definition gp/src/problem.h:71
@ empty_training_set
No examples available for training.
Definition gp/src/problem.h:72
@ missing_category_terminals
A used category has no terminals.
Definition gp/src/problem.h:75
@ missing_functions
No functions available for evolution.
Definition gp/src/problem.h:74
@ insufficient_terminals
Not enough terminals to build individuals.
Definition gp/src/problem.h:73
void setup_symbols(symbol_init=symbol_init::all)
Definition gp/src/problem.cc:354
void setup_terminals(symbol_init=def_terminal_init)
Definition gp/src/problem.cc:227
std::size_t categories() const noexcept
Definition gp/src/problem.cc:463
std::expected< void, readiness_error > ready() const
Definition gp/src/problem.cc:185
std::size_t variables() const noexcept
Definition gp/src/problem.cc:481
bool is_valid() const override
Definition gp/src/problem.cc:489
std::size_t classes() const noexcept
Definition gp/src/problem.cc:472
STL namespace.
constexpr symbol_init def_terminal_init
Definition gp/src/problem.h:53
symbol_init
Definition gp/src/problem.h:35
@ disabled
No initialisation.
Definition gp/src/problem.h:36
@ functions
Initialises the function set.
Definition gp/src/problem.h:40
@ attributes
Initialises attributes.
Definition gp/src/problem.h:38
@ variables
Initialises input variables.
Definition gp/src/problem.h:37
@ all
Initialises everything.
Definition gp/src/problem.h:41
@ ephemerals
Initialises ephemeral values.
Definition gp/src/problem.h:39
Definition problem.h:26
Definition dataframe.h:187