1 package net.bmahe.genetics4j.core.spec.combination; 2 3 import org.apache.commons.lang3.Validate; 4 import org.immutables.value.Value; 5 6 @Value.Immutable 7 public abstract class MultiPointArithmetic implements CombinationPolicy { 8 9 public static final double DEFAULT_ALPHA = 0.5d; 10 11 @Value.Parameter 12 public abstract int numCrossovers(); 13 14 @Value.Parameter 15 @Value.Default 16 public double alpha() { 17 return DEFAULT_ALPHA; 18 } 19 20 public static MultiPointArithmetic of(final int numCrossovers, final double alpha) { 21 Validate.isTrue(numCrossovers > 0); 22 return ImmutableMultiPointArithmetic.of(numCrossovers, alpha); 23 } 24 25 public static MultiPointArithmetic of(final int numCrossovers) { 26 return of(numCrossovers, DEFAULT_ALPHA); 27 } 28 }