ECF 1.5
|
(mu/rho +/, lambda) - Evolution Strategy (ES) algorithm. More...
#include <AlgEvolutionStrategy.h>
Public Member Functions | |
bool | advanceGeneration (StateP state, DemeP deme) |
Perform a single generation on a single deme. More... | |
bool | initialize (StateP state) |
Initialize the algorithm, read parameters from the system, do a sanity check. More... | |
void | registerParameters (StateP state) |
Register algorithm's parameters (if any). More... | |
Public Member Functions inherited from Algorithm | |
std::string | getName () |
Get algorithm name. Each algorithm is uniquely identified with its name. More... | |
virtual bool | isParallel () |
Is algorithm parallel (false by default for all algorithms not inheriting ParallelAlgorithm class). More... | |
bool | isImplicitParallel () |
Is algorithm run in implicit parallel mode (in development, see tutorial). More... | |
virtual bool | advanceGeneration (StateP, DemeP)=0 |
Perform a single generation on a single deme. More... | |
virtual bool | initialize (StateP) |
Initialize the algorithm, read parameters from the system, do a sanity check. More... | |
virtual void | registerParameters (StateP) |
Register algorithm's parameters (if any). More... | |
virtual bool | initializePopulation (StateP) |
Evaluate initial population (called by State::run before evolution starts). More... | |
virtual void | read () |
virtual bool | advanceGeneration (StateP state) |
Perform one generation of the algorithm on the whole population. More... | |
void | evaluate (IndividualP ind) |
Helper function: evaluate an individual. More... | |
uint | mutate (const std::vector< IndividualP > &pool) |
Helper function: send a vector of individuals to mutation. More... | |
uint | mutate (const IndividualP victim) |
Helper function: send a single individual to mutation. More... | |
void | replaceWith (IndividualP oldInd, IndividualP newInd) |
Helper function: replace an individual in current deme. More... | |
void | replaceWith (uint oldIndId, IndividualP newInd) |
Helper function: replace an individual at given position in current deme. More... | |
void | registerParallelParameters (StateP state) |
used only in parallel ECF More... | |
bool | initializeParallel (StateP state) |
used only in parallel ECF More... | |
virtual bool | advanceGeneration (StateP state) |
Parallel ECF: Perform one generation of the algorithm. | |
virtual void | bcastTermination (StateP state) |
Parallel ECF: broadcast termination to worker processes. More... | |
void | registerParallelParameters (StateP state) |
Parallel ECF: Register parameters for implicit parallel algorithm version. | |
bool | initializeParallel (StateP state) |
Parallel ECF: Initialize implicit parallel algorithm. | |
void | initializeImplicit (StateP state) |
Parallel ECF: Initialize implicit parallel mode. More... | |
bool | implicitParallelOperate (StateP state) |
Parallel ECF: Worker processes in implicit parallel algorithm. More... | |
void | evaluate (IndividualP ind) |
Parallel ECF: evaluate an individual. More... | |
void | implicitEvaluate (IndividualP ind) |
Parallel ECF: implicitly evaluate an individual (store for later evaluation in implicit parallel version). More... | |
uint | mutate (const IndividualP victim) |
Parallel ECF: immediately mutate an individual. More... | |
uint | mutate (const std::vector< IndividualP > &pool) |
Parallel ECF: mutate a vector of individuals. More... | |
uint | implicitMutate (IndividualP ind) |
Parallel ECF: implicitly mutate an individual (store for later mutation in implicit parallel version). More... | |
void | replaceWith (IndividualP oldInd, IndividualP newInd) |
Parallel ECF: replace an individual in a deme. | |
void | replaceWith (uint oldIndId, IndividualP newInd) |
Parallel ECF: replace an individual at given position in a deme. More... | |
bool | mate (IndividualP p1, IndividualP p2, IndividualP child) |
Helper function: crossover two individuals. More... | |
IndividualP | copy (IndividualP source) |
Helper function: make a copy of an individual. More... | |
bool | removeFrom (IndividualP victim, std::vector< IndividualP > &pool) |
Helper function: remove victim from pool of individual pointers. More... | |
bool | isMember (IndividualP single, std::vector< IndividualP > &pool) |
Helper function: check if individual is in the pool. More... | |
Static Protected Member Functions | |
static bool | compare (IndividualP first, IndividualP second) |
Protected Attributes | |
uint | lambda_ |
number of offspring More... | |
uint | rho_ |
number of parents (1 or 2) More... | |
uint | mu_ |
the size of the parent population More... | |
uint | subPopulations_ |
how many parent populations are in a deme More... | |
bool | plusSelection_ |
type of selection (plus or comma) More... | |
SelectionOperatorP | selBestOp_ |
SelectionOperatorP | selRandomOp_ |
Protected Attributes inherited from Algorithm | |
DemeP | activeDeme_ |
std::string | name_ |
algorithm name More... | |
bool | bImplicitParallel_ |
implicit parallel flag More... | |
std::vector< SelectionOperatorP > | selectionOp |
sel. operators used by algorithm More... | |
std::vector< IndividualP > | requests_ |
std::vector< IndividualP > | stored_ |
individual vectors for implicit evaluation More... | |
std::vector< uint > | requestIds_ |
individual indexes for implicit evaluation More... | |
std::vector< IndividualP > | demeCopy_ |
std::vector< IndividualP > | myJob_ |
worker's individual vector More... | |
CommunicatorP | comm_ |
uint | jobSize_ |
uint | totalEvaluations_ |
uint | wastedEvaluations_ |
bool | bImplicitEvaluation_ |
implicit evaluation flag More... | |
bool | bImplicitMutation_ |
implicit mutation flag More... | |
bool | bSynchronized_ |
is implicit paralelization synchronous More... | |
SelectionOperatorP | selBestOp |
std::vector< IndividualP > | requestsMut_ |
std::vector< IndividualP > | receivedMut_ |
individual vectors for implicit mutation More... | |
std::vector< uint > | requestMutIds_ |
individual indexes for implicit mutation More... | |
IndividualP | currentBest_ |
std::vector< IndividualP > | storedInds_ |
std::vector< std::vector< IndividualP > > | sentInds_ |
individuals sent for evaluation More... | |
std::vector< bool > | isConsistent_ |
is individual (genotype-fitness pair) consistent More... | |
Additional Inherited Members | |
Public Attributes inherited from Algorithm | |
CrossoverP | crossover_ |
sptr to container of crossover operators (set by the system) More... | |
MutationP | mutation_ |
sptr to container of mutation operators (set by the system) More... | |
EvaluateOpP | evalOp_ |
sptr to evaluation operator (set by the system) More... | |
StateP | state_ |
Protected Member Functions inherited from Algorithm | |
bool | registerParameter (StateP state, std::string name, voidP value, enum ECF::type T, std::string description="") |
Helper function: register a single parameter with the system. More... | |
voidP | getParameterValue (StateP state, std::string name) |
Helper function: get parameter value from the system. More... | |
void | storeIndividual (IndividualP) |
stores the individual (if it is consistent), resets consistency flag More... | |
void | storeGenotypes (std::vector< IndividualP > &) |
adds genotypes of individuals to 'sent' repository More... | |
void | setConsistency (IndividualP) |
denotes current individual as consistent More... | |
void | restoreIndividuals (std::vector< uint >) |
restores individuals whose fitness is received More... | |
void | restorePopulation () |
restores inconsistent individuals to last consistent state More... | |
(mu/rho +/, lambda) - Evolution Strategy (ES) algorithm.
This algorithm is genotype independent (it can be used with any Genotype).
The algorithm parameters are:
Since the ECF defines "population.size" independently of the algorithm, this implementation actually runs multiple ES parent populations; the population.size must therefore be a multiple of parent pool size (mu). For instance, if mu = 5 and population.size = 30, then 6 ES subpopulations will be executed (no migration).
The algorithm flow:
subpopulations = population.size / mu; single generation { repeat(for every subpopulation) { add mu individuals to the parent pool; create lambda offspring using random rho parents for each; if comma selection create new parent pool with mu best from offspring pool; else create new parent pool with mu best from offspring and parents pool; } }
Definition at line 40 of file AlgEvolutionStrategy.h.
EvolutionStrategy::EvolutionStrategy | ( | ) |
Definition at line 9 of file AlgEvolutionStrategy.cpp.
|
virtual |
Perform a single generation on a single deme.
Must be implemented by a specific algorithm class
Implements Algorithm.
Definition at line 87 of file AlgEvolutionStrategy.cpp.
|
inlinestaticprotected |
Definition at line 56 of file AlgEvolutionStrategy.h.
|
virtual |
Initialize the algorithm, read parameters from the system, do a sanity check.
Called by the system before the algorithm starts (Algorithm::advanceGeneration)
Reimplemented from Algorithm.
Definition at line 33 of file AlgEvolutionStrategy.cpp.
|
virtual |
Register algorithm's parameters (if any).
Called by the system before algorithm initialization (Algorithm::initialize)
Reimplemented from Algorithm.
Definition at line 20 of file AlgEvolutionStrategy.cpp.
|
protected |
number of offspring
Definition at line 49 of file AlgEvolutionStrategy.h.
|
protected |
the size of the parent population
Definition at line 51 of file AlgEvolutionStrategy.h.
|
protected |
type of selection (plus or comma)
Definition at line 53 of file AlgEvolutionStrategy.h.
|
protected |
number of parents (1 or 2)
Definition at line 50 of file AlgEvolutionStrategy.h.
|
protected |
Definition at line 54 of file AlgEvolutionStrategy.h.
|
protected |
Definition at line 54 of file AlgEvolutionStrategy.h.
|
protected |
how many parent populations are in a deme
Definition at line 52 of file AlgEvolutionStrategy.h.