1 package net.bmahe.genetics4j.gp.spec.mutation;
2
3 import org.apache.commons.lang3.Validate;
4 import org.immutables.value.Value;
5
6 import net.bmahe.genetics4j.core.spec.mutation.MutationPolicy;
7
8 @Value.Immutable
9 public interface NodeReplacement extends MutationPolicy {
10
11 @Value.Parameter
12 public double populationMutationProbability();
13
14 @Value.Check
15 default void check() {
16 Validate.inclusiveBetween(0.0, 1.0, populationMutationProbability());
17 }
18
19 public static NodeReplacement of(final double populationMutationProbability) {
20 return ImmutableNodeReplacement.of(populationMutationProbability);
21 }
22 }