// Filters out invalid and to old individuals. Filtering is done in place. private FilterResult<G, C> filter(final Population<G, C> population, final long generation) { int killCount = 0; int invalidCount = 0; for (int i = 0, n = population.size(); i < n; ++i) { final Phenotype<G, C> individual = population.get(i); if (!_validator.test(individual)) { population.set(i, newPhenotype(generation)); ++invalidCount; } else if (individual.getAge(generation) > _maximalPhenotypeAge) { population.set(i, newPhenotype(generation)); ++killCount; } } return new FilterResult<>(population, killCount, invalidCount); }
void accept(final Phenotype<?, C> pt, final long generation) { _age.accept(pt.getAge(generation)); }