Now that I think about it, I would call super.postEvaluationStatistics(state) AFTER you do the manipulation. That way no statistics are outputted until you have had a chance to manipulate the fitness values. Sean > My suggestion would be to create a Statistics class: > > public MyStatistics extends Statistics > { > public void postEvaluationStatistics(final EvolutionState state) > { > super.postEvaluationStatistics(state); // always call this > > // Here you can manipulate state.population.subpops[0].individuals > // however you like > } > } > > Then I'd just add this class to the Statistics chain: > > stat.num-children = 1 > stat.child.0 = MyStatistics > > Sean > > On Jul 29, 2014, at 5:23 PM, Eric Scott <[log in to unmask]> wrote: > >> The post-evaluation stage is only for running statistics. >> >> Look in the evolve() method of your EvolutionState -- that has the high-level loop. You'll probably want to customize your Evaluator to add a post-processing step, leaving the EvolutionState as is. >> >> Siggy >> >> >> 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 >>> >>> >> >> >> >> -- >> >> Ph.D student in Computer Science >> George Mason University >> http://mason.gmu.edu/~escott8/ >