Differential Evolution (DE)

class pypop7.optimizers.de.de.DE(problem, options)[source]

Differential Evolution (DE).

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

Note

DE was proposed to solve some challenging real-world black-box problems by Kenneth Price and Rainer Storn, two 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. “DE borrows the idea from Nelder&Mead of employing information from within the vector population to alter the search space.”—[Storn&Price, 1997, JGO]

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

For some interesting applications of DE, please refer to [Weichart et al., 2024, Psychological Review], [LaBerge et al., 2024, Nature Photonics (UT Austin, TU Dresden, Fermilab, etc.)], [Olschewski et al., 2024, PNAS], [DeWolf et al., 2024 (EPFL + MPI-IS + Harvard University)], [Higgins et al., 2023, Science], [Shinn et al., 2023, Nature Neuroscience], [Staffell et al., 2023, Nature Energy (Imperial + TU Delft)], [Koob et al., 2023, Psychological Review], [Barbosa et al., 2021, PAAP], [Lawson et al., 2020, AJ], [Event Horizon Telescope Collaboration, 2019, ApJL], [Lawson et al., 2019, AJ], [Laganowsky et al., 2014, Nature], just to name a few.

Parameters:
  • 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).

n_individuals

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.

Type:

int

References

Price, K.V., 2013. Differential evolution. In Handbook of Optimization (pp. 187-214). Springer.

Price, K.V., Storn, R.M. and Lampinen, J.A., 2005. Differential evolution: A practical approach to global optimization. Springer Science & Business Media.

https://jacobfilipp.com/DrDobbs/articles/DDJ/1997/9704/9704a/9704a.htm

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.

Storn, R.M., 1996, May. Differential evolution design of an IIR-filter. In Proceedings of IEEE International Conference on Evolutionary Computation (pp. 268-273). IEEE.

Storn, R.M., 1996, June. On the usage of differential evolution for function optimization. In Proceedings of North American Fuzzy Information Processing (pp. 519-523). IEEE.

https://visitor-badge.laobi.icu/badge?page_id=Evolutionary-Intelligence.pypop