public class SteadyStateEvaluator extends SimpleEvaluator
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.
When SteadyStateEvaluator sends indivduals off to be evaluated, it stores them in an internal queue, along with the subpopulation in which they were destined. This tuple is defined by QueueIndividual.java
C_AUTO, cloneProblem, MERGE_BEST, MERGE_MEAN, MERGE_MEDIAN, mergeForm, numTests, P_CHUNK_SIZE, P_CLONE_PROBLEM, P_MERGE, P_NUM_TESTS, pool, V_AUTO, V_BEST, V_MEAN, V_MEDIAN
masterproblem, P_IAMSLAVE, P_MASTERPROBLEM, p_problem, P_PROBLEM, runComplete
Constructor and Description |
---|
SteadyStateEvaluator() |
Modifier and Type | Method and Description |
---|---|
boolean |
canEvaluate()
Returns true if we're ready to evaluate an individual.
|
void |
evaluateIndividual(EvolutionState state,
Individual ind,
int subpop)
Submits an individual to be evaluated by the Problem, and adds it and its subpopulation to the queue.
|
Individual |
getNextEvaluatedIndividual(EvolutionState state)
Returns an evaluated individual is in the queue and ready to come back to us.
|
int |
getSubpopulationOfEvaluatedIndividual()
Returns the subpopulation of the last evaluated individual returned by getNextEvaluatedIndividual, or potentially -1 if
getNextEvaluatedIndividual was never called or hasn't returned an individual yet.
|
boolean |
isIdealFitness(EvolutionState state,
Individual ind)
The SimpleEvaluator determines that a run is complete by asking
each individual in each population if he's optimal; if he
finds an individual somewhere that's optimal,
he signals that the run is complete.
|
void |
prepareToEvaluate(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.
|
evalPopChunk, evaluatePopulation, runComplete
closeContacts, initializeContacts, reinitializeContacts, setRunComplete
public void setup(EvolutionState state, Parameter base)
Setup
setup
in interface Setup
setup
in class SimpleEvaluator
public void prepareToEvaluate(EvolutionState state, int thread)
public void evaluateIndividual(EvolutionState state, Individual ind, int subpop)
public boolean canEvaluate()
public Individual getNextEvaluatedIndividual(EvolutionState state)
public int getSubpopulationOfEvaluatedIndividual()
public boolean isIdealFitness(EvolutionState state, Individual ind)