1 package net.bmahe.genetics4j.core.selection;
2
3 import java.util.Objects;
4 import java.util.random.RandomGenerator;
5
6 import org.apache.commons.lang3.Validate;
7
8 import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
9 import net.bmahe.genetics4j.core.spec.AbstractEAExecutionContext;
10 import net.bmahe.genetics4j.core.spec.selection.SelectionPolicy;
11 import net.bmahe.genetics4j.core.spec.selection.SelectiveRefinementTournament;
12
13 public class SelectiveRefinementTournamentPolicyHandler<T extends Comparable<T>> implements SelectionPolicyHandler<T> {
14 private final RandomGenerator randomGenerator;
15
16 public SelectiveRefinementTournamentPolicyHandler(final RandomGenerator _randomGenerator) {
17 Objects.requireNonNull(_randomGenerator);
18
19 this.randomGenerator = _randomGenerator;
20 }
21
22 @Override
23 public boolean canHandle(final SelectionPolicy selectionPolicy) {
24 Objects.requireNonNull(selectionPolicy);
25
26 return selectionPolicy instanceof SelectiveRefinementTournament;
27 }
28
29 @SuppressWarnings("unchecked")
30 @Override
31 public Selector<T> resolve(final AbstractEAExecutionContext<T> eaExecutionContext,
32 final AbstractEAConfiguration<T> eaConfiguration,
33 final SelectionPolicyHandlerResolver<T> selectionPolicyHandlerResolver,
34 final SelectionPolicy selectionPolicy) {
35 Objects.requireNonNull(selectionPolicy);
36 Validate.isInstanceOf(SelectiveRefinementTournament.class, selectionPolicy);
37
38 return new SelectiveRefinementTournamentSelector<>((SelectiveRefinementTournament<T>) selectionPolicy,
39 randomGenerator);
40 }
41 }