ec.vector
Class VectorSpecies

java.lang.Object
  extended by ec.Species
      extended by ec.vector.VectorSpecies
All Implemented Interfaces:
Prototype, Setup, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
FloatVectorSpecies, GeneVectorSpecies, IntegerVectorSpecies

public class VectorSpecies
extends Species

VectorSpecies is a species which can create VectorIndividuals. Different VectorSpecies are used for different kinds of VectorIndividuals: a plain VectorSpecies is probably only applicable for BitVectorIndividuals.

VectorSpecies supports the following recombination methods:

Note that for LongVectorIndividuals, there are certain values that will never be created by line and intermediate recombination, because the recombination is calculated using doubles and then rounded to the nearest long. For large enough values (but still smaller than the maximum long), the difference between one double and the next is greater than one.

VectorSpecies has three wasy to determine the initial size of the individual:

If the algorithm used is the geometric distribution, the VectorSpecies starts at a minimum size and continues flipping a coin with a certain "resize probability", increasing the size each time, until the coin comes up tails (fails). The chunk size must be 1 in this case.

If the algorithm used is the uniform distribution, the VectorSpecies picks a random size between a provided minimum and maximum size, inclusive. The chunk size must be 1 in this case.

If the size is fixed, then you can also provide a "chunk size" which constrains the locations in which crossover can be performed (only along chunk boundaries). The genome size must be a multiple of the chunk size in this case.

VectorSpecies also contains a number of parameters guiding how the individual crosses over and mutates.

Parameters

