Class Breeder
- All Implemented Interfaces:
Setup,Singleton,Serializable
- Direct Known Subclasses:
AMALGAMBreeder,CMAESBreeder,DEBreeder,DOVSBreeder,MuCommaLambdaBreeder,NEATBreeder,PBILBreeder,PSOBreeder,SimpleBreeder
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.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionbooleanThe flag to let the coevolutionary system know that we're doing sequential breeding. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract PopulationbreedPopulation(EvolutionState state) Breeds state.population, returning a new population.booleanshouldBreedSubpop(EvolutionState state, int subpop, int threadnum) Returns true if we're doing sequential breeding and it's the subpopulation's turn (round robin, one subpopulation per generation).
-
Field Details
-
sequentialBreeding
public boolean sequentialBreedingThe flag to let the coevolutionary system know that we're doing sequential breeding. You shouldn't play with this flag unless you're SimpleBreeder -- keep it at false otherwise.
-
-
Constructor Details
-
Breeder
public Breeder()
-
-
Method Details
-
breedPopulation
Breeds state.population, returning a new population. In general, state.population should not be modified. -
shouldBreedSubpop
Returns true if we're doing sequential breeding and it's the subpopulation's turn (round robin, one subpopulation per generation). See SimpleBreeder for more information. By default this method just returns TRUE (which should be fine in most cases).
-