On May 11, 2008, at 9:13 PM, Sean Luke wrote:

> On May 11, 2008, at 7:07 PM, Peter Drake wrote:
>> # Types
>> gp.a.size = 2 # Two atomic types
>> = sequence
>> = move
> Try:
> gp.type.a.size = 2 # Two atomic types
> = sequence
> = move

If I try that, I get:

Processing GP Types
The number of GP atomic types must be at least 1.
PARAMETER: gp.type.a.size

On a whim, I though maybe it's not safe to put a # comment at the end  
of a line. Removing that, I get:

Processing GP Types
Processing GP Node Constraints
Processing GP Function Sets
Processing GP Tree Constraints
The GP type "nil" could not be found.

Perhaps I need to tell the system that trees should be of type sequence: = sequence

The result:

Processing GP Tree Constraints
In function set f0 for the GPTreeConstraints tc0, no *nonterminals*  
are given with the return type move which is required by other  
functions in the function set or by the tree's return type.  This may  
or may not be a problem for you.
Initializing Generation 0
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.
class can't find a terminal type-compatable  
with move

The first warning is "not a problem for" me; I intend the first child  
of each PlayMove or IfNode to be a single MoveNode. Is it possible/ 
desirable to suppress this warning?

The second and third warnings imply that I somehow have to declare  
MoveNode and RandomNode terminal. How do I do this?

The system does appear to be generating the tree properly now, but  
I'd like to do things the Right Way.


Peter Drake