base.genome-size
int >= 1 or one of: geometric, uniform
(size of the genome, or if 'geometric' or 'uniform', the algorithm used to size the initial genome)
base.chunk-size
1 <= int <= genome-size (default=1)
(the chunk size for crossover (crossover will only occur on chunk boundaries))
base.geometric-prob
0.0 <= float < 1.0
(the coin-flip probability for increasing the initial size using the geometric distribution)
base.min-initial-size
int >= 0
(the minimum initial size of the genome)
base.max-initial-size
int >= min-initial-size
(the maximum initial size of the genome)
base.crossover-type
string, one of: one, two, any
(default crossover type (one-point, two-point, any-point (uniform), line, or intermediate)
base.crossover-prob
0.0 >= float >= 1.0
(probability that a gene will get crossed over during any-point crossover)
base.mutation-prob
0.0 <= float <= 1.0
(probability that a gene will get mutated over default mutation)
base.line-extension
float >= 0.0
(for line and intermediate recombination, how far along the line or outside of the hypercube children can be. If this value is zero, all children must be within the hypercube.)

Default Base
vector.species

See Also:
Serialized Form

Field Summary
static int C_ANY_POINT
           
static int C_GEOMETRIC
           
static int C_INTERMED_RECOMB
           
static int C_LINE_RECOMB
           
static int C_NONE
           
static int C_ONE_POINT
           
static int C_SIMULATED_BINARY
           
static int C_TWO_POINT
           
static int C_UNIFORM
           
 int chunksize
          How big of chunks should we define for crossover?
 int crossoverDistributionIndex
          What should the SBX distribution index be?
 float crossoverProbability
          Probability that a gene will cross over -- ONLY used in V_ANY_POINT crossover
 int crossoverType
          What kind of crossover do we have?
 boolean dynamicInitialSize
          Was the initial size determined dynamically?
 float genomeIncreaseProbability
          With what probability would our genome be at least 1 larger than it is now during initialization?
 int genomeResizeAlgorithm
          How should we reset the genome?
 int genomeSize
          How big of a genome should we create on initialization?
 double lineDistance
          How far along the long a child can be located for line or intermediate recombination
 int maxInitialSize
          What's the largest legal genome?
 int minInitialSize
          What's the smallest legal genome?
 float mutationProbability
          Probability that a gene will mutate
static java.lang.String P_CHUNKSIZE
           
static java.lang.String P_CROSSOVER_DISTRIBUTION_INDEX
           
static java.lang.String P_CROSSOVERPROB
           
static java.lang.String P_CROSSOVERTYPE
           
static java.lang.String P_GENOMESIZE
           
static java.lang.String P_GEOMETRIC_PROBABILITY
           
static java.lang.String P_LINEDISTANCE
           
static java.lang.String P_MUTATIONPROB
           
static java.lang.String P_UNIFORM_MAX
           
static java.lang.String P_UNIFORM_MIN
           
static java.lang.String P_VECTORSPECIES
           
static java.lang.String V_ANY_POINT
           
static java.lang.String V_GEOMETRIC
           
static java.lang.String V_INTERMED_RECOMB
           
static java.lang.String V_LINE_RECOMB
           
static java.lang.String V_ONE_POINT
           
static java.lang.String V_SIMULATED_BINARY
           
static java.lang.String V_TWO_POINT
           
static java.lang.String V_UNIFORM
           
protected  boolean warned
           
 
Fields inherited from class ec.Species
f_prototype, i_prototype, P_FITNESS, P_INDIVIDUAL, P_PIPE, pipe_prototype
 
Constructor Summary
VectorSpecies()
           
 
Method Summary
 Parameter defaultBase()
          Returns the default base for this prototype.
 Individual newIndividual(EvolutionState state, int thread)
          Provides a brand-new individual to fill in a population.
 void setup(EvolutionState state, Parameter base)
          The default version of setup(...) loads requested pipelines and calls setup(...) on them and normalizes their probabilities.
protected  void warnAboutGene(int gene)
           
 
Methods inherited from class ec.Species
clone, newIndividual, newIndividual
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

P_VECTORSPECIES

public static final java.lang.String P_VECTORSPECIES
See Also:
Constant Field Values

P_CROSSOVERTYPE

public static final java.lang.String P_CROSSOVERTYPE
See Also:
Constant Field Values

P_CHUNKSIZE

public static final java.lang.String P_CHUNKSIZE
See Also:
Constant Field Values

V_ONE_POINT

public static final java.lang.String V_ONE_POINT
See Also:
Constant Field Values

V_TWO_POINT

public static final java.lang.String V_TWO_POINT
See Also:
Constant Field Values

V_ANY_POINT

public static final java.lang.String V_ANY_POINT
See Also:
Constant Field Values

V_LINE_RECOMB

public static final java.lang.String V_LINE_RECOMB
See Also:
Constant Field Values

V_INTERMED_RECOMB

public static final java.lang.String V_INTERMED_RECOMB
See Also:
Constant Field Values

V_SIMULATED_BINARY

public static final java.lang.String V_SIMULATED_BINARY
See Also:
Constant Field Values

P_CROSSOVER_DISTRIBUTION_INDEX

public static final java.lang.String P_CROSSOVER_DISTRIBUTION_INDEX
See Also:
Constant Field Values

P_MUTATIONPROB

public static final java.lang.String P_MUTATIONPROB
See Also:
Constant Field Values

P_CROSSOVERPROB

public static final java.lang.String P_CROSSOVERPROB
See Also:
Constant Field Values

P_GENOMESIZE

public static final java.lang.String P_GENOMESIZE
See Also:
Constant Field Values

P_LINEDISTANCE

public static final java.lang.String P_LINEDISTANCE
See Also:
Constant Field Values

V_GEOMETRIC

public static final java.lang.String V_GEOMETRIC
See Also:
Constant Field Values

P_GEOMETRIC_PROBABILITY

public static final java.lang.String P_GEOMETRIC_PROBABILITY
See Also:
Constant Field Values

V_UNIFORM

public static final java.lang.String V_UNIFORM
See Also:
Constant Field Values

P_UNIFORM_MIN

public static final java.lang.String P_UNIFORM_MIN
See Also:
Constant Field Values

P_UNIFORM_MAX

public static final java.lang.String P_UNIFORM_MAX
See Also:
Constant Field Values

C_ONE_POINT

public static final int C_ONE_POINT
See Also:
Constant Field Values

C_TWO_POINT

public static final int C_TWO_POINT
See Also:
Constant Field Values

C_ANY_POINT

public static final int C_ANY_POINT
See Also:
Constant Field Values

C_LINE_RECOMB

public static final int C_LINE_RECOMB
See Also:
Constant Field Values

C_INTERMED_RECOMB

public static final int C_INTERMED_RECOMB
See Also:
Constant Field Values

C_SIMULATED_BINARY

public static final int C_SIMULATED_BINARY
See Also:
Constant Field Values

C_NONE

public static final int C_NONE
See Also:
Constant Field Values

C_GEOMETRIC

public static final int C_GEOMETRIC
See Also:
Constant Field Values

C_UNIFORM

public static final int C_UNIFORM
See Also:
Constant Field Values

mutationProbability

public float mutationProbability
Probability that a gene will mutate


crossoverProbability

public float crossoverProbability
Probability that a gene will cross over -- ONLY used in V_ANY_POINT crossover


crossoverType

public int crossoverType
What kind of crossover do we have?


genomeSize

public int genomeSize
How big of a genome should we create on initialization?


crossoverDistributionIndex

public int crossoverDistributionIndex
What should the SBX distribution index be?


genomeResizeAlgorithm

public int genomeResizeAlgorithm
How should we reset the genome?


minInitialSize

public int minInitialSize
What's the smallest legal genome?


maxInitialSize

public int maxInitialSize
What's the largest legal genome?


genomeIncreaseProbability

public float genomeIncreaseProbability
With what probability would our genome be at least 1 larger than it is now during initialization?


chunksize

public int chunksize
How big of chunks should we define for crossover?


lineDistance

public double lineDistance
How far along the long a child can be located for line or intermediate recombination


dynamicInitialSize

public boolean dynamicInitialSize
Was the initial size determined dynamically?


warned

protected boolean warned
Constructor Detail

VectorSpecies

public VectorSpecies()
Method Detail

warnAboutGene

protected void warnAboutGene(int gene)

defaultBase

public Parameter defaultBase()
Description copied from interface: Prototype
Returns the default base for this prototype. This should generally be implemented by building off of the static base() method on the DefaultsForm object for the prototype's package. This should be callable during setup(...).


setup

public void setup(EvolutionState state,
                  Parameter base)
Description copied from class: Species
The default version of setup(...) loads requested pipelines and calls setup(...) on them and normalizes their probabilities. If your individual prototype might need to know special things about the species (like parameters stored in it), then when you override this setup method, you'll need to set those parameters BEFORE you call super.setup(...), because the setup(...) code in Species sets up the prototype.

Specified by:
setup in interface Prototype
Specified by:
setup in interface Setup
Overrides:
setup in class Species
See Also:
Prototype.setup(EvolutionState,Parameter)

newIndividual

public Individual newIndividual(EvolutionState state,
                                int thread)
Description copied from class: Species
Provides a brand-new individual to fill in a population. The default form simply calls clone(), creates a fitness, sets evaluated to false, and sets the species. If you need to make a more custom genotype (as is the case for GPSpecies, which requires a light rather than deep clone), you will need to override this method as you see fit.

Overrides:
newIndividual in class Species