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 contains a number of parameters guiding how the individual crosses over and mutates.

Parameters

base.n.genome-size
int >= 1
(size of the genome)
base.n.chunk-size
1 <= int <= genome-size (default=1)
(the chunk size for crossover (crossover will only occur on chunk boundaries))
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_INTERMED_RECOMB
           
static int C_LINE_RECOMB
           
static int C_ONE_POINT
           
static int C_TWO_POINT
           
 int chunksize
          How big of chunks should we define for crossover?
 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?
 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
 float mutationProbability
          Probability that a gene will mutate
static java.lang.String P_CHUNKSIZE
           
static java.lang.String P_CROSSOVERPROB
           
static java.lang.String P_CROSSOVERTYPE
           
static java.lang.String P_GENOMESIZE
           
static java.lang.String P_LINEDISTANCE
           
static java.lang.String P_MUTATIONPROB
           
static java.lang.String P_VECTORSPECIES
           
static java.lang.String V_ANY_POINT
           
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_TWO_POINT
           
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

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

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

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?


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


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