QuantLib: a free/open-source library for quantitative finance
Reference manual - version 1.40
Loading...
Searching...
No Matches
DifferentialEvolution Class Reference

Differential Evolution configuration object. More...

#include <ql/math/optimization/differentialevolution.hpp>

Inheritance diagram for DifferentialEvolution:

Public Types

enum  Strategy {
  Rand1Standard , BestMemberWithJitter , CurrentToBest2Diffs , Rand1DiffWithPerVectorDither ,
  Rand1DiffWithDither , EitherOrWithOptimalRecombination , Rand1SelfadaptiveWithRotation
}
enum  CrossoverType { Normal , Binomial , Exponential }

Public Member Functions

 DifferentialEvolution (const Configuration &configuration=Configuration())
EndCriteria::Type minimize (Problem &p, const EndCriteria &endCriteria) override
 minimize the optimization problem P
const Configuration & configuration () const

Detailed Description

Differential Evolution configuration object.

The algorithm and strategy names are taken from here:

Price, K., Storn, R., 1997. Differential Evolution - A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces. Journal of Global Optimization, Kluwer Academic Publishers, 1997, Vol. 11, pp. 341 - 359.

There are seven basic strategies for creating mutant population currently implemented. Three basic crossover types are also available.

Future development: 1) base element type to be extracted 2) L differences to be used instead of fixed number 3) various weights distributions for the differences (dither etc.) 4) printFullInfo parameter usage to track the algorithm

Warning
This was reported to fail tests on Mac OS X 10.8.4.

OptimizationMethod using Differential Evolution algorithm

Examples
GlobalOptimizer.cpp.

Member Function Documentation

◆ minimize()

EndCriteria::Type minimize ( Problem & P,
const EndCriteria & endCriteria )
overridevirtual

minimize the optimization problem P

Implements OptimizationMethod.