Examining tutorial4.params and koza.params, I think I'm getting closer. I'm still getting this error message:

Processing GP Node Constraints
The GP type "move" could not be found.

My revised .params file is included below.

Peter Drake

On May 11, 2008, at 3:46 PM, Peter Drake wrote:

Now I'm working on a configuration file. My intent is that there are four types of nodes:

(play <move> <sequence>) is a <sequence>
(if <move> <sequence> <sequence>) is a <sequence>
(random) is a <sequence>
move is a <move> (and also an ERC)

Below is my attempt at a .params file, which I adapted from Tutorial 4. It does produce trees made of the right parts, but seems to be paying no attention to the types. Is there something I forgot to include, or am I doing the types wrong?

<old file deleted>

parent.0 = ../../ec/gp/koza/koza.params
generations = 1

# the next four items are already defined in koza.params, but we
# put them here to be clear.

# We have one function set, of class GPFunctionSet
gp.fs.size = 1
gp.fs.0 = ec.gp.GPFunctionSet
# We'll call the function set "f0".  It uses the default GPFuncInfo class
gp.fs.0.name = f0
gp.fs.0.info = ec.gp.GPFuncInfo

# Types
gp.a.size = 2 # Two atomic types
gp.a.0.name = sequence
gp.a.1.name = move

gp.nc.size = 4

gp.nc.0 = ec.gp.GPNodeConstraints
gp.nc.0.name = ncMove
gp.nc.0.returns = move
gp.nc.0.size = 0

gp.nc.1 = ec.gp.GPNodeConstraints
gp.nc.1.name = ncIf
gp.nc.1.returns = sequence
gp.nc.1.size = 3
gp.nc.1.child.0 = move
gp.nc.1.child.1 = sequence
gp.nc.1.child.2 = sequence

gp.nc.2 = ec.gp.GPNodeConstraints
gp.nc.2.name = ncPlay
gp.nc.2.returns = sequence
gp.nc.2.size = 2
gp.nc.2.child.0 = move
gp.nc.2.child.1 = sequence

gp.nc.3 = ec.gp.GPNodeConstraints
gp.nc.3.name = ncRandom
gp.nc.3.returns = sequence
gp.nc.3.size = 0

# We have four functions in the function set.  They are:
gp.fs.0.size = 4
gp.fs.0.func.0 = orego.gp.MoveNode
gp.fs.0.func.0.nc = ncMove

gp.fs.0.func.1 = orego.gp.IfNode
gp.fs.0.func.1.nc = ncIf

gp.fs.0.func.2 = orego.gp.PlayNode
gp.fs.0.func.2.nc = ncPlay

gp.fs.0.func.3 = orego.gp.RandomNode
gp.fs.0.func.3.nc = ncRandom

eval.problem = orego.gp.MultiValuedRegression
eval.problem.data = orego.gp.DoubleData

# The following should almost *always* be the same as eval.problem.data
# For those who are interested, it defines the data object used internally
# inside ADF stack contexts
eval.problem.stack.context.data = ec.app.tutorial4.DoubleData