View Javadoc
1   package net.bmahe.genetics4j.core.spec.selection;
2   
3   import java.util.Comparator;
4   
5   import org.apache.commons.lang3.Validate;
6   import org.immutables.value.Value;
7   
8   import net.bmahe.genetics4j.core.Individual;
9   
10  @Value.Style(overshadowImplementation = true)
11  @Value.Immutable
12  public interface ProportionalTournament<T extends Comparable<T>> extends SelectionPolicy {
13  
14  	@Value.Parameter
15  	int numCandidates();
16  
17  	@Value.Parameter
18  	double proportionFirst();
19  
20  	@Value.Parameter
21  	Comparator<Individual<T>> firstComparator();
22  
23  	@Value.Parameter
24  	Comparator<Individual<T>> secondComparator();
25  
26  	@Value.Check
27  	default void check() {
28  		Validate.inclusiveBetween(0.0, 1.0, proportionFirst());
29  	}
30  
31  	public static <T extends Comparable<T>> ProportionalTournament<T> of(int numCandidates, double proportionFirst,
32  			Comparator<Individual<T>> firstComparator, Comparator<Individual<T>> secondComparator) {
33  		return ImmutableProportionalTournament.of(numCandidates, proportionFirst, firstComparator, secondComparator);
34  	}
35  
36  }