public abstract class Breeder extends java.lang.Object implements Singleton
Breeders typically do their work by applying a Species' BreedingPipelines on subpopulations of that species to produce new individuals for those subpopulations.
Breeders may be multithreaded. The number of threads they may spawn (excepting a parent "gathering" thread) is governed by the EvolutionState's breedthreads value.
Be careful about spawning threads -- this system has no few synchronized methods for efficiency's sake, so you must either divvy up breeding in a thread-safe fashion and assume that all individuals in the current population are read-only (which you may assume for a generational breeder which needs to return a whole new population each generation), or otherwise you must obtain the appropriate locks on individuals in the population and other objects as necessary.
Constructor and Description |
---|
Breeder() |
Modifier and Type | Method and Description |
---|---|
abstract Population |
breedPopulation(EvolutionState state)
Breeds state.population, returning a new population.
|
public abstract Population breedPopulation(EvolutionState state)