|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--ec.gp.GPNodeBuilder | +--ec.gp.koza.GrowBuilder
GrowBuilder is a GPNodeBuilder which implements the GROW tree building method described in Koza I/II.
GROW works by choosing a random integer d between minDepth and maxDepth, inclusive. It then grows a tree of depth 1 to d inclusive. Unlike lil-gp and Koza's texts, ECJ defines the "depth" of a tree to be the number of nodes (not edges) in the longest path from the root to any node in the tree.
Actually, claiming to implement the Koza I/II approach is a bit of a fib -- Koza's original code is somewhat ad-hoc. In the Koza approach, d is chosen in a kind of round-robin fashion rather than at random, if RAMPED HALF/HALF is used. Also, for all three algorithms (RAMPED HALF/HALF, GROW, FULL), the algorithm will not generate a tree consisting of a single terminal, unless forced to.
This implementation instead follows lil-gp's approach, which is to choose d at random from between minDepth and maxDepth, inclusive, and to allow trees consisting of single terminals.
Determining what various algorithms do is a little confusing, mostly because the source code for lil-gp and Koza don't actually quite do what they claim. The table below lists the depth values actually used (counting nodes, rather than edges, for depth). It's probably not what you had expected!
Koza I Min |
Koza I Max |
Koza II Min |
Koza II Max |
lil-gp Min |
lil-gp Max |
ECJ Min |
ECJ Max |
|
GROW (mut) |
5 |
5 |
5 |
5 |
|
|
5 |
5 |
GROW (new) |
7 |
7 |
6? 7? |
6? 7? |
3 |
7 |
5 |
5 |
FULL (new) |
7 |
7 |
6? 7? |
6? 7? |
3 |
7 |
|
|
HALF (new) |
2 |
6 |
2 |
5? 6? |
3 |
7 |
2 |
6 |
This algorithm ignores requestedSize, so no pipelines can ask it to grow a tree of a specific fixed size. The algorithm also ignores any user-provided size distributions.
Parameters
base.min-depth int >= 1 |
(smallest "maximum" depth the builder may use for building a tree. 2 is the default.) |
base.max-depth int >= base.min-depth |
(largest "maximum" depth thie builder may use for building a tree. 6 is the default.) |
Default Base
gp.koza.grow
Field Summary | |
int |
maxDepth
The largest maximum tree depth GROW can specify. |
int |
minDepth
The smallest maximum tree depth GROW can specify. |
static java.lang.String |
P_GROWBUILDER
|
static java.lang.String |
P_MAXDEPTH
|
static java.lang.String |
P_MINDEPTH
|
Fields inherited from class ec.gp.GPNodeBuilder |
CHECK_BOUNDARY,
maxSize,
minSize,
NOSIZEGIVEN,
P_MAXSIZE,
P_MINSIZE,
P_NUMSIZES,
P_SIZE,
sizeDistribution |
Constructor Summary | |
GrowBuilder()
|
Method Summary | |
Parameter |
defaultBase()
Returns the default base for this prototype. |
GPNode |
newRootedTree(EvolutionState state,
GPType type,
int thread,
GPNodeParent parent,
GPFunctionSet set,
int argposition,
int requestedSize)
|
void |
setup(EvolutionState state,
Parameter base)
Sets up the object by reading it from the parameters stored in state, built off of the parameter base base. |
Methods inherited from class ec.gp.GPNodeBuilder |
canPick,
pickSize,
protoClone,
protoCloneSimple |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Field Detail |
public static final java.lang.String P_GROWBUILDER
public static final java.lang.String P_MAXDEPTH
public static final java.lang.String P_MINDEPTH
public int maxDepth
public int minDepth
Constructor Detail |
public GrowBuilder()
Method Detail |
public Parameter defaultBase()
public void setup(EvolutionState state, Parameter base)
For prototypes, setup(...) is typically called once for the prototype instance; cloned instances do not receive the setup(...) call. setup(...) may be called more than once; the only guarantee is that it will get called at least once on an instance or some "parent" object from which it was ultimately cloned.
public GPNode newRootedTree(EvolutionState state, GPType type, int thread, GPNodeParent parent, GPFunctionSet set, int argposition, int requestedSize) throws java.lang.CloneNotSupportedException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |