ec
Class SelectionMethod

java.lang.Object
  extended by ec.BreedingSource
      extended by ec.SelectionMethod
All Implemented Interfaces:
Prototype, Setup, RandomChoiceChooser, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
BestSelection, BucketTournamentSelection, DoubleTournamentSelection, ESSelection, FirstSelection, FitProportionateSelection, GreedyOverselection, LexicographicTournamentSelection, MultiSelection, ProportionalTournamentSelection, RandomSelection, RatioBucketTournamentSelection, TournamentSelection

public abstract class SelectionMethod
extends BreedingSource

A SelectionMethod is a BreedingSource which provides direct IMMUTABLE pointers to original individuals in an old population, not fresh mutable copies. If you use a SelectionMethod as your BreedingSource, you must SelectionMethods might include Tournament Selection, Fitness Proportional Selection, etc. SelectionMethods don't have parent sources.

Typical Number of Individuals Produced Per produce(...) call
Always 1.

Version:
1.0
Author:
Sean Luke
See Also:
Serialized Form

Field Summary
static int INDS_PRODUCED
           
 
Fields inherited from class ec.BreedingSource
CHECKBOUNDARY, DEFAULT_PRODUCED, NO_PROBABILITY, P_PROB, probability, UNUSED
 
Constructor Summary
SelectionMethod()
           
 
Method Summary
 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.
abstract  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 (the typical default value)
 
Methods inherited from class ec.BreedingSource
clone, getProbability, pickRandom, setProbability, setup, setupProbabilities
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface ec.Prototype
defaultBase
 

Field Detail

INDS_PRODUCED

public static final int INDS_PRODUCED
See Also:
Constant Field Values
Constructor Detail

SelectionMethod

public SelectionMethod()
Method Detail

typicalIndsProduced

public int typicalIndsProduced()
Returns 1 (the typical default value)

Specified by:
typicalIndsProduced in class BreedingSource

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.

Specified by:
produces in class BreedingSource

prepareToProduce

public void prepareToProduce(EvolutionState s,
                             int subpopulation,
                             int thread)
A default version of prepareToProduce which does nothing.

Specified by:
prepareToProduce in class BreedingSource

finishProducing

public void finishProducing(EvolutionState s,
                            int subpopulation,
                            int thread)
A default version of finishProducing, which does nothing.

Specified by:
finishProducing in class BreedingSource

produce

public int produce(int min,
                   int max,
                   int start,
                   int subpopulation,
                   Individual[] inds,
                   EvolutionState state,
                   int thread)
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.

Specified by:
produce in class BreedingSource

produce

public abstract 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.


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. The default does this for you already, so ordinarily you don't need to change anything. 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.

ECJ at present does not custom-implement or call this method: it's available for you. Becuase it has custom functionality, 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.

Specified by:
preparePipeline in class BreedingSource