Jenetics counting fitness on the whole population

62 views Asked by At

by the nature of my problem, I would like to count the fitness of all invididuals in the population at the same time for perfomance reasons. Is there a good way of doing that in jenetics?

Thanks

1

There are 1 answers

0
Franz Wilhelmstötter On BEST ANSWER

You can use the Evaluator interface instead of the classical fitness function.

final var gtf = Genotype.of(DoubleChromosome.of(0, 1));

// Use 'Evaluator' instead of classical fitness function.
final Evaluator<DoubleGene, Double> evaluator = population -> {
    final MSeq<Phenotype<DoubleGene, Double>> result = MSeq.ofLength(population.length());
    for (int i = 0; i < result.length(); ++i) {
        final var pt = population.get(i);
        if (pt.nonEvaluated()) {
            // Do your fitness calculation.
            result.set(i, pt.withFitness(0.1));
        } else {
            result.set(i, pt);
        }
    }
    return result.toISeq();
};

final Engine<DoubleGene, Double> engine = new Engine.Builder<>(evaluator, gtf)
    .build();