1 package net.bmahe.genetics4j.neat.combination.parentcompare;
2
3 import java.util.Objects;
4
5 import net.bmahe.genetics4j.neat.chromosomes.NeatChromosome;
6 import net.bmahe.genetics4j.neat.spec.combination.parentcompare.FitnessComparison;
7 import net.bmahe.genetics4j.neat.spec.combination.parentcompare.ParentComparisonPolicy;
8
9 public class FitnessComparisonHandler implements ParentComparisonHandler {
10
11 @Override
12 public boolean canHandle(final ParentComparisonPolicy parentComparisonPolicy) {
13 Objects.requireNonNull(parentComparisonPolicy);
14
15 return parentComparisonPolicy instanceof FitnessComparison;
16 }
17
18 @Override
19 public ChosenOtherChromosome compare(final ParentComparisonPolicy parentComparisonPolicy, final NeatChromosome first,
20 final NeatChromosome second, final int fitnessComparison) {
21 Objects.requireNonNull(parentComparisonPolicy);
22 Objects.requireNonNull(first);
23 Objects.requireNonNull(second);
24
25 if (fitnessComparison < 0) {
26 return new ChosenOtherChromosome(second, first);
27 }
28
29 return new ChosenOtherChromosome(first, second);
30 }
31 }