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