# What is Differential Evolution?

Differential evolution is a black-box optimization algorithm that tries to iteratively improve a solution without using gradients. It only needs an initial solution and a fitness function to work.

While the algorithm does not guarantee that an optimal solution will be found, it tends to find good enough solutions in most cases.

# Implementations

As differential evolution is a simple and well-known algorithm, a lot of implementations of it exist in the wild. Below are some examples.

## Python

- scipy.optimize.differential_evolution - SciPy implementation of the algorithm. Probably the most commonly used version.
- PyDE - Python module that implements the algorithm

## C#

- https://github.com/mbalchanowski/Differential-Evolution

# Related links and references

- Wikipedia
- Original paper by R. Storn and K. Price
- Article describing Differential Evolution with Python