View Javadoc
1   package net.bmahe.genetics4j.core.combination;
2   
3   import java.util.List;
4   import java.util.Objects;
5   
6   import net.bmahe.genetics4j.core.chromosomes.Chromosome;
7   import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
8   import net.bmahe.genetics4j.core.spec.chromosome.ChromosomeSpec;
9   import net.bmahe.genetics4j.core.spec.combination.CombinationPolicy;
10  import net.bmahe.genetics4j.core.spec.combination.PickFirstParent;
11  
12  public class PickFirstParentHandler<T extends Comparable<T>> implements ChromosomeCombinatorHandler<T> {
13  
14  	@Override
15  	public boolean canHandle(final ChromosomeCombinatorResolver<T> chromosomeCombinatorResolver,
16  			final CombinationPolicy combinationPolicy, final ChromosomeSpec chromosome) {
17  		Objects.requireNonNull(combinationPolicy);
18  
19  		return combinationPolicy instanceof PickFirstParent;
20  
21  	}
22  
23  	@Override
24  	public ChromosomeCombinator<T> resolve(final ChromosomeCombinatorResolver<T> chromosomeCombinatorResolver,
25  			final CombinationPolicy combinationPolicy, final ChromosomeSpec chromosome) {
26  
27  		return new ChromosomeCombinator<>() {
28  
29  			@Override
30  			public List<Chromosome> combine(final AbstractEAConfiguration<T> eaConfiguration, final Chromosome chromosome1,
31  					final T firstParentFitness, final Chromosome chromosome2, final T secondParentFitness) {
32  				Objects.requireNonNull(chromosome1);
33  
34  				return List.of(chromosome1);
35  			}
36  		};
37  	}
38  }