|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectec.Breeder
ec.de.DEBreeder
public class DEBreeder
DEBreeder provides a straightforward Differential Evolution (DE) breeder for the ECJ system. The code is derived from the "classic" DE algorithm, known as DE/rand/1/bin, found on page 140 of "Differential Evolution: A Practical Approach to Global Optimization" by Kenneth Price, Rainer Storn, and Jouni Lampinen.
DEBreeder requires that all individuals be DoubleVectorIndividuals.
In short, the algorithm is as follows. For each individual in the population, we produce a child by selecting three (different) individuals, none the original individual, called r0, r1, and r2. We then create an individal c, defined as c = r0 + F * (r1 - r2). 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 0.0 <= double <= 1.0 |
The "F" mutation scaling factor |
base.cr 0.0 <= double <= 1.0 |
The "Cr" probability of crossing over genes |
Field Summary | |
---|---|
int[] |
bestSoFarIndex
the best individuals in each population (required by some DE breeders). |
double |
Cr
Probability of crossover per gene |
static double |
CR_UNSPECIFIED
|
double |
F
Scaling factor for mutation |
static java.lang.String |
P_Cr
|
static java.lang.String |
P_F
|
Population |
previousPopulation
the previous population is stored in order to have parents compete directly with their children |
Constructor Summary | |
---|---|
DEBreeder()
|
Method Summary | |
---|---|
Population |
breedPopulation(EvolutionState state)
Breeds state.population, returning a new population. |
DoubleVectorIndividual |
createIndividual(EvolutionState state,
int subpop,
int index,
int thread)
|
DoubleVectorIndividual |
crossover(EvolutionState state,
DoubleVectorIndividual target,
DoubleVectorIndividual child,
int thread)
Crosses over child with target, storing the result in child and returning it. |
void |
prepareDEBreeder(EvolutionState state)
|
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. |
boolean |
valid(DoubleVectorIndividual ind)
Tests the Individual to see if its values are in range. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final double CR_UNSPECIFIED
public double F
public double Cr
public static final java.lang.String P_F
public static final java.lang.String P_Cr
public Population previousPopulation
public int[] bestSoFarIndex
Constructor Detail |
---|
public DEBreeder()
Method Detail |
---|
public void setup(EvolutionState state, Parameter base)
Setup
public void prepareDEBreeder(EvolutionState state)
public Population breedPopulation(EvolutionState state)
Breeder
breedPopulation
in class Breeder
public boolean valid(DoubleVectorIndividual ind)
public DoubleVectorIndividual createIndividual(EvolutionState state, int subpop, int index, int thread)
public DoubleVectorIndividual crossover(EvolutionState state, DoubleVectorIndividual target, DoubleVectorIndividual child, int thread)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |