JGAP

org.jgap.gp
Interface INodeValidator

All Superinterfaces:
java.io.Serializable
All Known Implementing Classes:
FibonacciNodeValidator, GameNodeValidator, NodeValidator

public interface INodeValidator
extends java.io.Serializable

A node validator checks whether a certain node is valid for a given evolution. See ProgramChromosome.growOrFullNode(..).

Purpose of this validator: If you have an idea of how the shape of your evolved program must look like regarding some spots (like the first node in the first chromosome to be evolved) then you can constrain your imaginations with this validator. But take care that constraining too much ( e.g., while not considering your available functions) may lead to an endless loop. The endless loop can be avoided by stopping after a number of tries (see method validate, parameter a_tries).

Since:
3.0

Field Summary
static java.lang.String CVS_REVISION
          String containing the CVS revision.
 
Method Summary
 boolean validate(ProgramChromosome a_chrom, CommandGene a_node, CommandGene a_rootNode, int a_tries, int a_num, int a_recurseLevel, java.lang.Class a_type, CommandGene[] a_functionSet, int a_depth, boolean a_grow, int a_childIndex, boolean a_fullProgram)
          Validates a_node in the context of a_chrom.
 

Field Detail

CVS_REVISION

static final java.lang.String CVS_REVISION
String containing the CVS revision. Read out via reflection!

See Also:
Constant Field Values
Method Detail

validate

boolean validate(ProgramChromosome a_chrom,
                 CommandGene a_node,
                 CommandGene a_rootNode,
                 int a_tries,
                 int a_num,
                 int a_recurseLevel,
                 java.lang.Class a_type,
                 CommandGene[] a_functionSet,
                 int a_depth,
                 boolean a_grow,
                 int a_childIndex,
                 boolean a_fullProgram)
Validates a_node in the context of a_chrom. Considers the recursion level (a_recursLevel), the type needed (a_type) for the node, the functions available (a_functionSet) and the depth of the whole chromosome needed (a_depth), and whether grow mode is used (a_grow is true) or not.

Parameters:
a_chrom - the chromosome that will contain the node, if valid
a_node - the selected node to be validated
a_rootNode - the root node of a_node, may be null for top nodes
a_tries - number of times the validator has been called, useful for stopping by returning true if the number exceeds a limit
a_num - the chromosome's index in the individual of this chromosome
a_recurseLevel - level of recursion
a_type - the return type of the node needed
a_functionSet - the array of available functions
a_depth - the needed depth of the program chromosome
a_grow - true: use grow mode, false: use full mode
a_childIndex - index of the child in the parent node to which it belongs (-1 if node is root node)
a_fullProgram - true: whole program is available in a_chrom
Returns:
true: node is valid; false: node is invalid
Since:
3.0

JGAP