Print

Print


It occurred to me that if you readjusted all the parameters to use  
defaults rather than absolute parameter values, you could plausibly  
run multiple simultaneous runs in parallel -- just put each one in a  
different subpopulation.  To do this required one modification of  
Population.java, which is now on CVS, adding a new parameter  
"pop.default-subpop".

Below is Artificial Ant with 10 simultaneous 512-individual  
subpopulations running in parallel.  Memory will no doubt be an  
issue.  But it runs, given enough bytes.

Sean


#### Basic ECJ parameters
verbosity = 				0
evalthreads = 				1
breedthreads = 				1
seed.0 = 				time
checkpoint = 				false
checkpoint-modulo			1
prefix =				ec

state = 				ec.simple.SimpleEvolutionState
init = 					ec.gp.GPInitializer
finish = 	        		ec.simple.SimpleFinisher
exch = 					ec.simple.SimpleExchanger
breed =					ec.simple.SimpleBreeder
eval =					ec.simple.SimpleEvaluator
stat = 					ec.gp.koza.KozaStatistics
stat.file				$out.stat

generations =				51
quit-on-run-complete =			true


##### Population parameters
pop = 					ec.Population
pop.subpops =				10
pop.default-subpop = 			ec.Subpopulation

##### Subpopulation parameters
ec.subpop.size =			512
ec.subpop.duplicate-retries = 		100
ec.subpop.species =			ec.gp.GPSpecies
gp.species.pipe = 			ec.breed.MultiBreedingPipeline

##### Species parameters
gp.species.fitness = 			ec.gp.koza.KozaFitness
gp.species.ind = 			ec.gp.GPIndividual

##### GPIndividual parameters
gp.individual.numtrees = 		1
gp.individual.tree.0 = 			ec.gp.GPTree

##### GPTree parameters
gp.tree.tc = 				tc0

##### MultiBreedingPipeline parameters
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

##### Crossover parameters
gp.koza.xover.prob =			0.9
gp.koza.xover.source.0 = 		ec.select.TournamentSelection
gp.koza.xover.source.1 = 		same
gp.koza.xover.ns.0 = 			ec.gp.koza.KozaNodeSelector
gp.koza.xover.ns.1 = 			same
gp.koza.xover.maxdepth = 		17
gp.koza.xover.tries = 			1

##### Reproduction parameters
breed.reproduce.prob = 			0.1
breed.reproduce.source.0 = 		ec.select.TournamentSelection

##### TournamentSelection parameters
select.tournament.size = 		7

##### GPProblem parameters
eval.problem.stack = 			ec.gp.ADFStack
eval.problem.stack.context = 		ec.gp.ADFContext

##### KozaNodeSelector parameters
gp.koza.ns.terminals = 			0.1
gp.koza.ns.nonterminals = 		0.9
gp.koza.ns.root = 			0.0

##### GPFunctionSet parameters
gp.fs.size = 				1
gp.fs.0 = 				ec.gp.GPFunctionSet
gp.fs.0.name = 				f0

##### GPType parameters
gp.type.a.size = 			1
gp.type.a.0.name = 			nil
gp.type.s.size = 			0

##### GPTreeConstraints parameters
gp.tc.size = 				1
gp.tc.0 = 				ec.gp.GPTreeConstraints
gp.tc.0.name = 				tc0
gp.tc.0.fset = 				f0
gp.tc.0.returns = 			nil
gp.tc.0.init = 				ec.gp.koza.HalfBuilder

##### HalfBuilder parameters
gp.koza.half.min-depth = 		2
gp.koza.half.max-depth = 		6
gp.koza.half.growp = 			0.5

##### GPNodeConstraints parameters
gp.nc.size = 				7

gp.nc.0 = 				ec.gp.GPNodeConstraints
gp.nc.0.name = 				nc0
gp.nc.0.returns = 			nil
gp.nc.0.size = 				0

gp.nc.1 = 				ec.gp.GPNodeConstraints
gp.nc.1.name = 				nc1
gp.nc.1.returns = 			nil
gp.nc.1.size = 				1
gp.nc.1.child.0 = 			nil

gp.nc.2 = 				ec.gp.GPNodeConstraints
gp.nc.2.name = 				nc2
gp.nc.2.returns = 			nil
gp.nc.2.size = 				2
gp.nc.2.child.0 = 			nil
gp.nc.2.child.1 = 			nil

gp.nc.3 = 				ec.gp.GPNodeConstraints
gp.nc.3.name = 				nc3
gp.nc.3.returns = 			nil
gp.nc.3.size = 				3
gp.nc.3.child.0 = 			nil
gp.nc.3.child.1 = 			nil
gp.nc.3.child.2 = 			nil

gp.nc.4 = 				ec.gp.GPNodeConstraints
gp.nc.4.name = 				nc4
gp.nc.4.returns = 			nil
gp.nc.4.size = 				4
gp.nc.4.child.0 = 			nil
gp.nc.4.child.1 = 			nil
gp.nc.4.child.2 = 			nil
gp.nc.4.child.3 = 			nil

gp.nc.5 = 				ec.gp.GPNodeConstraints
gp.nc.5.name = 				nc5
gp.nc.5.returns = 			nil
gp.nc.5.size = 				5
gp.nc.5.child.0 = 			nil
gp.nc.5.child.1 = 			nil
gp.nc.5.child.2 = 			nil
gp.nc.5.child.3 = 			nil
gp.nc.5.child.4 = 			nil

gp.nc.6 = 				ec.gp.GPNodeConstraints
gp.nc.6.name = 				nc6
gp.nc.6.returns = 			nil
gp.nc.6.size = 				6
gp.nc.6.child.0 = 			nil
gp.nc.6.child.1 = 			nil
gp.nc.6.child.2 = 			nil
gp.nc.6.child.3 = 			nil
gp.nc.6.child.4 = 			nil
gp.nc.6.child.5 = 			nil



###### Artificial Ant #######

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 = nc2
gp.fs.0.func.5 = ec.app.ant.func.Progn3
gp.fs.0.func.5.nc = nc3

eval.problem = ec.app.ant.Ant
eval.problem.data = ec.app.ant.AntData
eval.problem.stack.context.data = ec.app.ant.AntData

gp.fs.0.size = 6
eval.problem.moves = 400
eval.problem.file = santafe.trl