Ultra 0.9.4
Loading...
Searching...
No Matches
evolution_summary.h
Go to the documentation of this file.
1
12
13#if !defined(ULTRA_EVOLUTION_SUMMARY_H)
14#define ULTRA_EVOLUTION_SUMMARY_H
15
16#include <chrono>
17
18#include "kernel/analyzer.h"
21
22namespace ultra
23{
25/// A summary of information about evolution (results, statistics...).
26///
27/// Part of the information (`status`) supports concurrent access and is keep
28/// up to date while evolution is ongoing; the remaining part is calculated at
29/// the end of evolution.
30///
31template<Individual I, Fitness F>
32class summary
33{
34public:
35 // ---- Member types ----
36 using on_new_best_callback_t = ultra::on_new_best_callback_t<I, F>;
37
38 // --- Constructor and support functions ---
39 summary() = default;
41 void clear();
42
44 summary &on_new_best(on_new_best_callback_t);
45
47
48 // --- Concurrency aware functions ---
50 [[nodiscard]] scored_individual<I, F> best() const;
51 [[nodiscard]] unsigned last_improvement() const;
52 [[nodiscard]] unsigned stagnation() const;
53
54 // --- Serialization ---
55 [[nodiscard]] bool load(std::istream &, const problem &);
56 [[nodiscard]] bool save(std::ostream &) const;
57
58 // --- Data members ---
59 analyzer<I, F> az {};
60
62 std::chrono::milliseconds elapsed {0};
63
66 unsigned generation {0};
67
68private:
69 mutable ignore_copy<std::shared_mutex> mutex_ {};
70 struct data
71 {
73 unsigned last_improvement {0};
74 };
75
76 [[nodiscard]] data data_snapshot() const;
77
78 data data_ {};
79
80 on_new_best_callback_t on_new_best_callback_ {};
81};
82
84
85} // namespace ultra
86
87#endif // include guard
Definition analyzer.h:59
Definition evolution_status.h:36
evolution_status< I, F > starting_status()
Definition evolution_summary.h:40
summary & on_new_best(on_new_best_callback_t)
Definition evolution_summary.h:70
unsigned last_improvement() const
Definition evolution_summary.h:156
void set_best_fitness(F)
Definition evolution_summary.h:128
scored_individual< I, F > best() const
Definition evolution_summary.h:147
bool save(std::ostream &) const
Definition evolution_summary.h:208
void clear()
Definition evolution_summary.h:25
std::chrono::milliseconds elapsed
Time elapsed from evolution beginning.
Definition evolution_summary.h:62
unsigned generation
Definition evolution_summary.h:66
bool update_if_better(scored_individual< I, F >)
Definition evolution_summary.h:99
bool load(std::istream &, const problem &)
Definition evolution_summary.h:172
Definition problem.h:26
Definition scored_individual.h:48