Package ec.de

# Class Best1BinDEBreeder

java.lang.Object
ec.Breeder
ec.de.DEBreeder
ec.de.Best1BinDEBreeder

All Implemented Interfaces:
  `Setup`, `Singleton`, `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

  Fields
  Modifier and Type
  Field
  Description
  `double`
  `F_NOISE`
  limits on uniform noise for F
  `static final String`
  `P_FNOISE`

  ### Fields inherited from class ec.de.DEBreeder

  `bestSoFarIndex, Cr, CR_UNSPECIFIED, F, P_Cr, P_F, P_OUT_OF_BOUNDS_RETRIES, previousPopulation, retries`

  ### Fields inherited from class ec.Breeder

  `sequentialBreeding`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Best1BinDEBreeder()`

- ## Method Summary

  Modifier and Type
  Method
  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.

  ### Methods inherited from class ec.de.DEBreeder

  `breedPopulation, crossover, prepareDEBreeder, valid`

  ### Methods inherited from class ec.Breeder

  `shouldBreedSubpop`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### F_NOISE

    public double F_NOISE
    limits on uniform noise for F

  - ### P_FNOISE

    public static final String P_FNOISE
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Best1BinDEBreeder

    public Best1BinDEBreeder()

- ## Method Details

  - ### 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`