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