ec.steadystate
Class SteadyStateBreeder

java.lang.Object
  extended by ec.Breeder
      extended by ec.simple.SimpleBreeder
          extended by ec.steadystate.SteadyStateBreeder
All Implemented Interfaces:
Setup, Singleton, java.io.Serializable

public class SteadyStateBreeder
extends SimpleBreeder

This subclass of Breeder performs the evaluation portion of Steady-State Evolution and (in distributed form) Asynchronous Evolution. The procedure is as follows. We begin with an empty Population and one by one create new Indivdiuals and send them off to be evaluated. In basic Steady-State Evolution the individuals are immediately evaluated and we wait for them; but in Asynchronous Evolution the individuals are evaluated for however long it takes and we don't wait for them to finish. When individuals return they are added to the Population until it is full. No duplicate individuals are allowed.

At this point the system switches to its "steady state": individuals are bred from the population one by one, and sent off to be evaluated. Once again, in basic Steady-State Evolution the individuals are immediately evaluated and we wait for them; but in Asynchronous Evolution the individuals are evaluated for however long it takes and we don't wait for them to finish. When an individual returns, we mark an individual in the Population for death, then replace it with the new returning individual. Note that during the steady-state, Asynchronous Evolution could be still sending back some "new" individuals created during the initialization phase, not "bred" individuals.

The determination of how an individual is marked for death is done by the SteadyStateBreeder. This is a SelectionMethod. Note that this SelectionMethod probably should not be selecting for the "fittest" individuals, but rather for either random individuals (the standard approach) or for "bad" individuals.

Parameters

deselector
classname, inherits and != ec.SelectionMethod
(The SelectionMethod used to pick individuals for death)

See Also:
Serialized Form

Field Summary
static java.lang.String P_DESELECTOR
           
 
Fields inherited from class ec.simple.SimpleBreeder
elite, P_ELITE, P_REEVALUATE_ELITES, reevaluateElites
 
Constructor Summary
SteadyStateBreeder()
          Do we allow duplicates?
 
Method Summary
 Individual breedIndividual(EvolutionState state, int subpop, int thread)
           
 void finishPipelines(EvolutionState state)
           
 void individualReplaced(SteadyStateEvolutionState state, int subpopulation, int thread, int individual)
          Called whenever individuals have been replaced by new individuals in the population.
 void prepareToBreed(EvolutionState state, int thread)
           
 void setup(EvolutionState state, Parameter base)
          Sets up the object by reading it from the parameters stored in state, built off of the parameter base base.
 void sourcesAreProperForm(SteadyStateEvolutionState state, BreedingPipeline[] breedingPipelines)
          Called to check to see if the breeding sources are correct -- if you use this method, you must call state.output.exitIfErrors() immediately afterwards.
 
Methods inherited from class ec.simple.SimpleBreeder
breedPopChunk, breedPopulation, computeSubpopulationLength, loadElites, unmarkElitesEvaluated
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

P_DESELECTOR

public static final java.lang.String P_DESELECTOR
See Also:
Constant Field Values
Constructor Detail

SteadyStateBreeder

public SteadyStateBreeder()
Do we allow duplicates?

Method Detail

setup

public void setup(EvolutionState state,
                  Parameter base)
Description copied from interface: Setup
Sets up the object by reading it from the parameters stored in state, built off of the parameter base base. If an ancestor implements this method, be sure to call super.setup(state,base); before you do anything else.

Specified by:
setup in interface Setup
Overrides:
setup in class SimpleBreeder

sourcesAreProperForm

public void sourcesAreProperForm(SteadyStateEvolutionState state,
                                 BreedingPipeline[] breedingPipelines)
Called to check to see if the breeding sources are correct -- if you use this method, you must call state.output.exitIfErrors() immediately afterwards.


individualReplaced

public void individualReplaced(SteadyStateEvolutionState state,
                               int subpopulation,
                               int thread,
                               int individual)
Called whenever individuals have been replaced by new individuals in the population.


finishPipelines

public void finishPipelines(EvolutionState state)

prepareToBreed

public void prepareToBreed(EvolutionState state,
                           int thread)

breedIndividual

public Individual breedIndividual(EvolutionState state,
                                  int subpop,
                                  int thread)