ECF 1.5
|
Cuckoo search (CS) optimization algorithm (see http://en.wikipedia.org/wiki/Cuckoo_search) More...
#include <AlgCuckooSearch.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... | |
Protected Attributes | |
double | pa |
percentage of solutions which will be replaced (similar to mutation probability) More... | |
double | ubound |
double | lbound |
uint | numDimension |
SelectionOperatorP | selBestOp |
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... | |
Cuckoo search (CS) optimization algorithm (see http://en.wikipedia.org/wiki/Cuckoo_search)
CS algorithm accepts only FloatingPoint genotype (vector of real values). This implementation is based on: http://www.mathworks.com/matlabcentral/fileexchange/29809-cuckoo-search–cs–algorithm
The algorithm flow:
single generation { generate new solutions via Levy flights ( adding constants multiplied with normal distribution random numbers and difference between current solution and best solution) pa amount of new generated solutions are replaced with new solutions, related to the difference in solutions }
Definition at line 22 of file AlgCuckooSearch.h.
CuckooSearch::CuckooSearch | ( | ) |
Definition at line 11 of file AlgCuckooSearch.cpp.
|
virtual |
Perform a single generation on a single deme.
Must be implemented by a specific algorithm class
Implements Algorithm.
Definition at line 57 of file AlgCuckooSearch.cpp.
|
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 24 of file AlgCuckooSearch.cpp.
|
virtual |
Register algorithm's parameters (if any).
Called by the system before algorithm initialization (Algorithm::initialize)
Reimplemented from Algorithm.
Definition at line 18 of file AlgCuckooSearch.cpp.
|
protected |
Definition at line 32 of file AlgCuckooSearch.h.
|
protected |
Definition at line 33 of file AlgCuckooSearch.h.
|
protected |
percentage of solutions which will be replaced (similar to mutation probability)
Definition at line 30 of file AlgCuckooSearch.h.
|
protected |
Definition at line 34 of file AlgCuckooSearch.h.
|
protected |
Definition at line 31 of file AlgCuckooSearch.h.