ec.steadystate
Class SteadyStateEvolutionState

java.lang.Object
  extended by ec.EvolutionState
      extended by ec.steadystate.SteadyStateEvolutionState
All Implemented Interfaces:
Setup, Singleton, java.io.Serializable

public class SteadyStateEvolutionState
extends EvolutionState

This subclass of EvolutionState implements basic 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.

SteadyStateEvolutionState will run either for some N "generations" or for some M evaluations of individuals. A "generation" is defined as a Population's worth of evaluations. If you do not specify the number of evaluations (the M), then SteadyStateEvolutionState will use the standard generations parameter defined in EvolutionState.

Parameters

evaluations
int >= 1
(maximal number of evaluations to run.)

See Also:
Serialized Form

Field Summary
 long evaluations
          How many evaluations have we run so far?
protected  boolean firstTime
          First time calling evolve
 boolean generationBoundary
          Did we just start a new generation?
 int generationSize
          how big is a generation? Set to the size of subpopulation 0 of the initial population.
 long numEvaluations
          How many evaluations should we run for? If set to UNDEFINED (0), we run for the number of generations instead.
static java.lang.String P_NUMEVALUATIONS
          base parameter for steady-state
static long UNDEFINED
           
 
Fields inherited from class ec.EvolutionState
breeder, breedthreads, C_STARTED_FRESH, C_STARTED_FROM_CHECKPOINT, checkpoint, checkpointModulo, checkpointPrefix, evalthreads, evaluator, exchanger, finisher, generation, initializer, job, numGenerations, output, P_BREEDER, P_CHECKPOINT, P_CHECKPOINTMODULO, P_CHECKPOINTPREFIX, P_EVALUATOR, P_EXCHANGER, P_FINISHER, P_GENERATIONS, P_INITIALIZER, P_QUITONRUNCOMPLETE, P_STATISTICS, parameters, population, quitOnRunComplete, R_FAILURE, R_NOTDONE, R_SUCCESS, random, randomSeedOffset, runtimeArguments, statistics
 
Constructor Summary
SteadyStateEvolutionState()
           
 
Method Summary
 int evolve()
           
 void finish(int result)
           
 void setup(EvolutionState state, Parameter base)
          Unlike for other setup() methods, ignore the base; it will always be null.
 void startFresh()
           
 
Methods inherited from class ec.EvolutionState
resetFromCheckpoint, run, startFromCheckpoint
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

P_NUMEVALUATIONS

public static final java.lang.String P_NUMEVALUATIONS
base parameter for steady-state

See Also:
Constant Field Values

generationBoundary

public boolean generationBoundary
Did we just start a new generation?


numEvaluations

public long numEvaluations
How many evaluations should we run for? If set to UNDEFINED (0), we run for the number of generations instead.


UNDEFINED

public static long UNDEFINED

generationSize

public int generationSize
how big is a generation? Set to the size of subpopulation 0 of the initial population.


evaluations

public long evaluations
How many evaluations have we run so far?


firstTime

protected boolean firstTime
First time calling evolve

Constructor Detail

SteadyStateEvolutionState

public SteadyStateEvolutionState()
Method Detail

setup

public void setup(EvolutionState state,
                  Parameter base)
Description copied from class: EvolutionState
Unlike for other setup() methods, ignore the base; it will always be null.

Specified by:
setup in interface Setup
Overrides:
setup in class EvolutionState
See Also:
Prototype.setup(EvolutionState,Parameter)

startFresh

public void startFresh()
Overrides:
startFresh in class EvolutionState

evolve

public int evolve()
Overrides:
evolve in class EvolutionState

finish

public void finish(int result)
Overrides:
finish in class EvolutionState
Parameters:
result -