Differential Evolution (DE)

class pypop7.optimizers.de.de.DE(problem, options)

Differential Evolution (DE).

This is the abstract class for all DE classes. Please use any of its instantiated subclasses to optimize the black-box problem at hand.


Originally DE was proposed to solve some challenging real-world black-box problems by Kenneth Price and Rainer Storn, recipients of IEEE Evolutionary Computation Pioneer Award 2017. Although there is few significant theoretical advance till now (to our knowledge), it is still widely used in practice, owing to its often attractive search performance on many multimodal black-box functions.

The popular and powerful SciPy library has provided an open-source Python implementation for DE.

“DE borrows the idea from Nelder&Mead of employing information from within the vector population to alter the search space.”—[Storn&Price, 1997, JGO]

  • problem (dict) –

    problem arguments with the following common settings (keys):
    • ’fitness_function’ - objective function to be minimized (func),

    • ’ndim_problem’ - number of dimensionality (int),

    • ’upper_boundary’ - upper boundary of search range (array_like),

    • ’lower_boundary’ - lower boundary of search range (array_like).

  • options (dict) –

    optimizer options with the following common settings (keys):
    • ’max_function_evaluations’ - maximum of function evaluations (int, default: np.Inf),

    • ’max_runtime’ - maximal runtime to be allowed (float, default: np.Inf),

    • ’seed_rng’ - seed for random number generation needed to be explicitly set (int);

    and with the following particular setting (key):
    • ’n_individuals’ - number of offspring, aka offspring population size (int, default: 100).


number of offspring, aka offspring population size. For DE, typically a large (often >=100) population size is used to better explore for multimodal functions. Obviously the optimal population size is problem-dependent, which can be fine-tuned in practice.




Price, K.V., 2013. Differential evolution. In Handbook of Optimization (pp. 187-214). Springer, Berlin, Heidelberg. https://link.springer.com/chapter/10.1007/978-3-642-30504-7_8

Price, K.V., Storn, R.M. and Lampinen, J.A., 2005. Differential evolution: A practical approach to global optimization. Springer Science & Business Media. https://link.springer.com/book/10.1007/3-540-31306-0

Storn, R.M. and Price, K.V. 1997. Differential evolution – a simple and efficient heuristic for global optimization over continuous spaces. Journal of Global Optimization, 11(4), pp.341–359. https://doi.org/10.1023/A:1008202821328