EvoAl supports different optimisers, which are described in this section. While the algorithms work differently, they have common aspects. The following describes these common aspects, while the optimiser-specific aspects are described in the corresponding sub-pages.
flowchart TD
initial[Initial Population Generation]
fitness[Fitness Evaluation]
stopping[\Check stopping criteria/]
selection[Offspring Selection]
alteration[Alteration Process]
result[\Resulting Individual\]
initial --> fitness
fitness --> stopping
stopping -->|false| selection
selection --> alteration
alteration --> fitness
stopping -->|true| result
The following definitions show the common aspects of all algorithms:
/**
* Abstract base type for optimisation algorithms.
*/
abstract type algorithm {
/**
* Source for initial candidates.
*/
'initialisation' : instance 'initial-population';
/**
* Extension to the optimisation function defined in the corresponding problem.
*/
'optimisation-function' : instance 'fitness-function';
/**
* Comparator to use for comparing results of the optimisation function.
*/
'comparator' : instance comparator;
}
Initial Population Generation
All population-based optimisation algorithms require an initial population. The generation of this population depends on your use case, and different strategies can be followed. The most straightforward approach is to generate the individuals randomly.
de.evoal.core.optimisation
)
Random Initial Population (The random initial population will generate random individuals. The generator will check each generated individual for violations of the stated constraints, ensuring that only valid individuals are generated. The specification of the random initial population generator is the following:
/**
* Chooses the initial population randomly from the search space. The selection
* process respects the boundaries defined at the data definition level.
*/
type 'random-population' extends 'initial-population' {
}
de.evoal.surrogate.optimisation
)
Training Population (If you are working with a black box optimisation function you have trained, you can use the training data as individuals of the initial population. If your search space has many constraints, this might be a better starting point than random individuals. The data file containing your training data can be specified using the command line parameter -Bsurrogate:training-data=<file-name>
. The specification of the training data-based initial population generator is the following:
/**
* Use training data as initial population.
*/
type training extends 'initial-population' {
}