Package ec

# Class SelectionMethod

java.lang.Object
ec.BreedingSource
ec.SelectionMethod

All Implemented Interfaces:
  `Prototype`, `Setup`, `RandomChoiceChooserD`, `Serializable`, `Cloneable`

Direct Known Subclasses:
  `AnnealedSelection`, `BestSelection`, `BucketTournamentSelection`, `DoubleTournamentSelection`, `ESSelection`, `FirstSelection`, `FitProportionateSelection`, `GreedyOverselection`, `LexicaseSelection`, `MultiSelection`, `RandomSelection`, `RatioBucketTournamentSelection`, `SUSSelection`, `TopSelection`, `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.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `INDS_PRODUCED`
  `static final String`
  `KEY_PARENTS`

  ### Fields inherited from class ec.BreedingSource

  `NO_PROBABILITY, P_PROB, probability`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SelectionMethod()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `finishProducing(EvolutionState s, int subpopulation, int thread)`
  A default version of finishProducing, which does nothing.
  `void`
  `prepareToProduce(EvolutionState s, int subpopulation, int thread)`
  A default version of prepareToProduce which does nothing.
  `final int`
  `produce(int min, int max, int subpopulation, ArrayList<Individual> inds, EvolutionState state, int thread, HashMap<String,Object> misc)`
  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.
  `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.
  `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`
  `produceWithoutCloning(int min, int max, int subpopulation, ArrayList<Individual> inds, EvolutionState state, int thread, HashMap<String,Object> misc)`
  `int`
  `typicalIndsProduced()`
  Returns 1 (the typical default value)

  ### Methods inherited from class ec.BreedingSource

  `clone, fillStubs, getProbability, pickRandom, preparePipeline, 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 Details

  - ### INDS_PRODUCED

    public static final int INDS_PRODUCED
    See Also:
      - Constant Field Values

  - ### KEY_PARENTS

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

- ## Constructor Details

  - ### SelectionMethod

    public SelectionMethod()

- ## Method Details

  - ### 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 final int produce(int min, int max, int subpopulation, ArrayList<Individual> inds, EvolutionState state, int thread, HashMap<String,Object> misc)
    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`

  - ### produceWithoutCloning

    public int produceWithoutCloning(int min, int max, int subpopulation, ArrayList<Individual> inds, EvolutionState state, int thread, HashMap<String,Object> misc)

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