GENEIAL  0.2=/
 All Classes Pages
Diagnostics.h
1 #pragma once
2 
3 #include <geneial/namespaces.h>
4 
5 #include <geneial/algorithm/BaseGeneticAlgorithm.h>
6 #include <geneial/core/population/management/Bookkeeper.h>
7 
8 #include <unordered_map>
9 #include <chrono>
10 #include <ctime>
11 #include <ratio>
12 
13 geneial_private_namespace(geneial)
14 {
15 geneial_private_namespace(algorithm)
16 {
17 
18 using ::geneial::population::management::EventData;
19 void printTiming(const char* string, std::unordered_multimap<std::string, std::unique_ptr<EventData> > &events, std::ostream& os);
20 
21 using ::geneial::algorithm::BaseGeneticAlgorithm;
22 using ::geneial::population::management::EventData;
23 using ::geneial::population::management::EventValueData;
24 using ::geneial::population::management::StatisticBookkeeper;
25 
26 geneial_export_namespace
27 {
28 
29 template<typename FITNESS_TYPE>
30 class Diagnostics
31 {
32  const std::shared_ptr<BaseGeneticAlgorithm<FITNESS_TYPE>> _algorithm;
33 
34 protected:
35  void instrumentAlgorithm();
36 
37 public:
38  Diagnostics(const std::shared_ptr<BaseGeneticAlgorithm<FITNESS_TYPE>> &algorithm);
39 
40  void analyseAll(std::ostream& os);
41 
42  void analyseTimeSpent(std::ostream& os);
43  void analyseEventsCoupling(std::ostream& os);
44  void analyseEventsCrossover(std::ostream& os);
45  void analyseEventsMutation(std::ostream& os);
46  void analyseEventsReplacement(std::ostream& os);
47  void anaylseEventsSelection(std::ostream& os);
48  void anaylseConvergence(std::ostream& os);
49 
50 };
51 
52 
53 }
54 }
55 }
56 
57 #include <geneial/algorithm/diagnostics/Diagnostics.hpp>