Watchmaker Framework for Evolutionary Computation API
(Version 0.7.1)

org.uncommons.watchmaker.framework
Interface EvolutionEngine<T>

Type Parameters:
T - The type of entity evolved by the evolution engine.
All Known Implementing Classes:
AbstractEvolutionEngine, EvolutionStrategyEngine, GenerationalEvolutionEngine, SteadyStateEvolutionEngine

public interface EvolutionEngine<T>

Operations for classes that provide an evolution implementation.

Author:
Daniel Dyer

Method Summary
 void addEvolutionObserver(EvolutionObserver<? super T> observer)
          Adds a listener to receive status updates on the evolution progress.
 T evolve(int populationSize, int eliteCount, Collection<T> seedCandidates, TerminationCondition... conditions)
          Execute the evolutionary algorithm until one of the termination conditions is met, then return the fittest candidate from the final generation.
 T evolve(int populationSize, int eliteCount, TerminationCondition... conditions)
          Execute the evolutionary algorithm until one of the termination conditions is met, then return the fittest candidate from the final generation.
 List<EvaluatedCandidate<T>> evolvePopulation(int populationSize, int eliteCount, Collection<T> seedCandidates, TerminationCondition... conditions)
          Execute the evolutionary algorithm until one of the termination conditions is met, then return all of the candidates from the final generation.
 List<EvaluatedCandidate<T>> evolvePopulation(int populationSize, int eliteCount, TerminationCondition... conditions)
          Execute the evolutionary algorithm until one of the termination conditions is met, then return all of the candidates from the final generation.
 List<TerminationCondition> getSatisfiedTerminationConditions()
          Returns a list of all TerminationConditions that are satisfied by the current state of the evolution engine.
 void removeEvolutionObserver(EvolutionObserver<? super T> observer)
          Removes an evolution progress listener.
 

Method Detail

evolve

T evolve(int populationSize,
         int eliteCount,
         TerminationCondition... conditions)
Execute the evolutionary algorithm until one of the termination conditions is met, then return the fittest candidate from the final generation. To return the entire population rather than just the fittest candidate, use the evolvePopulation(int, int, TerminationCondition[]) method instead.

Parameters:
populationSize - The number of candidate solutions present in the population at any point in time.
eliteCount - The number of candidates preserved via elitism. In elitism, a sub-set of the population with the best fitness scores are preserved unchanged in the subsequent generation. Candidate solutions that are preserved unchanged through elitism remain eligible for selection for breeding the remainder of the next generation. This value must be non-negative and less than the population size. A value of zero means that no elitism will be applied.
conditions - One or more conditions that may cause the evolution to terminate.
Returns:
The fittest solution found by the evolutionary process.
See Also:
evolve(int, int, Collection, TerminationCondition[])

evolve

T evolve(int populationSize,
         int eliteCount,
         Collection<T> seedCandidates,
         TerminationCondition... conditions)
Execute the evolutionary algorithm until one of the termination conditions is met, then return the fittest candidate from the final generation. To return the entire population rather than just the fittest candidate, use the evolvePopulation(int, int, Collection, TerminationCondition[]) method instead.

Parameters:
populationSize - The number of candidate solutions present in the population at any point in time.
eliteCount - The number of candidates preserved via elitism. In elitism, a sub-set of the population with the best fitness scores are preserved unchanged in the subsequent generation. Candidate solutions that are preserved unchanged through elitism remain eligible for selection for breeding the remainder of the next generation. This value must be non-negative and less than the population size. A value of zero means that no elitism will be applied.
seedCandidates - A set of candidates to seed the population with. The size of this collection must be no greater than the specified population size.
conditions - One or more conditions that may cause the evolution to terminate.
Returns:
The fittest solution found by the evolutionary process.
See Also:
evolve(int,int,TerminationCondition[])

evolvePopulation

List<EvaluatedCandidate<T>> evolvePopulation(int populationSize,
                                             int eliteCount,
                                             TerminationCondition... conditions)
Execute the evolutionary algorithm until one of the termination conditions is met, then return all of the candidates from the final generation. To return just the fittest candidate rather than the entire population, use the evolve(int, int, TerminationCondition[]) method instead.

Parameters:
populationSize - The number of candidate solutions present in the population at any point in time.
eliteCount - The number of candidates preserved via elitism. In elitism, a sub-set of the population with the best fitness scores are preserved unchanged in the subsequent generation. Candidate solutions that are preserved unchanged through elitism remain eligible for selection for breeding the remainder of the next generation. This value must be non-negative and less than the population size. A value of zero means that no elitism will be applied.
conditions - One or more conditions that may cause the evolution to terminate.
Returns:
The fittest solution found by the evolutionary process.
See Also:
evolve(int, int, Collection, TerminationCondition[]), evolvePopulation(int, int, Collection, TerminationCondition[])

evolvePopulation

List<EvaluatedCandidate<T>> evolvePopulation(int populationSize,
                                             int eliteCount,
                                             Collection<T> seedCandidates,
                                             TerminationCondition... conditions)
Execute the evolutionary algorithm until one of the termination conditions is met, then return all of the candidates from the final generation. To return just the fittest candidate rather than the entire population, use the evolve(int, int, Collection, TerminationCondition[]) method instead.

Parameters:
populationSize - The number of candidate solutions present in the population at any point in time.
eliteCount - The number of candidates preserved via elitism. In elitism, a sub-set of the population with the best fitness scores are preserved unchanged in the subsequent generation. Candidate solutions that are preserved unchanged through elitism remain eligible for selection for breeding the remainder of the next generation. This value must be non-negative and less than the population size. A value of zero means that no elitism will be applied.
seedCandidates - A set of candidates to seed the population with. The size of this collection must be no greater than the specified population size.
conditions - One or more conditions that may cause the evolution to terminate.
Returns:
The fittest solution found by the evolutionary process.
See Also:
evolve(int, int, Collection, TerminationCondition[]), evolvePopulation(int, int, Collection, TerminationCondition[])

addEvolutionObserver

void addEvolutionObserver(EvolutionObserver<? super T> observer)
Adds a listener to receive status updates on the evolution progress.

Parameters:
observer - An evolution observer call-back.
See Also:
removeEvolutionObserver(EvolutionObserver)

removeEvolutionObserver

void removeEvolutionObserver(EvolutionObserver<? super T> observer)
Removes an evolution progress listener.

Parameters:
observer - An evolution observer call-back.
See Also:
addEvolutionObserver(EvolutionObserver)

getSatisfiedTerminationConditions

List<TerminationCondition> getSatisfiedTerminationConditions()
Returns a list of all TerminationConditions that are satisfied by the current state of the evolution engine. Usually this list will contain only one item, but it is possible that mutliple termination conditions will become satisfied at the same time. In this case the condition objects in the list will be in the same order that they were specified when passed to the engine. If the evolution has not yet terminated (either because it is still in progress or because it hasn't even been started) then an IllegalStateException will be thrown. If the evolution terminated because the request thread was interrupted before any termination conditions were satisfied then this method will return an empty list.

Returns:
A list of statisfied conditions. The list is guaranteed to be non-null. The list may be empty because it is possible for evolution to terminate without any conditions being matched. The only situation in which this occurs is when the request thread is interrupted.
Throws:
IllegalStateException - If this method is invoked on an evolution engine before evolution is started or while it is still in progress.

Watchmaker Framework for Evolutionary Computation API
(Version 0.7.1)