Dear all, Could someone help me with this question, please? best, Márcio -------- Prof. Márcio Porto Basgalupp Instituto de Ciência e Tecnologia (ICT) Universidade Federal de São Paulo (UNIFESP) On Mon, Dec 19, 2016 at 12:01 PM, Márcio Basgalupp <[log in to unmask]> wrote: > Dear all, > > 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. > > ONCE-ONLY WARNING: > > class ec.gp.koza.FullBuilder can't find a terminal type-compatable with > number > java.lang.StackOverflowError > at ec.gp.GPNodeBuilder.warnAboutNoTerminalWithType(GPNodeBuilder.java:238) > at ec.gp.koza.KozaBuilder.fullNode(KozaBuilder.java:117) > .... > recursively > ... > > 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? > > Best, > Márcio > > -------- > 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)