ec.es
Class ESSelection

java.lang.Object
  |
  +--ec.BreedingSource
        |
        +--ec.SelectionMethod
              |
              +--ec.es.ESSelection

public class ESSelection
extends SelectionMethod

ESSelection is a special SelectionMethod designed to be used with evolutionary strategies (ESEvolutionState) and its associated breeders. The rule is simple: if your pipeline returns N children when you called it, ESSelection objects must have been called exactly N times (selecting N children altogether in that pass). No more, no less. You can use other selection methods (Tournament Selection is a good choice) to fill the slack. See ESEvolutionState for ideas on doing this with various breeding pipeline examples.

Default Base
es.select

See Also:
Serialized Form

Field Summary
static java.lang.String P_ESSELECT
           
 
Fields inherited from class ec.SelectionMethod
INDS_PRODUCED
 
Fields inherited from class ec.BreedingSource
CHECKBOUNDARY, DEFAULT_PRODUCED, NO_PROBABILITY, P_PROB, probability, UNUSED
 
Constructor Summary
ESSelection()
           
 
Method Summary
 Parameter defaultBase()
          Returns the default base for this prototype.
 void finishProducing(EvolutionState s, int subpopulation, int thread)
          A default version of finishProducing, which does nothing.
 void preparePipeline(java.lang.Object hook)
          A hook which should be passed to all your subsidiary breeding sources.
 void prepareToProduce(EvolutionState s, int subpopulation, int thread)
          A default version of prepareToProduce which does nothing.
 int produce(int subpopulation, EvolutionState state, int thread)
          An alternative form of "produce" special to Selection Methods; selects an individual from the given subpopulation and returns its position in that subpopulation.
 int produce(int min, int max, int start, int subpopulation, Individual[] inds, EvolutionState state, int thread)
          Produces n individuals from the given subpopulation and puts them into inds[start...start+n-1], where n = Min(Max(q,min),max), where q is the "typical" number of individuals the BreedingSource produces in one shot, and returns n.
 boolean produces(EvolutionState state, Population newpop, int subpopulation, int thread)
          A default version of produces -- this method always returns true under the assumption that the selection method works with all Fitnesses.
 int typicalIndsProduced()
          Returns 1
 
Methods inherited from class ec.BreedingSource
getProbability, pickRandom, protoClone, protoCloneSimple, setProbability, setup, setupProbabilities
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

P_ESSELECT

public static final java.lang.String P_ESSELECT
Constructor Detail

ESSelection

public ESSelection()
Method Detail

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(...).

typicalIndsProduced

public int typicalIndsProduced()
Returns 1
Overrides:
typicalIndsProduced in class SelectionMethod

produce

public int produce(int subpopulation,
                   EvolutionState state,
                   int thread)
An alternative form of "produce" special to Selection Methods; selects an individual from the given subpopulation and returns its position in that subpopulation.
Overrides:
produce in class SelectionMethod

produces

public boolean produces(EvolutionState state,
                        Population newpop,
                        int subpopulation,
                        int thread)
A default version of produces -- this method always returns true under the assumption that the selection method works with all Fitnesses. If this isn't the case, you should override this to return your own assessment.
Overrides:
produces in class SelectionMethod

prepareToProduce

public void prepareToProduce(EvolutionState s,
                             int subpopulation,
                             int thread)
A default version of prepareToProduce which does nothing.
Overrides:
prepareToProduce in class SelectionMethod

finishProducing

public void finishProducing(EvolutionState s,
                            int subpopulation,
                            int thread)
A default version of finishProducing, which does nothing.
Overrides:
finishProducing in class SelectionMethod

produce

public int produce(int min,
                   int max,
                   int start,
                   int subpopulation,
                   Individual[] inds,
                   EvolutionState state,
                   int thread)
            throws java.lang.CloneNotSupportedException
Description copied from class: BreedingSource
Produces n individuals from the given subpopulation and puts them into inds[start...start+n-1], where n = Min(Max(q,min),max), where q is the "typical" number of individuals the BreedingSource produces in one shot, and returns n. max must be >= min, and min must be >= 1. For example, crossover might typically produce two individuals, tournament selection might typically produce a single individual, etc.
Overrides:
produce in class SelectionMethod

preparePipeline

public void preparePipeline(java.lang.Object hook)
Description copied from class: BreedingSource
A hook which should be passed to all your subsidiary breeding sources. If you are a BreedingPipeline and you implement your sources in a way different than using the sources[] array, be sure to override this method so that it calls preparePipeline(hook) on all of your sources. This method might get called more than once, and by various objects as needed. If you use it, you should determine somehow how to use it to send information under the assumption that it might be sent by nested items in the pipeline; you don't want to scribble over each other's calls! Note that this method should travel *all* breeding source paths regardless of whether or not it's redundant to do so.
Overrides:
preparePipeline in class SelectionMethod