On May 12, 2008, at 12:44 PM, Sean Luke wrote:

It's up on CVS now, as is the bugfix above.

Ack -- I fear I've made a hopeless muddle of my .params file. Would you be so kind as to take another look at it (included below)?

It's documented in ParameterDatabase:

Aha! I hadn't of course, thought to look there.

If you could give me any general guidelines about where to find these things, I'd appreciate it. Is playing with the system and asking questions on the mailing list the best way to learn it? I looked over the tutorials, but a manual would be enormously helpful. The frequent CVS updates also make ECJ a moving target.

I apologize for my obtuseness, and hope my comments will be taken in the intended spirit, i.e., as "Here's what I, perhaps a typical user, would find helpful," rather than as someone who wanders in off the street and demands that you do a bunch of work to make my life easier.

Peter Drake
http://www.lclark.edu/~drake/


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

init = ec.gp.GPInitializer
stat = ec.gp.koza.KozaStatistics

eval = ec.coevolve.MultiPopCoevolutionaryEvaluator
eval.num-rand-ind = 4
eval.num-elites = 1
eval.num-ind = 2
eval.select = ec.select.TournamentSelection
eval.select.size = 1

pop.subpops = 2
pop.subpop.0 = ec.Subpopulation
subpop.size = 500
subpop.duplicate-retries = 100
subpop.species = ec.gp.GPSpecies

pop.subpop.1 = ec.Subpopulation

gp.species.fitness = ec.gp.koza.KozaFitness
gp.species.ind = ec.gp.GPIndividual
gp.species.pipe = ec.breed.MultiBreedingPipeline

gp.individual.numtrees = 1
gp.individual.tree.0 = ec.gp.GPTree

gp.tree.tc = tc0

breed.multibreed.generate-max = false
breed.multibreed.num-sources = 2
breed.multibreed.source.0 = ec.gp.koza.CrossoverPipeline
breed.multibreed.source.1 = ec.breed.ReproductionPipeline

breed.reproduce.prob = 0.1
gp.koza.xover.prob = 0.9

# Types
gp.type.a.size = 2
gp.type.a.0.name = sequence
gp.type.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

gp.tc.0.returns = sequence

# 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.MostC3s
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 = orego.gp.DoubleData