GENEIAL  0.2=/
 All Classes Pages
MaxGenerationCriterion.h
1 #pragma once
2 
3 #include <geneial/algorithm/criteria/BaseStoppingCriterion.h>
4 #include <geneial/core/population/Population.h>
5 
6 geneial_private_namespace(geneial)
7 {
8 geneial_private_namespace(algorithm)
9 {
10 geneial_private_namespace(stopping_criteria)
11 {
12 using ::geneial::population::management::BaseManager;
13 using ::geneial::population::Population;
14 
15 geneial_export_namespace
16 {
17 
18 template<typename FITNESS_TYPE>
19 class MaxGenerationCriterion: public BaseStoppingCriterion<FITNESS_TYPE>
20 {
21 private:
22  const typename Population<FITNESS_TYPE>::population_age _max;
23 
24 public:
25  explicit MaxGenerationCriterion(const long num_max_iterations) :
26  _max(num_max_iterations)
27  {
28  }
29 
30  virtual ~MaxGenerationCriterion()
31  {
32  }
33 
34  virtual inline bool wasReached(BaseManager<FITNESS_TYPE> &manager)
35  {
36  return !(manager.getPopulation().getAge() < _max);
37  }
38 
39  virtual void print(std::ostream& os) const
40  {
41  os << "MaxGenerationCriterion (" << _max << ")";
42  }
43 
44 };
45 
46 } /* geneial_export_namespace */
47 } /* private namespace stopping_criteria */
48 } /* private namespace algorithm */
49 } /* private namespace geneial */
50