Sure. But instead of doing that, why not just subclass the problem in question and substitute an eval which does: Eval: modify the individual call super.eval >>I subclass the problem and call its evaluate(..) method inside the evalPopChunk(..) of my customized evaluator. Is it not the same as you suggested above? >>Another query: In this case, the problem.evaluate(..) does nothing but some checking and sets ind.evaluated = false because I am waiting for the evaluation data (ie. fitness) in my custom evaluator. It takes time to get the fitness. So, what I do is to wait and as soon as I get any fitness data, I counter check the hash of sending genotype vs receiving genotype that is already evaluated. If they match, then I set the fitness in evaluator using setFitness(...) method. Then do ind.evaluated = true. So, my question is : If I perform some work ( eg. fitness sharing ) on the fitness before calling setFitness(), then I set the updated fitness using setFitness() do I need to do some extra work on breeding/selection or post statistics? More specifically, is the updated fitness contribute in the selection process of breeding pipeline? Currently, I do fitness sharing before calling setFitness() but the data are not convincing even the ECJ stdout outputs for best fitness does not matches the per generational output. Thanks for you time -Bari On Fri, Nov 13, 2015 at 8:10 PM, BARI, ATM GOLAM <[log in to unmask]> wrote: > Thanks a lot for your reply. Yes, it is working now. > > > On Fri, Nov 13, 2015 at 5:05 PM, Sean Luke <[log in to unmask]> wrote: > >> On Nov 13, 2015, at 4:45 PM, Bari <[log in to unmask]> wrote: >> >> > I need to modify the first cell of an individual's genome and then send >> that individual to problem's evaluate(). As for example, if the genome is >> [10, 5, 3, 11, 12], I want to keep the first number (here it is 10) between >> 1 to 5. I can do that using IntegerVectorIndividual's genome field. But I >> can't modify the Individual in that way. As a result, I am not able to send >> a modified individual to problem's evaluate(). >> >> Why not? Why can't you just say >> ((IntegerVectorIndividual)ind).genome[0] = 4? >> >> >> > I read about Individual and the documentation says that Individual is >> immuatable but modification can be done and it is safe in a single threaded >> environment. But I am not finding any way (eg. any method like SetGenome() >> in IntegerVectorIndividual) to do that. Any suggestion is appreciated. >> >> Individual is not immutable per se. If you're doing this during >> evaluate, it's probably safe to do so. >> >> > NB: I am not subclassing EvolutionState directly, I am using state = >> ec.simple.simpleEvolutionState in param file but eval is replaced by my own >> evaluator which is extending ec.simple.SimpleEvaluator. >> >> Sure. But instead of doing that, why not just subclass the problem in >> question and substitute an eval which does: >> >> Eval: >> modify the individual >> call super.eval >> >> Sean >> > >