In evolutionary computation, differential evolution (DE) is a method that optimizes a problem by iteratively trying to improve a candidate solution with regard to a given measure of quality. Such methods are commonly known as metaheuristics as they make few or no assumptions about the optimized problem and can search very large spaces of candidate solutions. However, metaheuristics such as DE do not guarantee an optimal solution is ever found.
DE is used for multidimensional real-valued functions but does not use the gradient of the problem being optimized, which means DE does not require the optimization problem to be differentiable, as is required by classic optimization methods such as gradient descent and quasi-newton methods. DE can therefore also be used on optimization problems that are not even continuous, are noisy, change over time, etc.[1]
DE optimizes a problem by maintaining a population of candidate solutions and creating new candidate solutions by combining existing ones according to its simple formulae, and then keeping whichever candidate solution has the best score or fitness on the optimization problem at hand. In this way, the optimization problem is treated as a black box that merely provides a measure of quality given a candidate solution and the gradient is therefore not needed.
Storn and Price introduced Differential Evolution in 1995.[2][3][4] Books have been published on theoretical and practical aspects of using DE in parallel computing, multiobjective optimization, constrained optimization, and the books also contain surveys of application areas.[5][6][7][8] Surveys on the multi-faceted research aspects of DE can be found in journal articles .[9][10]
elediadereview
was invoked but never defined (see the help page).storn97differential
was invoked but never defined (see the help page).storn96usage
was invoked but never defined (see the help page).price05differential
was invoked but never defined (see the help page).feoktistov06differential
was invoked but never defined (see the help page).chakraborty08advances
was invoked but never defined (see the help page).