@Override public boolean test(final EvolutionResult<?, C> result) { final boolean proceed = _proceed && result.getOptimize().compare(_threshold, result.getBestFitness()) >= 0; try { return _proceed; } finally { _proceed = proceed; } }
@Override public void accept(final EvolutionResult<?, C> result) { if (_fitness.getMax() == null) { _fitness = MinMax.of(result.getOptimize().ascending()); } super.accept(result); }
@Override public boolean test(final EvolutionResult<?, C> result) { if (!_proceed) return false; if (_fitness == null) { _fitness = result.getBestFitness(); _stable = 1; } else { final Optimize opt = result.getOptimize(); if (opt.compare(_fitness, result.getBestFitness()) >= 0) { _proceed = ++_stable <= _generations; } else { _fitness = result.getBestFitness(); _stable = 1; } } return _proceed; } }
void add(final EvolutionResult<G, C> result) { if (_front == null) { _optimize = result.getOptimize(); _front = new ParetoFront<>(this::dominance); } final ISeq<Phenotype<G, C>> front = front( result.getPopulation(), this::dominance ); _front.addAll(front.asList()); trim(); }
@Override public boolean test(final EvolutionResult<?, N> result) { final DoubleMoments moments = result.getPopulation().stream() .collect(toDoubleMoments(pt -> pt.getFitness().doubleValue())); boolean proceed = true; if (_fitness == null) { _fitness = result.getBestFitness(); _stableGenerations = 1; } else { final Optimize opt = result.getOptimize(); if (opt.compare(_fitness, result.getBestFitness()) >= 0) { proceed = ++_stableGenerations <= _generations; } else { _fitness = result.getBestFitness(); _stableGenerations = 1; } } return proceed; } }
EvolutionResult<G, C> with(final ISeq<Phenotype<G, C>> population) { return EvolutionResult.of( getOptimize(), population, getGeneration(), getTotalGenerations(), getDurations(), getKillCount(), getInvalidCount(), getAlterCount() ); }