ec.gp
Class GPFunctionSet

java.lang.Object
  extended by ec.gp.GPFunctionSet
All Implemented Interfaces:
Clique, Setup, java.io.Serializable
Direct Known Subclasses:
PTCFunctionSet

public class GPFunctionSet
extends java.lang.Object
implements Clique

GPFunctionSet is a Clique which represents a set of GPNode prototypes forming a standard function set for forming certain trees in individuals. GPFunctionSets instances have unique names with which they're referenced by GPTreeConstraints objects indicating that they're used for certain trees. GPFunctionSets store their GPNode Prototypes in three hashtables, one for all nodes, one for nonterminals, and one for terminals. Each hashed item is an array of GPNode objects, hashed by the return type of the GPNodes in the array. GPFunctionSets also contain prototypical GPNode nodes which they clone to form their arrays.

Parameters

base.name
String
(name of function set. Must be different from other function set instances)
base.size
int >= 1
(number of functions in the function set)
base.func.n
classname, inherits and != ec.gp.GPNode
(class of function node n in the set)

Parameter bases

base.func.n function node n

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

Field Summary
 java.lang.String name
          Name of the GPFunctionSet
 GPNode[][] nodes
          The nodes that our GPTree can use: nodes[type][thenodes].
 java.util.Hashtable nodes_h
          The nodes that our GPTree can use: arrays of nodes hashed by type.
 GPNode[][][] nodesByArity
          Nodes == a given arity, that is: nodesByArity[type][arity][thenodes]
 GPNode[][] nonterminals
          The nonterminals our GPTree can use: nonterminals[type][thenodes].
 java.util.Hashtable nonterminals_h
          The nonterminals our GPTree can use: arrays of nonterminals hashed by type.
 GPNode[][][] nonterminalsOverArity
          Nonterminals >= a given arity, that is: nonterminalsOverArity[type][arity][thenodes] -- this will be O(n^2).
 GPNode[][][] nonterminalsUnderArity
          Nonterminals <= a given arity, that is: nonterminalsUnderArity[type][arity][thenodes] -- this will be O(n^2).
static java.lang.String P_FUNC
           
static java.lang.String P_NAME
           
static java.lang.String P_SIZE
           
 GPNode[][] terminals
          The terminals our GPTree can use: terminals[type][thenodes].
 java.util.Hashtable terminals_h
          The terminals our GPTree can use: arrays of terminals hashed by type.
 
Constructor Summary
GPFunctionSet()
           
 
Method Summary
static GPFunctionSet functionSetFor(java.lang.String functionSetName, EvolutionState state)
          Returns the function set for a given name.
 void postProcessFunctionSet()
          Sets up the arrays based on the hashtables
 void setup(EvolutionState state, Parameter base)
          Must be done after GPType and GPNodeConstraints have been set up
 java.lang.String toString()
          Returns the name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

P_NAME

public static final java.lang.String P_NAME
See Also:
Constant Field Values

P_FUNC

public static final java.lang.String P_FUNC
See Also:
Constant Field Values

P_SIZE

public static final java.lang.String P_SIZE
See Also:
Constant Field Values

name

public java.lang.String name
Name of the GPFunctionSet


nodes_h

public java.util.Hashtable nodes_h
The nodes that our GPTree can use: arrays of nodes hashed by type.


nodes

public GPNode[][] nodes
The nodes that our GPTree can use: nodes[type][thenodes].


nonterminals_h

public java.util.Hashtable nonterminals_h
The nonterminals our GPTree can use: arrays of nonterminals hashed by type.


nonterminals

public GPNode[][] nonterminals
The nonterminals our GPTree can use: nonterminals[type][thenodes].


terminals_h

public java.util.Hashtable terminals_h
The terminals our GPTree can use: arrays of terminals hashed by type.


terminals

public GPNode[][] terminals
The terminals our GPTree can use: terminals[type][thenodes].


nodesByArity

public GPNode[][][] nodesByArity
Nodes == a given arity, that is: nodesByArity[type][arity][thenodes]


nonterminalsUnderArity

public GPNode[][][] nonterminalsUnderArity
Nonterminals <= a given arity, that is: nonterminalsUnderArity[type][arity][thenodes] -- this will be O(n^2). Obviously, the number of nonterminals at arity slot 0 is 0.


nonterminalsOverArity

public GPNode[][][] nonterminalsOverArity
Nonterminals >= a given arity, that is: nonterminalsOverArity[type][arity][thenodes] -- this will be O(n^2). Obviously, the number of nonterminals at arity slot 0 is all the nonterminals of that type.

Constructor Detail

GPFunctionSet

public GPFunctionSet()
Method Detail

toString

public java.lang.String toString()
Returns the name.

Overrides:
toString in class java.lang.Object

postProcessFunctionSet

public void postProcessFunctionSet()
Sets up the arrays based on the hashtables


setup

public void setup(EvolutionState state,
                  Parameter base)
Must be done after GPType and GPNodeConstraints have been set up

Specified by:
setup in interface Setup

functionSetFor

public static GPFunctionSet functionSetFor(java.lang.String functionSetName,
                                           EvolutionState state)
Returns the function set for a given name. You must guarantee that after calling functionSetFor(...) one or several times, you call state.output.exitIfErrors() once.