3 #include <geneial/algorithm/criteria/StatefulStoppingCriterion.h>
5 geneial_private_namespace(geneial)
7 geneial_private_namespace(algorithm)
9 geneial_private_namespace(stopping_criteria)
11 using ::geneial::utility::Printable;
12 using ::geneial::population::management::BaseManager;
14 geneial_export_namespace
16 using namespace geneial::algorithm::stopping_criteria;
19 template<
typename FITNESS_TYPE>
20 class PopulationUnchangedCriterion: StatefulStoppingCriterion<FITNESS_TYPE>
23 PopulationUnchangedCriterion() :
24 _wasEverInvoked(false), _lastGenerationOldestAge(0), _lastGenerationYoungestAge(0)
28 virtual ~PopulationUnchangedCriterion()
32 virtual bool wasStatefullyReached(BaseManager<FITNESS_TYPE> &manager)
38 _wasEverInvoked =
true;
44 result = (_lastGenerationOldestAge == manager.getPopulation().getYoungestChromosome()->getAge() - 1);
47 _lastGenerationOldestAge = manager.getPopulation().getOldestChromosome()->getAge();
48 _lastGenerationYoungestAge = manager.getPopulation().getYoungestChromosome()->getAge();
53 virtual void print(std::ostream& os)
const
55 os <<
"Population Unchanged ()";
60 unsigned int _wasEverInvoked;
63 unsigned int _lastGenerationOldestAge;
64 unsigned int _lastGenerationYoungestAge;