Differential Evolution
Differential Evolution(DE) is a population based algorithm whereby new points are created by taking a random member of the population, performing a “crossover” on it with a “partner”, and replacing it in the population if the result is better than the original.
The Mutation Partner #
The partner for crossover is generated as follows. Suppose we have chosen x
for crossover.
- Pick
a
,b
,c
randomly from the population distinct from each other and distinct fromx
- Let
v = a + F(b - c)
where0<F<1
, note thatF
is not a functionv
is the partner forx
That is, for eachi = 1..n
, vi = ai +F(bi - ci)
Crossover #
To cross x
with v
for i = 1 to n
if(random < CR)
yi = vi
else
yi = xi
CR is a crossover bias typically 0.5
Algorithm #
- Pick a random population
- Pick a random number
x
from the population - Pick
a
,b
,c
from population distinct from each other andx
v = a + F( b - c)
- Crossover
x
andv
with rateCR
to formy
- If
y
better thanx
, it replacesx
in the population - Go to 2
Parameters #
Population size between 5 and 10 times the size of n
F
is between 0 and 2
CR
is between 0.5 and 0.9 (biased towards mutant)