Package ec.parsimony

# Class ProportionalTournamentSelection

java.lang.Object
ec.BreedingSource
ec.SelectionMethod
ec.select.TournamentSelection
ec.parsimony.ProportionalTournamentSelection

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

public class ProportionalTournamentSelection extends TournamentSelection
This selection method adds parsimony pressure to the regular tournament selection. The comparison of individuals is based on fitness with probability prob, and it is based on size with probability 1-prob. For each pairwise comparsion of individuals, the ProportionalTournamentSelection randomly decides whether to compare based on fitness or size.

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

Parameters

base.`size` int >= 1 | (the tournament size)
base.`pick-worst` bool = `true` or `false` (default) | (should we pick the worst individual in the tournament instead of the best?)
base.`fitness-prob` double >= 0 and <= 1 | (the probability of comparing individuals based on fitness, rather than size)

Default Base
select.proportional-tournament

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `double`
  `fitnessPressureProb`
  The probability of having the tournament based on fitness
  `static final String`
  `P_PROBABILITY`
  The parameter for the probability of having the tournament based on fitness
  `static final String`
  `P_PROPORTIONAL_TOURNAMENT`
  default base

  ### Fields inherited from class ec.select.TournamentSelection

  `P_PICKWORST, P_SIZE, P_TOURNAMENT, pickWorst, probabilityOfPickingSizePlusOne, size`

  ### Fields inherited from class ec.SelectionMethod

  `INDS_PRODUCED, KEY_PARENTS`

  ### Fields inherited from class ec.BreedingSource

  `NO_PROBABILITY, P_PROB, probability`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ProportionalTournamentSelection()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `betterThan(Individual first, Individual second, int subpopulation, EvolutionState state, int thread)`
  Returns true if *first* is a better (fitter, whatever) individual than *second*.
  `Parameter`
  `defaultBase()`
  Returns the default base for this prototype.
  `void`
  `setup(EvolutionState state, Parameter base)`
  Sets up the BreedingPipeline.

  ### Methods inherited from class ec.select.TournamentSelection

  `getRandomIndividual, getTournamentSizeToUse, individualReplaced, produce, sourcesAreProperForm`

  ### Methods inherited from class ec.SelectionMethod

  `finishProducing, prepareToProduce, produce, produces, produceWithoutCloning, typicalIndsProduced`

  ### Methods inherited from class ec.BreedingSource

  `clone, fillStubs, getProbability, pickRandom, preparePipeline, setProbability, setupProbabilities`

  ### Methods inherited from class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### P_PROPORTIONAL_TOURNAMENT

    public static final String P_PROPORTIONAL_TOURNAMENT
    default base
    See Also:
      - Constant Field Values

  - ### P_PROBABILITY

    public static final String P_PROBABILITY
    The parameter for the probability of having the tournament based on fitness
    See Also:
      - Constant Field Values

  - ### fitnessPressureProb

    public double fitnessPressureProb
    The probability of having the tournament based on fitness

- ## Constructor Details

  - ### ProportionalTournamentSelection

    public ProportionalTournamentSelection()

- ## Method Details

  - ### 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(...).
    Specified by:
      `defaultBase` in interface `Prototype`
    Overrides:
      `defaultBase` in class `TournamentSelection`

  - ### setup

    public void setup(EvolutionState state, Parameter base)
    Description copied from class: `BreedingSource`
    Sets up the BreedingPipeline. You can use state.output.error here because the top-level caller promises to call exitIfErrors() after calling setup. Note that probability might get modified again by an external source if it doesn't normalize right.

    The most common modification is to normalize it with some other set of probabilities, then set all of them up in increasing summation; this allows the use of the fast static BreedingSource-picking utility method, BreedingSource.pickRandom(...). In order to use this method, for example, if four breeding source probabilities are {0.3, 0.2, 0.1, 0.4}, then they should get normalized and summed by the outside owners as: {0.3, 0.5, 0.6, 1.0}.

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

  - ### betterThan

    public boolean betterThan(Individual first, Individual second, int subpopulation, EvolutionState state, int thread)
    Description copied from class: `TournamentSelection`
    Returns true if *first* is a better (fitter, whatever) individual than *second*.
    Overrides:
      `betterThan` in class `TournamentSelection`