In version 3.3 we added support for automatically defined functions (ADF). Because of this the tree structure has following shape:
root
/ | \
/ | \
/ | \
RPB ADF0...ADFn
/ | \ / | \ / | \
(root (Result-production-branch (#)) (ADF0 #) (ADF1 #) ...)
This means the minimal depth of a functional tree only containing one terminal is three and the minimal size is also three.
Example:
root
|
RBP
|
const 3.14
A max tree depth of three in HL 3.3 is thus equivalent to a max. tree depth of one in HL 2.5 which is too small to be useful.
A workaround for this problem is to use tree depths larger or equal five.
In any case the parameter setting is confusing because a user does not immediately know about the template shape necessary for ADFs. So this parameter setting should be documented better in the GUI.
Tree creation does not fail because PTC2 is the default for symbolic regression. Our implementation of PTC2 has a small chance to produce trees that are larger than the max depth and we decided that the max depth limit constraint is not enforced in the initial population.
Ideally the range for the values of this parameters should be limited and enforced in the GUI, however, there is not yet a general mechanism for this in HL. Actually a similar bug can be produced by setting the population size in any GA to a value smaller than one.