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?
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();
You can use the
Evaluator
interface instead of the classical fitness function.