Can someone please explain the Differential Evolution method? The Wikipedia definition is extremely technical.
A dumbed-down explanation followed by a simple example wou
Answering my own question...
NP candidates.Xi = A parent candidate at index i (indexes range from 0 to NP-1) from the current generation. Also known as the target vector.D parameters.Xi(j) = The jth parameter in candidate Xi.Xa, Xb, Xc = three random parent candidates.(Xb - Xa)F = A weight that determines the rate of the population's evolution.
CR = The probability of crossover taking place.
Xc` = A mutant vector obtained through the differential mutation operation. Also known as the donor vector.Xt = The child of Xi and Xc`. Also known as the trial vector.for (int i = 0; ii)do
{
a = random.nextInt(NP);
} while (a == i)
do
{
b = random.nextInt(NP);
} while (b == i || b == a);
do
{
c = random.nextInt(NP);
} while (c == i || c == b || c == a);
Xc` = Xc + F * (Xb - Xa)Xi, apply uniform crossover with probability CR to inherit from Xc`; otherwise, inherit from Xi. At least one variable must be inherited from Xc`int R = random.nextInt(D);
for (int j=0; j < D; ++j)
{
double probability = random.nextDouble();
if (probability < CR || j == R)
Xt[j] = Xc`[j]
else
Xt[j] = Xi[j]
}
Xt is superior to Xi then Xt replaces Xi in the next generation. Otherwise, Xi is kept unmodified.