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 ...
... 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]
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)*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