View Javadoc
1   package net.bmahe.genetics4j.neat.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   import net.bmahe.genetics4j.core.spec.statistics.distributions.Distribution;
8   import net.bmahe.genetics4j.core.spec.statistics.distributions.NormalDistribution;
9   import net.bmahe.genetics4j.core.spec.statistics.distributions.UniformDistribution;
10  
11  @Value.Immutable
12  public abstract class NeatConnectionWeight implements MutationPolicy {
13  
14  	@Value.Default
15  	public double populationMutationProbability() {
16  		return 0.80;
17  	}
18  
19  	@Value.Default
20  	public double perturbationRatio() {
21  		return 0.90;
22  	}
23  
24  	@Value.Default
25  	public Distribution perturbationDistribution() {
26  		return NormalDistribution.of(0.0, 1.0);
27  	}
28  
29  	@Value.Default
30  	public Distribution newValuesDistribution() {
31  		return UniformDistribution.build();
32  	}
33  
34  	@Value.Check
35  	protected void check() {
36  		Validate.inclusiveBetween(0.0, 1.0, populationMutationProbability());
37  	}
38  
39  	public static class Builder extends ImmutableNeatConnectionWeight.Builder {
40  	}
41  
42  	public static NeatConnectionWeight build() {
43  		return new Builder().build();
44  	}
45  
46  	public static Builder builder() {
47  		return new Builder();
48  	}
49  }