Print

Print


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