ec.gp
Class GPFunctionSet

java.lang.Object
  |
  +--ec.gp.GPFunctionSet
All Implemented Interfaces:
Clique, java.io.Serializable, Setup
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 GPFuncInfo objects containing the GPNodes proper, hashed by the return type of the GPNodes in the array. GPFunctionSets also contain prototypical GPFuncInfo 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)
base.info
classname, inherits or == ec.gp.GPFuncInfo,
or nothing
(class of the prototypical GPFuncInfo object. If nothing, this defaults to ec.gp.GPFuncInfo)

Parameter bases
base.info p_funcinfo
base.func.n function node n

See Also:
Serialized Form

Field Summary
static java.util.Hashtable all
          A global storage facility for all known GPFunctionSet objects.
 java.lang.String name
          Name of the GPFunctionSet
 GPFuncInfo[][] 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.
 GPFuncInfo[][][] nodesByArity
          Nodes == a given arity, that is: nodesByArity[type][arity][thenodes]
 GPFuncInfo[][] 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.
 GPFuncInfo[][][] nonterminalsOverArity
          Nonterminals >= a given arity, that is: nonterminalsOverArity[type][arity][thenodes] -- this will be O(n^2).
 GPFuncInfo[][][] nonterminalsUnderArity
          Nonterminals <= a given arity, that is: nonterminalsUnderArity[type][arity][thenodes] -- this will be O(n^2).
static java.lang.String P_FUNC
           
 GPFuncInfo p_funcinfo
          The prototypical GPFuncInfo node.
static java.lang.String P_FUNCINFO
           
static java.lang.String P_NAME
           
static java.lang.String P_SIZE
           
 GPFuncInfo[][] 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
static void setupFunctionSets(EvolutionState state, Parameter base)
          Sets up all the GPFunctionSet, loading them from the parameter file.
 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

P_SIZE

public static final java.lang.String P_SIZE

P_FUNCINFO

public static final java.lang.String P_FUNCINFO

P_FUNC

public static final java.lang.String P_FUNC

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 GPFuncInfo[][] 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 GPFuncInfo[][] 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 GPFuncInfo[][] terminals
The terminals our GPTree can use: terminals[type][thenodes].

nodesByArity

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

nonterminalsUnderArity

public GPFuncInfo[][][] 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 GPFuncInfo[][][] 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.

p_funcinfo

public GPFuncInfo p_funcinfo
The prototypical GPFuncInfo node.

all

public static java.util.Hashtable all
A global storage facility for all known GPFunctionSet objects.
Constructor Detail

GPFunctionSet

public GPFunctionSet()
Method Detail

toString

public java.lang.String toString()
Returns the name.
Overrides:
toString in class java.lang.Object

setupFunctionSets

public static void setupFunctionSets(EvolutionState state,
                                     Parameter base)
Sets up all the GPFunctionSet, loading them from the parameter file. This must be called before anything is called which refers to a type by name.

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.