# QuantLib_DifferentialEvolution man page

DifferentialEvolution — Differential Evolution configuration object.

## Synopsis

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

Inherits **OptimizationMethod**.

### Public Types

enum **Strategy** { **Rand1Standard**, **BestMemberWithJitter**, **CurrentToBest2Diffs**, **Rand1DiffWithPerVectorDither**, **Rand1DiffWithDither**, **EitherOrWithOptimalRecombination**, **Rand1SelfadaptiveWithRotation** }

enum **CrossoverType** { **Normal**, **Binomial**, **Exponential** }

### Public Member Functions

**DifferentialEvolution** (const Configuration &configuration=Configuration())

virtual EndCriteria::Type **minimize** (**Problem** &p, const **EndCriteria** &endCriteria)

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

## Author

Generated automatically by Doxygen for QuantLib from the source code.

## Referenced By

configuration(3), DifferentialEvolution(3) and minimize(3) are aliases of QuantLib_DifferentialEvolution(3).