View Javadoc
1   package net.bmahe.genetics4j.core.spec.mutation;
2   
3   import org.apache.commons.lang3.Validate;
4   import org.immutables.value.Value;
5   
6   import net.bmahe.genetics4j.core.spec.statistics.distributions.Distribution;
7   import net.bmahe.genetics4j.core.spec.statistics.distributions.NormalDistribution;
8   
9   @Value.Immutable
10  public abstract class CreepMutation implements MutationPolicy {
11  
12  	@Value.Parameter
13  	public abstract double populationMutationProbability();
14  
15  	@Value.Parameter
16  	public abstract Distribution distribution();
17  
18  	@Value.Check
19  	protected void check() {
20  		Validate.inclusiveBetween(0.0, 1.0, populationMutationProbability());
21  	}
22  
23  	public static CreepMutation of(final double populationMutationProbability, final Distribution distribution) {
24  		return ImmutableCreepMutation.of(populationMutationProbability, distribution);
25  	}
26  
27  	public static CreepMutation ofNormal(final double populationMutationProbability, final double mean,
28  			final double standardDeviation) {
29  		return ImmutableCreepMutation.of(populationMutationProbability, NormalDistribution.of(mean, standardDeviation));
30  	}
31  }