Print

Print


Further to my previous message, the same method goes on to output a 
shorter message:

        if (fail)
            state.output.fatal("" + this.getClass() + " can't find a 
terminal type-compatable with " + type +
                               " and cannot replace it with a 
nonterminal.  You may need to try a different node-builder algorithm.");
        else
            state.output.warnOnce("" + this.getClass() + " can't find a 
terminal type-compatable with " + type);
        }

But the message doesn't match the comment before the method: maybe it 
should read:

" can't find a *non*-terminal type-compatible with " + type

???

I hope someone can clear this up for me!

Thanks

David


-------- Original Message --------
Subject: 	GPNodeBuilder Error Message
Date: 	Fri, 16 Jan 2009 15:57:42 +0000
From: 	David Robert White <[log in to unmask]>
To: 	ECJ Evolutionary Computation Toolkit <[log in to unmask]>



Hi,

I'm confused about the error message below, please could someone explain 
it? 

If the builder was creating a one-node tree, surely a terminal would be 
ideal?  Why would using a terminal create a tree larger than requested?

Thanks

David

GPNodeBuilder:269

       state.output.warnOnce("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 NON-TERMINAL which is type-compatable " +
                             "in this way.  As a result, the algorithm 
was forced to use a 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.");