dignea
1.0.0
Diverse Instance Generator with Novelty Search and Evolutionary Algorithms
|
Class to define an Abstract Evolutionary Algorithm. This is the base skeleton for future extensions. More...
#include <AbstractSolver.h>
Public Member Functions | |
AbstractSolver () | |
Construct a new Abstract EA object with default parameter values. More... | |
AbstractSolver (const int &maxEvals, const int &popsize) | |
AbstractSolver constructor which initialises the parameters maxEvalautions and populationSize. More... | |
AbstractSolver (unique_ptr< PopulationEvaluator< S >>, const int &maxEvals, const int &popsize) | |
AbstractSolver constructor which initialises the parameters maxEvalautions, the populationSize and the evaluator approach. More... | |
virtual void | run ()=0 |
Main method of the EA. Runs the algorithm but must be implemented in the subclasses. | |
virtual string | getName () const =0 |
Returns the name of the algorithm, this is used in the to_json method. Must be implemented in the subclasses. More... | |
virtual string | getID () const =0 |
Returns the identificator of the algorithm, this is used in the to_json method. Must be implemented in the subclasses. It should return the acronym of useful id for a particular configuration. More... | |
virtual json | to_json () const |
Generates and returns the JSON representation of the EA. More... | |
virtual Front< S > | getResults () const =0 |
Returns a Front object with all the solutions of the evolutionary process. This method must be implemented in the subclasses. More... | |
int | getPopulationSize () const |
Get the population size. More... | |
void | setPopulationSize (int pSize) |
Setter to update the population size. More... | |
double | getElapsedTime () const |
Get the elapsed time of the evolutionary process. More... | |
const vector< S > & | getPopulation () const |
Gets a reference of the population. More... | |
int | getMaxEvaluations () const |
Get the maximum number of evaluations to perform. More... | |
void | setMaxEvaluations (int maxEval) |
Set a new maximum number of evaluations to perform. More... | |
const Problem< S > * | getProblem () const |
Gets a pointer to the problem which is being solved. More... | |
virtual void | setProblem (shared_ptr< Problem< S >> prob) |
Set the new problem to solve. Uses a shared_ptr pointer which updates the reference counter. Does no take the ownership. More... | |
virtual void | setProblem (Problem< S > *prob) |
Set the new problem to solve. Uses a raw pointer and takes the ownership of the object. More... | |
PopulationEvaluator< S > * | getEvaluator () const |
Gets a pointer to the population evaluator system. More... | |
void | setEvaluator (unique_ptr< PopulationEvaluator< S >> eval) |
Updates the population evaluator system with the unique_ptr. The method takes the ownership of the object behind. More... | |
int | getPerformedEvaluations () const |
Get the performed evaluations. More... | |
void | setPerformedEvaluations (int pEvals) |
Set the Performed Evaluations. Useful for the updateProgress method. More... | |
void | setPopulation (const vector< S > &pop) |
Set the Population. More... | |
virtual Evolution< S > | getEvolution () const |
Get the Evolution data. More... | |
int | getPrintingInterval () const |
Get the interval of checkpoints. More... | |
Static Public Attributes | |
static const int | DEFAULT_POPULATION_SIZE = 100 |
Default population size equal to 100 individuals. More... | |
static const int | DEFAULT_EVALUATIONS_LIMIT = 100000 |
Default evaluation limit equal to 100000 evaluations. More... | |
static const std::string | NAME = "Algorithm" |
static const std::string | MAX_EVALUATIONS = "Max Evaluations" |
static const std::string | POP_SIZE = "Population Size" |
static const std::string | ELAPSED_TIME = "Elapsed Time" |
static const std::string | EVALUATOR = "Evaluator" |
static const int | EVOLUTION_SIZE = 10 |
Protected Member Functions | |
virtual void | initProgress ()=0 |
Initialises the evolutionary progress. This method must be implemented in the subclasses and should perform all necessary steps before the main loop. | |
virtual void | updateProgress ()=0 |
Method which updates the evolutionary progress. This method must be implemented in the subclasses and it should perform thinks like updating the number of performed evaluations, etc. | |
virtual void | finishProgress ()=0 |
Method which finishes the evolutionary progress. This method must be implemented in the subclasses and it should perform thinks like computing the execution time, etc. | |
virtual bool | isStoppingConditionReached ()=0 |
Check whether the number of performed evaluations has reached the maximum allowed. Must be implemented in the subclasses to adapt special cases. More... | |
virtual void | createInitialPopulation ()=0 |
Creates the initial population of individuals. Must be implemented in the subclasses to adapt special cases. | |
virtual void | evaluatePopulation (vector< S > &pop)=0 |
Evaluates the entire population of solutions. This is a virtual method that must be implemented in the subclasses to adapt special cases. | |
virtual void | updateEvolution (vector< S > &pop) |
virtual void | updateEvolution (const int &checkpoint, vector< S > &) |
Protected Attributes | |
int | maxEvaluations |
int | performedEvaluations |
int | populationSize |
vector< S > | population |
shared_ptr< Problem< S > > | problem |
unique_ptr< PopulationEvaluator< S > > | evaluator |
Evolution< S > | evolution |
AvgEvolution< S > | avgEvolution |
std::chrono::system_clock::time_point | startTime |
std::chrono::system_clock::time_point | endTime |
double | elapsedTime |
int | nextCheckpoint |
int | evolutionInterval |
Class to define an Abstract Evolutionary Algorithm. This is the base skeleton for future extensions.
S | Type of individuals |
AbstractSolver< S >::AbstractSolver |
Construct a new Abstract EA object with default parameter values.
S |
AbstractSolver< S >::AbstractSolver | ( | const int & | maxEvals, |
const int & | popsize | ||
) |
AbstractSolver constructor which initialises the parameters maxEvalautions and populationSize.
S |
maxEvals | Maximum number of evaluations to perform |
popsize | Number of individuals in the population |
AbstractSolver< S >::AbstractSolver | ( | unique_ptr< PopulationEvaluator< S >> | eval, |
const int & | maxEvals, | ||
const int & | popsize | ||
) |
AbstractSolver constructor which initialises the parameters maxEvalautions, the populationSize and the evaluator approach.
S |
eval | Evaluator approach (Sequential, parallel, OMP, etc) |
maxEvals | Maximum number of evaluations to perform |
popsize | Number of individuals in the population |
|
inline |
Get the elapsed time of the evolutionary process.
|
inline |
Gets a pointer to the population evaluator system.
|
virtual |
Get the Evolution data.
Returns the data of the evolution process. Includes the best fitness obtained at each evaluated checkpoint.
S |
|
pure virtual |
Returns the identificator of the algorithm, this is used in the to_json method. Must be implemented in the subclasses. It should return the acronym of useful id for a particular configuration.
|
inline |
Get the maximum number of evaluations to perform.
|
pure virtual |
Returns the name of the algorithm, this is used in the to_json method. Must be implemented in the subclasses.
|
inline |
Get the performed evaluations.
|
inline |
Gets a reference of the population.
|
inline |
Get the population size.
|
inline |
Get the interval of checkpoints.
|
inline |
Gets a pointer to the problem which is being solved.
|
pure virtual |
|
protectedpure virtual |
Check whether the number of performed evaluations has reached the maximum allowed. Must be implemented in the subclasses to adapt special cases.
|
inline |
Updates the population evaluator system with the unique_ptr. The method takes the ownership of the object behind.
eval |
|
inline |
Set a new maximum number of evaluations to perform.
maxEval |
|
inline |
Set the Performed Evaluations. Useful for the updateProgress method.
pEvals |
void AbstractSolver< S >::setPopulation | ( | const vector< S > & | pop | ) |
Set the Population.
Set the population of the EA.
pop | |
pop | New population to the EA. |
void AbstractSolver< S >::setPopulationSize | ( | int | pSize | ) |
Setter to update the population size.
S |
pSize | New size of the population |
|
inlinevirtual |
Set the new problem to solve. Uses a raw pointer and takes the ownership of the object.
prob |
|
inlinevirtual |
Set the new problem to solve. Uses a shared_ptr pointer which updates the reference counter. Does no take the ownership.
prob |
|
virtual |
Generates and returns the JSON representation of the EA.
S |
|
protectedvirtual |
Updates the evolution results of the algorithm for the given checkpoint
Problem | |
S |
checkpoint | Checkpoint in the evolution process |
solutions | solutions Population of solutions in the checkpoin to collect data from |
|
protectedvirtual |
Updates the evolution results of the algorithm for the given checkpoint
Problem | |
S |
solutions | Population of solutions in the checkpoin to collect data from |
|
static |
Default evaluation limit equal to 100000 evaluations.
S |
|
static |
Default population size equal to 100 individuals.
S |
|
protected |
Number of evaluations to perform by the EA
|
protected |
Number of individuals in the population