Ultra 0.9.4
Loading...
Searching...
No Matches
ga/individual.h
Go to the documentation of this file.
1
12
13#if !defined(ULTRA_GA_INDIVIDUAL_H)
14#define ULTRA_GA_INDIVIDUAL_H
15
17
18namespace ultra::ga
19{
20
29class individual final : public vector_individual<D_INT>
30{
31public:
32 // ---- Constructors ----
33 individual() = default;
34 explicit individual(const ultra::problem &p) : vector_individual(p) {}
35
36 // ---- Modifiers ----
38 using vector_individual::operator=;
39
40 // ---- Recombination operators ----
41 unsigned mutation(const problem &, double = 1.0);
42 friend individual crossover(const problem &,
43 const individual &, const individual &);
44
45private:
46 // ---- Printing ----
47 void print_impl(std::ostream &, out::print_format_t) const override;
48}; // class individual
49
50
51// ---- Non-member functions ----
52[[nodiscard]] unsigned distance(const individual &, const individual &);
53
54// Recombination operators.
55[[nodiscard]] individual crossover(const problem &,
56 const individual &, const individual &);
57
58} // namespace ultra::ga
59
61
62#endif // include guard
Definition ga/individual.h:30
unsigned mutation(const problem &, double=1.0)
Definition ga/individual.cc:35
Definition ga/problem.h:29
void apply_each(std::size_t, std::size_t, F &&)
Definition vector_individual.h:114
print_format_t
Rendering format used to print an individual.
Definition individual.h:29
Definition problem.h:26