I don't see anything out of the ordinary in your paramters below, and certainly the standard ECJ testing suite does 300 generations of 150 individuals in 2.5 seconds on my laptop. I don't think it's GeneVectorIndividual. This means it's *got* to be your fitness evaluation procedure, or maybe a custom clone method you wrote?
Try running as
java -Xprof ...
rather than
java ...
... and see if the profiler kicks up a method which is taking up all the time. Beyond that I can't help much without the actual code you're running.
[Also make sure you're using the latest SVN repository version so we're on the same page]
Sean
On Jun 29, 2017, at 9:46 PM, Enzo Fabbiani <[log in to unmask]> wrote:
> I'm having an issue of execution perfomance and I can't figure it out why. For testing purposes I have set 40 generations and is taking about a minute to end. 4000 generations elapsed time is about an hour.
>
> In order to determine the cause of the problem I have set crossover and mutation probabilty to 0 and the problem persists, so that I assume is something on ECJ execution.
>
> Someone can help me?
>
> I have two objetives, one of them maximization and the other minimization. In fitness function I set fitness the inverse function (objectives[1] = (-1)*fitness2). Crossover and mutation as custom functions.
>
> Here is my params file:
>
> parent.0 = ../moosuite/moosuite.params
> eval.problem = ec.app.MyProblem.MyProblem
>
> evalthreads = 2
> generations = 4000
> quit-on-run-complete = true
>
> stat = ec.multiobjective.MultiObjectiveStatistics
> stat.file = $out.stat
>
> pop = ec.Population
> pop.subpops = 1
> pop.subpop.0 = ec.Subpopulation
> pop.subpop.0.size = 50
>
> pop.subpop.0.species = ec.vector.GeneVectorSpecies
> pop.subpop.0.species.ind = ec.vector.GeneVectorIndividual
> pop.subpop.0.species.gene = ec.app.MyGene.MyGene
>
> pop.subpop.0.species.fitness.num-objectives = 2
> pop.subpop.0.species.fitness.maximize = true
>
> pop.subpop.0.species.crossover-type = one
> pop.subpop.0.species.mutation-type = reset
> pop.subpop.0.species.mutation-prob = 0.05
>
> pop.subpop.0.species.pipe = ec.vector.breed.VectorMutationPipeline
> pop.subpop.0.species.pipe.likelihood = 1.0
> pop.subpop.0.species.pipe.source.0 = ec.vector.breed.VectorCrossoverPipeline
> pop.subpop.0.species.pipe.source.0.likelihood = 0.6
> pop.subpop.0.species.pipe.source.0.source.0 = ec.select.TournamentSelection
> pop.subpop.0.species.pipe.source.0.source.1 = same
> select.tournament.size = 2
>
> seed.0 = time
> seed.1 = time
>
|