Hello, It is great that ecj now has a grammatical evolution implementation. But I am having trouble replicating the results of a basic GE experiment. I am wondering if anyone else has had this problem, can see any mistakes in what I have done, or know of a reason for this. I refer to the results of this paper, for the santa fe ant trail: O'Neill M., Ryan C. Grammatical Evolution. IEEE Transactions on Evolutionary Computation, Vol. 5 No.4, August 2001. In this paper, over 100 runs, GE finds the correct code in approximately 90 of the runs. However, my results are consistently around the 25 mark. I would normally put any discrepancies down to small differences in implementation between O'Neill's code and ecj, but the results are so dramatically different that it is probably not due to this. My parameters are copied below. You will see I have tried to match the grammar that they use, and use the same genetic operators in the pipeline. Thanks for your help. #Grammar file myant.grammar <start> ::= <code> <code> ::= <line> | (progn2 <code> <line>) <line> ::= (if-food-ahead <line> <line>) | <op> <op> ::= (left) | (right) | (move) #Initialisation pop.subpop.0.size = 500 breed.elite.0 = 50 pop.subpop.0.species.genome-size = uniform pop.subpop.0.species.min-initial-size = 5 pop.subpop.0.species.max-initial-size = 20 #GA pipelines pop.subpop.0.species.pipe = ec.vector.breed.GeneDuplicationPipeline pop.subpop.0.species.pipe.likelihood = 0.01 pop.subpop.0.species.pipe.source.0 = ec.vector.breed.VectorMutationPipeline pop.subpop.0.species.pipe.source.0.likelihood = 1 pop.subpop.0.species.mutation-prob = 0.01 pop.subpop.0.species.pipe.source.0.source.0 = ec.vector.breed.ListCrossoverPipeline pop.subpop.0.species.pipe.source.0.source.0.prob = 1 pop.subpop.0.species.pipe.source.0.source.0.likelihood = 0.9 pop.subpop.0.species.pipe.source.0.source.0.source.0 = ec.select.TournamentSelection pop.subpop.0.species.pipe.source.0.source.0.source.1 = same pop.subpop.0.species.pipe.source.0.source.0.toss = false #function set gp.fs.0.size = 5 gp.fs.0.func.0 = ec.app.ant.func.Left gp.fs.0.func.0.nc = nc0 gp.fs.0.func.1 = ec.app.ant.func.Right gp.fs.0.func.1.nc = nc0 gp.fs.0.func.2 = ec.app.ant.func.Move gp.fs.0.func.2.nc = nc0 gp.fs.0.func.3 = ec.app.ant.func.IfFoodAhead gp.fs.0.func.3.nc = nc2 gp.fs.0.func.4 = ec.app.ant.func.Progn2 gp.fs.0.func.4.nc = ncboth