Package ec.gp.build

# Class PTCFunctionSet

java.lang.Object
ec.gp.GPFunctionSet
ec.gp.build.PTCFunctionSet

All Implemented Interfaces:
  `Clique`, `PTCFunctionSetForm`, `Setup`, `Serializable`

public class PTCFunctionSet extends GPFunctionSet implements PTCFunctionSetForm
PTCFunctionSet is a GPFunctionSet which adheres to PTCFunctionSetForm, and thus can be used with the PTC1 and PTC2 methods. Terminal and nonterminal probabilities for nodes used in this function set are determined by the `prob` parameter for the nodes' GPNodeConstraints object. That's not the greatest solution, because it could require making a lot of different GPNodeConstraints, customized for each node, but it's the best I can do for now. The nonterminalSelectionProbabilities() method computes nonterminal selection probability using the probabilities above, per type, for the size requested. If the size is small enough (smaller than CACHE_SIZE), then the result is memoized so it doesn't need to be computed again next time.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `CACHE_SIZE`
  `double[][]`
  `p_y`
  cache of nonterminal selection probabilities -- dense array [size-1][type].
  `double[][]`
  `q_ny`
  nonterminal probabilities[type][thenodes], in organized form
  `double[][]`
  `q_ty`
  terminal probabilities[type][thenodes], in organized form

  ### Fields inherited from class ec.gp.GPFunctionSet

  `name, nodes, nodes_h, nodesByArity, nodesByName, nonterminals, nonterminals_h, nonterminalsOverArity, nonterminalsUnderArity, P_FUNC, P_NAME, P_SIZE, terminals, terminals_h`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PTCFunctionSet()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `double[]`
  `computeNonterminalSelectionProbabilities(int expectedTreeSize)`
  `double[]`
  `nonterminalProbabilities(int type)`
  Returns an organized distribution (see ec.util.RandomChoice) of likelihoods that various nonterminals in the function set will be chosen over other nonterminals with the same return type.
  `double[]`
  `nonterminalSelectionProbabilities(int expectedTreeSize)`
  Returns an array (by return type) of the probability that PTC1 must pick a nonterminal over a terminal in order to guarantee the expectedTreeSize.
  `void`
  `setup(EvolutionState state, Parameter base)`
  Must be done after GPType and GPNodeConstraints have been set up
  `double[]`
  `terminalProbabilities(int type)`
  Returns an organized distribution (see ec.util.RandomChoice) of likelihoods that various terminals in the function set will be chosen over other terminals with the same return type.

  ### Methods inherited from class ec.gp.GPFunctionSet

  `functionSetFor, postProcessFunctionSet, toString`

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

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

- ## Field Details

  - ### q_ty

    public double[][] q_ty
    terminal probabilities[type][thenodes], in organized form

  - ### q_ny

    public double[][] q_ny
    nonterminal probabilities[type][thenodes], in organized form

  - ### CACHE_SIZE

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

  - ### p_y

    public double[][] p_y
    cache of nonterminal selection probabilities -- dense array [size-1][type]. If any items are null, they're not in the dense cache.

- ## Constructor Details

  - ### PTCFunctionSet

    public PTCFunctionSet()

- ## Method Details

  - ### terminalProbabilities

    public double[] terminalProbabilities(int type)
    Description copied from interface: `PTCFunctionSetForm`
    Returns an organized distribution (see ec.util.RandomChoice) of likelihoods that various terminals in the function set will be chosen over other terminals with the same return type. The ordering of the array is the same as the terminals[type][...] array in GPFunctionSet.
    Specified by:
      `terminalProbabilities` in interface `PTCFunctionSetForm`

  - ### nonterminalProbabilities

    public double[] nonterminalProbabilities(int type)
    Description copied from interface: `PTCFunctionSetForm`
    Returns an organized distribution (see ec.util.RandomChoice) of likelihoods that various nonterminals in the function set will be chosen over other nonterminals with the same return type. The ordering of the array is the same as the nonterminals[type][...] array in GPFunctionSet.
    Specified by:
      `nonterminalProbabilities` in interface `PTCFunctionSetForm`

  - ### setup

    public void setup(EvolutionState state, Parameter base)
    Description copied from class: `GPFunctionSet`
    Must be done after GPType and GPNodeConstraints have been set up
    Specified by:
      `setup` in interface `Setup`
    Overrides:
      `setup` in class `GPFunctionSet`

  - ### nonterminalSelectionProbabilities

    public double[] nonterminalSelectionProbabilities(int expectedTreeSize)
    Description copied from interface: `PTCFunctionSetForm`
    Returns an array (by return type) of the probability that PTC1 must pick a nonterminal over a terminal in order to guarantee the expectedTreeSize. Only used by PTC1, not by PTC2.
    Specified by:
      `nonterminalSelectionProbabilities` in interface `PTCFunctionSetForm`

  - ### computeNonterminalSelectionProbabilities

    public double[] computeNonterminalSelectionProbabilities(int expectedTreeSize)