public class Best1BinDEBreeder extends DEBreeder
Best1BinDEBreeder requires that all individuals be DoubleVectorIndividuals.
In short, the algorithm is as follows. For each individual in the population, we produce a child by first selecting the best individual in the population, which we call r0. We then select two more (different) individuals, none the original individual nor r0, called r1 and r2. We then create an individal c, defined as c = r0 + FJitter() * (r1 - r2), where FJitter() is a per-gene independent random number defined as F + F_NOISE * (random(0,1) - 0.5). A common value for F_NOISE is 0.001. Last, we cross over c with the original individual and produce a single child, using uniform crossover with gene-independent crossover probability "Cr".
This class should be used in conjunction with DEEvaluator, which allows the children to enter the population only if they're superior to their parents (the original individuals). If so, they replace their parents.
Parameters
base.f-noise 0.0 <= double |
The "F_NOISE" jitter value |
Modifier and Type | Field and Description |
---|---|
double |
F_NOISE
limits on uniform noise for F
|
static java.lang.String |
P_FNOISE |
bestSoFarIndex, Cr, CR_UNSPECIFIED, F, P_Cr, P_F, P_OUT_OF_BOUNDS_RETRIES, previousPopulation, retries
Constructor and Description |
---|
Best1BinDEBreeder() |
Modifier and Type | Method and Description |
---|---|
DoubleVectorIndividual |
createIndividual(EvolutionState state,
int subpop,
int index,
int thread) |
void |
setup(EvolutionState state,
Parameter base)
Sets up the object by reading it from the parameters stored
in state, built off of the parameter base base.
|
breedPopulation, crossover, prepareDEBreeder, valid
public double F_NOISE
public static final java.lang.String P_FNOISE
public void setup(EvolutionState state, Parameter base)
Setup
public DoubleVectorIndividual createIndividual(EvolutionState state, int subpop, int index, int thread)
createIndividual
in class DEBreeder