Differential evolution: a fast and simple numerical optimizer

Differential evolution (DE) is a powerful yet simple evolutionary algorithm for optimizing real-valued multi-modal functions. Function parameters are encoded as floating-point variables and mutated with a simple arithmetic operation. During mutation, a variable-length, one-way crossover operation splices perturbed best-so-far parameter values into existing population vectors. A novel sampling technique adaptively scales the step-size of perturbations as the population evolves. DE's selection criterion demands that improved vectors always be accepted. The performance of DE on a testbed of 15 functions is compared with a variety of recently published results encompassing many different methods. DE converged for all 15 functions and was the fastest method for solving 11 of them. DE's performance on the remaining 4 functions was competitive.