FitnessThenSizeComparisonHandler.java
package net.bmahe.genetics4j.neat.combination.parentcompare;
import java.util.Objects;
import net.bmahe.genetics4j.neat.chromosomes.NeatChromosome;
import net.bmahe.genetics4j.neat.spec.combination.parentcompare.FitnessThenSizeComparison;
import net.bmahe.genetics4j.neat.spec.combination.parentcompare.ParentComparisonPolicy;
public class FitnessThenSizeComparisonHandler implements ParentComparisonHandler {
@Override
public boolean canHandle(final ParentComparisonPolicy parentComparisonPolicy) {
Objects.requireNonNull(parentComparisonPolicy);
return parentComparisonPolicy instanceof FitnessThenSizeComparison;
}
@Override
public ChosenOtherChromosome compare(final ParentComparisonPolicy parentComparisonPolicy, final NeatChromosome first,
final NeatChromosome second, final int fitnessComparison) {
Objects.requireNonNull(parentComparisonPolicy);
Objects.requireNonNull(first);
Objects.requireNonNull(second);
if (fitnessComparison < 0 || (fitnessComparison == 0 && first.getNumAlleles() > second.getNumAlleles())) {
return new ChosenOtherChromosome(second, first);
}
return new ChosenOtherChromosome(first, second);
}
}