Pallas Solver
0.1
C++ Global Optimization Algorithms
|
#include <differential_evolution.h>
Public Member Functions | |
Options () | |
Default constructor. More... | |
Public Attributes | |
GradientLocalMinimizer::Options | local_minimizer_options |
MutationStrategyType | mutation_strategy |
CrossoverStrategyType | crossover_strategy |
PopulationInitializationType | population_initialization |
unsigned int | max_iterations |
unsigned int | population_size |
double | minimum_cost |
Vector2d | dither |
Vector | upper_bounds |
Vector | lower_bounds |
double | crossover_probability |
double | tolerance |
bool | polish_output |
bool | is_silent |
unsigned int | history_save_frequency |
Configurable options for modifying the default behaviour of the differential evolution algorithm.
|
inline |
Default constructor.
This tries to set up reasonable defaults for optimization. It is highly recommended that the user read and overwrite the defaults based on the cost function.
double pallas::DifferentialEvolution::Options::crossover_probability |
The recombination constant, should be in the range [0, 1]. Increasing this value allows a larger number of mutants to progress into the next generation, but at the risk of population stability.
CrossoverStrategyType pallas::DifferentialEvolution::Options::crossover_strategy |
The crossover strategy to use. Should be one of BINOMIAL
or EXPONENTIAL
.
Vector2d pallas::DifferentialEvolution::Options::dither |
It should be in the range [0, 2]. Dithering randomly changes the mutation constant on a generation by generation basis. The mutation constant for that generation is taken from U[min, max). Dithering can help speed convergence significantly. Increasing the mutation constant increases the search radius, but will slow down convergence.
unsigned int pallas::DifferentialEvolution::Options::history_save_frequency |
Frequency to save the state of the system. Values will be appended to a HistorySeries
contained in the optimization summary. Default is 0. If 0 then history is not saved. Otherwise, the state of the system will be appended to the series when i % history_save_frequency == 0
. If there are a large number of iterations this can lead to a lot of data being stored in memory.
bool pallas::DifferentialEvolution::Options::is_silent |
Whether to log failure information relating the to global optimization algorithm using glog.
GradientLocalMinimizer::Options pallas::DifferentialEvolution::Options::local_minimizer_options |
Contains any changes to the default options for the local minimization algorithm. See the documentation for ceres::GradientProblemSolver::Options for relevant options
Vector pallas::DifferentialEvolution::Options::lower_bounds |
Lower bounds for variables
unsigned int pallas::DifferentialEvolution::Options::max_iterations |
The maximum number of times the entire population is evolved.
double pallas::DifferentialEvolution::Options::minimum_cost |
User specified minimum cost. Minimization will halt if minimum_cost
is reached.
MutationStrategyType pallas::DifferentialEvolution::Options::mutation_strategy |
The mutation strategy to use. Should be one of BEST_1
, RAND_1
, RAND_TO_BEST_1
, BEST_2
, or RAND_2
.
bool pallas::DifferentialEvolution::Options::polish_output |
Whether the global minimum found through differential evolution should be subjected to a local minimization "polishing" step before returning the result.
PopulationInitializationType pallas::DifferentialEvolution::Options::population_initialization |
Specify how the population initialization is performed. Should be one of: LATIN_HYPERCUBE
or RANDOM
. The default is LATIN_HYPERCUBE
. Latin Hypercube sampling tries to maximize coverage of the available parameter space. RANDOM
initializes the population randomly - this has the drawback that clustering can occur, preventing the whole of parameter space being covered.
unsigned int pallas::DifferentialEvolution::Options::population_size |
The total number of individuals in the population.
double pallas::DifferentialEvolution::Options::tolerance |
When the mean of the population energies, multiplied by tolerance, divided by the standard deviation of the population energies is greater than 1 the solving process terminates: convergence = mean(pop) * tol / stdev(pop) > 1
.
Vector pallas::DifferentialEvolution::Options::upper_bounds |
Upper bounds for variables.