I'm using a constrained-based GP to evolve functions for a problem I have. My individual must return a double. However, in my problem there is not terminal node that returns a double. If I don't use a terminal that returns a double, I get the following warning (followed by an error).
A GPNodeBuilder has been requested at least once to generate a one-node tree with a return value type-compatable with a certain type; but there is no TERMINAL which is type-compatable in this way. As a result, the algorithm was forced to use a NON-TERMINAL, making the tree larger than requested, and exposing more child slots to fill, which if not carefully considered, could recursively repeat this problem and eventually fill all memory.
class ec.gp.koza.FullBuilder can't find a terminal type-compatable with number
I would like to understand at this point, since I have a lot of non-terminal nodes that return a double. Is there a way to avoid this problem even without using a terminal node that returns a double? If ECJ doesn't present this problem if I have a terminal node returning a double (ECJ chooses this terminal node as root), it could chose one of many non-terminal nodes as the root node. Is there any way to do that?
Prof. Dr. Márcio Porto Basgalupp
Instituto de Ciência e Tecnologia (ICT)
Universidade Federal de São Paulo (UNIFESP)
Tel: +55 12 3924-9500 (r: 9762)