Just an example, could get more complex than this: look into ec.simple.SimpleEvolutionState.evolve() // EVALUATION statistics.preEvaluationStatistics(this); evaluator.evaluatePopulation(this); statistics.postEvaluationStatistics(this); // SHOULD WE QUIT? if (evaluator.runComplete(this) && quitOnRunComplete) { output.message("Found Ideal Individual"); return R_SUCCESS; } // SHOULD WE QUIT? if (generation == numGenerations-1) { return R_FAILURE; } // PRE-BREEDING EXCHANGING statistics.prePreBreedingExchangeStatistics(this); population = exchanger.preBreedingExchangePopulation(this); statistics.postPreBreedingExchangeStatistics(this); String exchangerWantsToShutdown = exchanger.runComplete(this); if (exchangerWantsToShutdown!=null) { output.message(exchangerWantsToShutdown); /* * Don't really know what to return here. The only place I could * find where runComplete ever returns non-null is * IslandExchange. However, that can return non-null whether or * not the ideal individual was found (for example, if there was * a communication error with the server). * * Since the original version of this code didn't care, and the * result was initialized to R_SUCCESS before the while loop, I'm * just going to return R_SUCCESS here. */ return R_SUCCESS; } // BREEDING statistics.preBreedingStatistics(this); population = breeder.breedPopulation(this); You can do it anywhere between evaluation and breeding. I would probably do it in a customized Evaluator if I am just going to divide all the fitness by some value.. On Tue, Jul 29, 2014 at 11:02 AM, Márcio Basgalupp <[log in to unmask]> wrote: > Thank you Ye. > > That's true. > > But my question is: where (in the code) is this post-evaluation stage? > > Best, > Márcio > -------- > Prof. Dr. Márcio Porto Basgalupp > Instituto de Ciência e Tecnologia (ICT) > Universidade Federal de São Paulo (UNIFESP) > Tel: +55 12 3309-9582 > > > On Tue, Jul 29, 2014 at 11:40 AM, Xiaomeng Ye <[log in to unmask]> > wrote: > > It has been a while since I last used ECJ. I could be totally wrong. > > > > I remember there is a post-evaluation stage for each generation in the > > evolution. If I am going to divide all fitness values by the biggest > one. I > > will do it in this post-evaluation stage. > > > > This post-evaluation stage is probably between the evaluation stage > (where > > the fitness are calculated) and the breeding stage (where > crossover/mutation > > happens). > > > > > > On Tue, Jul 29, 2014 at 10:18 AM, Márcio Basgalupp <[log in to unmask]> > > wrote: > >> > >> Dear all, > >> > >> I'm using ECJ for implementing a GP based-program. After evaluating > >> (compute fitness) all individuals, I would like to "update" these > >> fitness values (for example, divide all fitness values by the biggest > >> one). However, I couldn't find where (which class) I have to do that. > >> It should be where ECJ calls the method evaluate() for each > >> individual, then I could update before proceeding to the next steps > >> (select, genetic operators, ...). > >> > >> I would appreciate if someone help me. > >> > >> Best, > >> Márcio > >> > >> -------- > >> Prof. Dr. Márcio Porto Basgalupp > >> Instituto de Ciência e Tecnologia (ICT) > >> Universidade Federal de São Paulo (UNIFESP) > >> Tel: +55 12 3309-9582 > > > > >