Package io.jenetics.engine
Interface Evaluator<G extends Gene<?,G>,C extends Comparable<? super C>>
-
- Type Parameters:
G
- the gene typeC
- the fitness result type
- All Known Implementing Classes:
Engine
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public interface Evaluator<G extends Gene<?,G>,C extends Comparable<? super C>>
This interface allows to define different strategies for evaluating the fitness functions of a given population. Normally, there is no need for overriding the default evaluation strategy, but it might be necessary if you have performance problems and a batched fitness evaluation would solve the problem.The implementer is free to do the evaluation in place, or create new
Phenotype
instance and return the newly created one. A simple serial evaluator can easily implemented:final Function<? super Genotype<G>, ? extends C> fitness = ...; final Evaluator<G, C> evaluator = population -> population .map(pt -> pt.eval(fitness)) .asISeq(); final Engine<G, C> engine = new Engine.Builder(evaluator, genotypeFactory) .build();
- Since:
- 4.2
- Version:
- 5.0
- Author:
- Franz Wilhelmstötter
- See Also:
Evaluators
,Engine
- API Note:
- The size of the returned, evaluated, phenotype sequence must be exactly
the size of the input phenotype sequence and all phenotypes must have a
fitness value assigned (
assert population.forAll(Phenotype::isEvaluated);
). It is allowed to return the input sequence, after evaluation, as well a newly created one.
-
-
Method Detail
-
eval
ISeq<Phenotype<G,C>> eval(Seq<Phenotype<G,C>> population)
Evaluates the fitness values of the givenpopulation
. The givenpopulation
might contain already evaluated individuals. It is the responsibility of the implementer to filter out already evaluated individuals, if desired.- Parameters:
population
- the population to evaluate- Returns:
- the evaluated population. Implementers are free to return the the input population or a newly created one.
-
-