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