Print

Print


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)