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.Immutable
11  public abstract class DoubleTournament<T extends Comparable<T>> implements SelectionPolicy {
12  
13  	@Value.Parameter
14  	public abstract Tournament<T> fitnessTournament();
15  
16  	@Value.Parameter
17  	public abstract Comparator<Individual<T>> parsimonyComparator();
18  
19  	@Value.Parameter
20  	public abstract double parsimonyTournamentSize();
21  
22  	@Value.Default
23  	public boolean doFitnessFirst() {
24  		return true;
25  	}
26  
27  	@Value.Check
28  	public void check() {
29  		Validate.inclusiveBetween(0.0d, 2.0d, parsimonyTournamentSize());
30  	}
31  
32  	public static <U extends Comparable<U>> DoubleTournament<U> of(final Tournament<U> fitnessTournament,
33  			final Comparator<Individual<U>> parsimonyComparator, final double parsimonyTournamentSize) {
34  		return ImmutableDoubleTournament.of(fitnessTournament, parsimonyComparator, parsimonyTournamentSize);
35  	}
36  }