Eric, Thanks a lot. I found the missing dot. I also can't reproduce the result now :) NB: The random order was for the evaluator class. Basically, I was using variant of CompetitivEvaluator and found that randomizeOrder inside that CompetitiveEvalauator is the culprit here. Thanks again for your time. -agb On Wed, Feb 22, 2017 at 12:41 PM, Eric 'Siggy' Scott <[log in to unmask]> wrote: > Atm, > > I've been unable to reproduce this behavior. I've copied your custom > produce() method into the OurVectorMutator class of Tutorial 2, and run it > with very similar parameters to your own—but the children show up in the > new population in the same order as their parents in the old population, > which is what you're saying you expected (see attached screenshots). > > Does your custom mutator override any other methods? > > Siggy > > > On Wed, Feb 22, 2017 at 9:50 AM, BARI, ATM GOLAM <[log in to unmask]> > wrote: > >> Thanks a lot for your reply. >> >> What exactly are you doing in your VectorCrossoverPipeline.produce() >> method? >> - Nothing. I just put it as it is.(see the param file please) >> I put chunk-size = genome-size in the param file which I understand does >> not execute the loop inside defaultCrossover() responsible for respective >> crosssover type operation. As a result, no cross-over. >> >> If you are still pulling individuals from the source, then your >> population might be being affected by the TournamentSelection object. >> - why it should be affected if I just pull the individuals from the >> source (may be pipeline or selection method) and do nothing operation on >> them but forward only. This is what I am exactly doing. >> >> If you want the operators to do truly *nothing* to the population, I >> believe (after just glancing at ECJ's code) you can do true cloning by >> having your produce() method call Breeder.reproduce() and setting the >> 'produceChildrenFromSource' parameter to 'false'. >> - Is not that an extra work... produce() inside >> ec.vector.breed.VectroCrossooverPipeline() and >> ec.vector.Breed.VectorMutationPipeline() gets the individuals from their >> source and stick them into inds[q] location. So, if I want to do "nothing" >> in that individuals , Ill forward them as they are. Please let me correct >> if I am wrong. Please see the attached output. I get the individuals >> untouched but their indexes are not same from old to new population. >> >> Please see the produce() method for mutator class below. I just point >> old individual as parent and new individual as child whose ie. q value >> index are same. But when this produce() hands over all the individuals to >> the breeder, the individuals remain intact but their indexes does not match. >> >> public int produce(final int min, >> final int max, >> final int start, >> final int subpopulation, >> final Individual[] inds, >> final EvolutionState state, >> final int thread) { >> int n = sources[0].produce(min,max,start,subpopulation,inds,state, >> thread); >> >> >> if (!state.random[thread].nextBoolean(likelihood)) >> return reproduce(n, start, subpopulation, inds, state, thread, false); >> >> if (!(sources[0] instanceof BreedingPipeline)) >> for(int q=start;q<n+start;q++) >> inds[q] = (Individual)(inds[q].clone()); >> >> if (!(inds[start] instanceof IntegerVectorIndividual)) >> state.output.fatal("OurMutatorPipeline didn't get an >> IntegerVectorIndividual." + >> "The offending individual is in subpopulation " + subpopulation + " and >> it's:" + inds[start]); >> >> IntegerVectorSpecies species = (IntegerVectorSpecies)(inds[st >> art].species); >> >> >> IntegerVectorIndividual child, parent; >> for(int q=start;q<n+start;q++) { //Iterates single time >> //System.out.println("q " +q + " Individual Length " +inds.length); >> child = (IntegerVectorIndividual)inds[q]; >> parent = (IntegerVectorIndividual)state.population.subpops[subpopulat >> ion].individuals[q]; >> System.out.println("Before Mutation, "+ " child Individual : >> "+child.genotypeToStringForHumans() + " parent Individual : " >> +parent.genotypeToStringForHumans()); >> >> for(int x=0;x<child.genome.length;x++) { //Does mutation >> break; >> //dummy >> } >> System.out.println("After Mutation, "+ " child Individual : >> "+child.genotypeToStringForHumans() + " parent Individual : " >> +parent.genotypeToStringForHumans()); >> >> parent.evaluated=false; >> } >> >> return n; >> } >> -agb >> >> On Wed, Feb 22, 2017 at 9:11 AM, Eric 'Siggy' Scott <[log in to unmask]> >> wrote: >> >>> What exactly are you doing in your VectorCrossoverPipeline.produce() >>> method? If you are still pulling individuals from the source, then your >>> population might be being affected by the TournamentSelection object. >>> >>> If you want the operators to do truly *nothing* to the population, I >>> believe (after just glancing at ECJ's code) you can do true cloning by >>> having your produce() method call Breeder.reproduce() and setting the >>> 'produceChildrenFromSource' parameter to 'false'. >>> >>> Siggy >>> >>> On Wed, Feb 22, 2017 at 8:44 AM, Atm Golam Bari <[log in to unmask]> >>> wrote: >>> >>>> Hi, >>>> I was just understanding how ECJ generational loop works. So, I >>>> disabled the cross over using chunk-size = genome size, override >>>> produce(....) of ec.vector.breed.VectorCrossoverPipeline and did not >>>> do any mutation there. So, I expect the old and new individuals should be >>>> same throughout the run. I am getting ok that part. >>>> >>>> >>But the index of the old individuals does not match with the index of >>>> new individuals. Say individual [10, 20] has index 0 at old population but >>>> it gets different index (say index 3) in new population. >>>> >> I understand that newPop inside ec.simple.SimpleBreeder is the array >>>> that holds new population and state.population.subpops[subpopulation].individuals[] >>>> holds the old population at any time. >>>> >>>> Would you please let me know whether I am missing. Here is the part of >>>> parameter file (attached file name : Capture.PNG) . >>>> Thanks for your time, >>>> agb >>>> >>>> >>> >>> >>> -- >>> >>> Ph.D student in Computer Science, George Mason University >>> CFO and Web Director, Journal of Mason Graduate Research >>> http://mason.gmu.edu/~escott8/ >>> >> >> >> >> -- >> -Bari >> > > > > -- > > Ph.D student in Computer Science, George Mason University > CFO and Web Director, Journal of Mason Graduate Research > http://mason.gmu.edu/~escott8/ > -- -Bari