View Javadoc
1   package net.bmahe.genetics4j.core.replacement;
2   
3   import java.util.List;
4   
5   import org.apache.commons.lang3.Validate;
6   
7   import net.bmahe.genetics4j.core.Genotype;
8   import net.bmahe.genetics4j.core.Population;
9   import net.bmahe.genetics4j.core.selection.Selector;
10  import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
11  import net.bmahe.genetics4j.core.spec.replacement.GenerationalReplacement;
12  
13  public class GenerationalReplacementImpl<T extends Comparable<T>> implements ReplacementStrategyImplementor<T> {
14  
15  	private final GenerationalReplacement generationalReplacementSpec;
16  	private final Selector<T> offspringSelector;
17  
18  	public GenerationalReplacementImpl(final GenerationalReplacement _elistismSpec,
19  			final Selector<T> _offspringSelector) {
20  		Validate.notNull(_elistismSpec);
21  
22  		this.generationalReplacementSpec = _elistismSpec;
23  		this.offspringSelector = _offspringSelector;
24  	}
25  
26  	@Override
27  	public Population<T> select(final AbstractEAConfiguration<T> eaConfiguration, final int numIndividuals,
28  			final List<Genotype> population, final List<T> populationScores, final List<Genotype> offsprings,
29  			final List<T> offspringScores) {
30  		Validate.notNull(eaConfiguration);
31  		Validate.isTrue(numIndividuals > 0);
32  		Validate.notNull(population);
33  		Validate.notNull(populationScores);
34  		Validate.isTrue(population.size() == populationScores.size());
35  		Validate.notNull(offsprings);
36  		Validate.notNull(offspringScores);
37  		Validate.isTrue(offsprings.size() == offspringScores.size());
38  
39  		final Population<T> selected = new Population<>();
40  
41  		final Population<T> selectedOffspring = offspringSelector
42  				.select(eaConfiguration, numIndividuals, offsprings, offspringScores);
43  		selected.addAll(selectedOffspring);
44  
45  		return selected;
46  	}
47  }