ec.de
Class Best1BinDEBreeder
java.lang.Object
ec.Breeder
ec.de.DEBreeder
ec.de.Best1BinDEBreeder
- All Implemented Interfaces:
- Setup, Singleton, java.io.Serializable
public class Best1BinDEBreeder
- extends DEBreeder
Best1BinDEBreeder is a differential evolution breeding operator.
The code is derived from a DE algorithm, known as DE/best/1/bin "with uniform jitter",
found on page 140 of
"Differential Evolution: A Practical Approach to Global Optimization"
by Kenneth Price, Rainer Storn, and Jouni Lampinen.
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 |
- See Also:
- Serialized Form
Field Summary |
double |
F_NOISE
limits on uniform noise for F |
static java.lang.String |
P_FNOISE
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
F_NOISE
public double F_NOISE
- limits on uniform noise for F
P_FNOISE
public static final java.lang.String P_FNOISE
- See Also:
- Constant Field Values
Best1BinDEBreeder
public Best1BinDEBreeder()
setup
public void setup(EvolutionState state,
Parameter base)
- Description copied from interface:
Setup
- Sets up the object by reading it from the parameters stored
in state, built off of the parameter base base.
If an ancestor implements this method, be sure to call
super.setup(state,base); before you do anything else.
- Specified by:
setup
in interface Setup
- Overrides:
setup
in class DEBreeder
createIndividual
public DoubleVectorIndividual createIndividual(EvolutionState state,
int subpop,
int index,
int thread)
- Overrides:
createIndividual
in class DEBreeder