1 package net.bmahe.genetics4j.moo.spea2.replacement;
2
3 import java.util.Objects;
4
5 import org.apache.commons.lang3.Validate;
6
7 import net.bmahe.genetics4j.core.replacement.ReplacementStrategyHandler;
8 import net.bmahe.genetics4j.core.replacement.ReplacementStrategyImplementor;
9 import net.bmahe.genetics4j.core.selection.SelectionPolicyHandlerResolver;
10 import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
11 import net.bmahe.genetics4j.core.spec.AbstractEAExecutionContext;
12 import net.bmahe.genetics4j.core.spec.replacement.ReplacementStrategy;
13 import net.bmahe.genetics4j.moo.spea2.spec.replacement.SPEA2Replacement;
14
15 public class SPEA2ReplacementStrategyHandler<T extends Comparable<T>> implements ReplacementStrategyHandler<T> {
16
17 @Override
18 public boolean canHandle(final ReplacementStrategy replacementStrategy) {
19 Objects.requireNonNull(replacementStrategy);
20
21 return replacementStrategy instanceof SPEA2Replacement;
22 }
23
24 @Override
25 public ReplacementStrategyImplementor<T> resolve(final AbstractEAExecutionContext<T> eaExecutionContext,
26 final AbstractEAConfiguration<T> eaConfiguration,
27 final SelectionPolicyHandlerResolver<T> selectionPolicyHandlerResolver,
28 final ReplacementStrategy replacementStrategy) {
29 Objects.requireNonNull(eaExecutionContext);
30 Objects.requireNonNull(eaConfiguration);
31 Objects.requireNonNull(selectionPolicyHandlerResolver);
32 Objects.requireNonNull(replacementStrategy);
33 Validate.isInstanceOf(SPEA2Replacement.class, replacementStrategy);
34
35 @SuppressWarnings("unchecked")
36 final SPEA2Replacement<T> spea2Replacement = (SPEA2Replacement<T>) replacementStrategy;
37
38 return new SPEA2ReplacementStrategyImplementor<>(spea2Replacement);
39 }
40
41 }