@Override void accept(final Phenotype<?, N> pt, final long generation) { super.accept(pt, generation); _fitness.accept(pt.getFitness().doubleValue()); }
@Override public String toString() { return "+---------------------------------------------------------------------------+\n" + "| Time statistics |\n" + "+---------------------------------------------------------------------------+\n" + format(cpattern, "Selection:", d(_selectionDuration)) + format(cpattern, "Altering:", d(_alterDuration)) + format(cpattern, "Fitness calculation:", d(_evaluationDuration)) + format(cpattern, "Overall execution:", d(_evolveDuration)) + "+---------------------------------------------------------------------------+\n" + "| Evolution statistics |\n" + "+---------------------------------------------------------------------------+\n" + format(cpattern, "Generations:", i(_altered.getCount())) + format(cpattern, "Altered:", i(_altered)) + format(cpattern, "Killed:", i(_killed)) + format(cpattern, "Invalids:", i(_invalids)); }
private void accept(final EvolutionDurations durations) { final double selection = toSeconds(durations.getOffspringSelectionDuration()) + toSeconds(durations.getSurvivorsSelectionDuration()); final double alter = toSeconds(durations.getOffspringAlterDuration()) + toSeconds(durations.getOffspringFilterDuration()); _selectionDuration.accept(selection); _alterDuration.accept(alter); _evaluationDuration .accept(toSeconds(durations.getEvaluationDuration())); _evolveDuration .accept(toSeconds(durations.getEvolveDuration())); }
statistics = EvolutionStatistics.ofNumber();
@Override public String toString() { return super.toString() + "+---------------------------------------------------------------------------+\n" + "| Population statistics |\n" + "+---------------------------------------------------------------------------+\n" + format(cpattern, "Age:", p(_age)) + format(cpattern, "Fitness", "") + format(spattern, "min =", _fitness.getMin()) + format(spattern, "max =", _fitness.getMax()) + "+---------------------------------------------------------------------------+"; } }
public static void main(final String[] args) { RandomRegistry.setRandom(new Random()); final Engine<EnumGene<Integer>, Integer> engine = Engine .builder( Sorting::length, PermutationChromosome.ofInteger(20)) .optimize(Optimize.MINIMUM) .populationSize(1000) //.survivorsSelector(new RouletteWheelSelector<>()) //.offspringSelector(new TruncationSelector<>()) .offspringFraction(0.9) .alterers( new SwapMutator<>(0.01), new PartiallyMatchedCrossover<>(0.3)) .build(); final EvolutionStatistics<Integer, DoubleMomentStatistics> statistics = EvolutionStatistics.ofNumber(); final EvolutionResult<EnumGene<Integer>, Integer> result = engine.stream() .limit(Limits.bySteadyFitness(100)) .limit(2500) .peek(statistics) .collect(EvolutionResult.toBestEvolutionResult()); System.out.println(statistics); System.out.println(result.getBestPhenotype()); }
@Override public String toString() { return super.toString() + "+---------------------------------------------------------------------------+\n" + "| Population statistics |\n" + "+---------------------------------------------------------------------------+\n" + format(cpattern, "Age:", p(_age)) + format(cpattern, "Fitness:", "") + format(spattern, "min =", d(_fitness.getMin())) + format(spattern, "max =", d(_fitness.getMax())) + format(spattern, "mean =", d(_fitness.getMean())) + format(spattern, "var =", d(_fitness.getVariance())) + format(spattern, "std =", d(sqrt(_fitness.getVariance()))) + "+---------------------------------------------------------------------------+"; }
public static void main(final String[] args) { final Engine<DoubleGene, Double> engine = Engine .builder( RastriginFunction::fitness, // Codec for 'x' vector. Codecs.ofVector(DoubleRange.of(-R, R), N)) .populationSize(500) .optimize(Optimize.MINIMUM) .alterers( new Mutator<>(0.03), new MeanAlterer<>(0.6)) .build(); final EvolutionStatistics<Double, ?> statistics = EvolutionStatistics.ofNumber(); final Phenotype<DoubleGene, Double> best = engine.stream() .limit(bySteadyFitness(7)) .peek(statistics) .collect(toBestPhenotype()); System.out.println(statistics); System.out.println(best); } }
@Override void accept(final Phenotype<?, C> pt, final long generation) { super.accept(pt, generation); _fitness.accept(pt.getFitness()); }
public static void main(final String[] args) { final Knapsack knapsack = Knapsack.of(15, new Random(123)); // Configure and build the evolution engine. final Engine<BitGene, Double> engine = Engine.builder(knapsack) .populationSize(500) .survivorsSelector(new TournamentSelector<>(5)) .offspringSelector(new RouletteWheelSelector<>()) .alterers( new Mutator<>(0.115), new SinglePointCrossover<>(0.16)) .build(); // Create evolution statistics consumer. final EvolutionStatistics<Double, ?> statistics = EvolutionStatistics.ofNumber(); final Phenotype<BitGene, Double> best = engine.stream() // Truncate the evolution stream after 7 "steady" // generations. .limit(bySteadyFitness(7)) // The evolution will stop after maximal 100 // generations. .limit(100) // Update the evaluation statistics after // each generation .peek(statistics) // Collect (reduce) the evolution stream to // its best phenotype. .collect(toBestPhenotype()); System.out.println(statistics); System.out.println(best); }
@Override public void accept(final EvolutionResult<?, C> result) { if (_fitness.getMax() == null) { _fitness = MinMax.of(result.getOptimize().ascending()); } super.accept(result); }
statistics = EvolutionStatistics.ofNumber();
statistics = EvolutionStatistics.ofNumber();
statistics = EvolutionStatistics.ofNumber();
statistics = EvolutionStatistics.ofNumber();