Hi Warren, here's the config I'm using: # Copyright 2006 by Sean Luke and George Mason University # Licensed under the Academic Free License version 3.0 # See the file "LICENSE" for more information #### PARENT PARAMS parent.0 = /home/jbojan/Programme/BachelorThesis/ecj21/ec/gp/koza/koza.params #### CORE DEFINITION breedthreads = 15 evalthreads = 15 seed.0 = time seed.1 = time seed.2 = time seed.3 = time seed.4 = time seed.5 = time seed.6 = time seed.7 = time seed.8 = time seed.9 = time seed.10 = time seed.11 = time seed.12 = time seed.13 = time seed.14 = time #### POPULATION DEFINITION generations = 50 quit-on-run-complete = true pop.subpops = 1 pop.subpops.0 = ec.Subpopulation pop.subpop.0.size = 15 pop.subpop.0.duplicate-retries = 0 breed.elite.0 = 0 stat.file = $out.stat #### BREEDING DEFINITION pop.subpop.0.species.pipe.source.0=ec.gp.breed.SizeFairCrossoverPipeline gp.breed.size-fair.source.0=ec.select.TournamentSelection gp.breed.size-fair.source.1=same gp.breed.size-fair.ns.0=ec.gp.koza.KozaNodeSelector gp.breed.size-fair.ns.1=ec.gp.koza.KozaNodeSelector gp.breed.size-fair.tries=20 gp.breed.size-fair.homologous=true gp.breed.size-fair.maxdepth=20 #### TREE DEFINITION pop.subpop.0.species.ind.numtrees = 1 pop.subpop.0.species.ind.tree.0 = ec.gp.GPTree pop.subpop.0.species.ind.tree.0.tc = tc0 #### TREE CONSTRAINTS gp.tc.size = 1 gp.tc.0 = ec.gp.GPTreeConstraints gp.tc.0.name = tc0 gp.tc.0.fset = f0 gp.tc.0.returns = rule gp.tc.0.init = ec.gp.koza.HalfBuilder gp.tc.0.init.growp = 0.5 gp.tc.0.init.min = 2 gp.tc.0.init.max = 6 #### FUNCTION SETS gp.fs.size = 1 ### Function set for a rule exclusive then gp.fs.0 = ec.gp.GPFunctionSet gp.fs.0.name = f0 gp.fs.0.size = 7 gp.fs.0.func.0 = rulevolution.nodes.When gp.fs.0.func.0.nc = nc0 gp.fs.0.func.1 = rulevolution.nodes.Not gp.fs.0.func.1.nc = nc1 gp.fs.0.func.1.prob = 0.1 gp.fs.0.func.2 = rulevolution.nodes.And gp.fs.0.func.2.nc = nc2 gp.fs.0.func.3 = rulevolution.nodes.Faktum gp.fs.0.func.3.nc = nc6 gp.fs.0.func.4 = rulevolution.nodes.Contains gp.fs.0.func.4.nc = nc5 gp.fs.0.func.5 = rulevolution.nodes.Exists gp.fs.0.func.5.nc = nc3 gp.fs.0.func.6 = rulevolution.nodes.Eval gp.fs.0.func.6.nc = nc4 #### NODE CONSTRAINTS gp.nc.size = 7 # Rule Node gp.nc.0 = ec.gp.GPNodeConstraints gp.nc.0.name = nc0 gp.nc.0.returns = rule gp.nc.0.size = 1 gp.nc.0.child.0 = condition # Not Node gp.nc.1 = ec.gp.GPNodeConstraints gp.nc.1.name = nc1 gp.nc.1.returns = condition gp.nc.1.size = 1 gp.nc.1.child.0 = exist # And Node gp.nc.2 = ec.gp.GPNodeConstraints gp.nc.2.name = nc2 gp.nc.2.returns = condition gp.nc.2.size = 2 gp.nc.2.child.0 = conditionNode gp.nc.2.child.1 = conditionNode # Exists Node gp.nc.3 = ec.gp.GPNodeConstraints gp.nc.3.name = nc3 gp.nc.3.returns = exist gp.nc.3.size = 1 gp.nc.3.child.0 = subconditionNode # Eval Node gp.nc.4 = ec.gp.GPNodeConstraints gp.nc.4.name = nc4 gp.nc.4.returns = condition gp.nc.4.size = 1 gp.nc.4.child.0 = boolean # Contains Node gp.nc.5 = ec.gp.GPNodeConstraints gp.nc.5.name = nc5 gp.nc.5.returns = subcondition gp.nc.5.size = 0 # Generic Faktum Node (It will be loaded from Methodpool Class) gp.nc.6 = ec.gp.GPNodeConstraints gp.nc.6.name = nc6 gp.nc.6.returns = boolean gp.nc.6.size = 0 #### NODE TYPES gp.type.a.size = 5 gp.type.a.0.name = boolean gp.type.a.1.name = condition gp.type.a.2.name = subcondition gp.type.a.3.name = rule gp.type.a.4.name = exist gp.type.s.size = 2 gp.type.s.0.name = conditionNode gp.type.s.0.size = 2 gp.type.s.0.member.0 = condition gp.type.s.0.member.1 = exist gp.type.s.1.name = subconditionNode gp.type.s.1.size = 2 gp.type.s.1.member.0 = boolean gp.type.s.1.member.1 = subcondition #### PROBLEM AND RULEDATA DEFINITION eval.problem = rulevolution.RulEvolution eval.problem.data = rulevolution.RuleData Like you see I'm using only 15 cores so that the server still has some space. I've also set the size of my population to 15, because I think that it's way faster if each core handles one evaluation of the population. Greetings Bojan ----- Ursprüngliche Mail ----- Von: "Warren Henning" <[log in to unmask]> An: [log in to unmask] Gesendet: Mittwoch, 19. Juni 2013 11:27:01 Betreff: Re: ECJ is not using all cores Did you set up ECJ to use the number of cores you expect? Specifically what did you do to set this up? Which configuration setting and precisely what did you give it? On Wed, Jun 19, 2013 at 2:13 AM, Bojan Janisch < [log in to unmask] > wrote: Hello everyone, I'm using ECJ for rule-creation and -evaluation. Recently I can use ECJ on 20 cores of a server which runs very fast at the beginning. But after a while the CPU-usage goes down to 1 core which I don't understand. The evaluation process looks so: Step 1: Create a valid rule from GPTree Step 2: If rule contains nothing useful skip everything else, set bad score and go to Step 6 Step 3: Rule contains something useful, so load the testdata Step 4: Run the rule through Drools and testdata (Drools is a ruleengine which also runs multithreaded) Step 5: Compare the output of Drools and a goldstandard (the goldstandard and some more information are one time loaded at setup) Step 6: Put the score, returned by the comparison, into the koza fitness I don't know why but after some time, ECJ is only using 1 core. Does someone got an idea where the problem could come from? Greetings Bojan