>> Liviu is our coevolution man, but I believe this will do the >> following: >> >> For each individual i in the population >> If the individual has not yet had GROUPSIZE evaluations >> Pick a random individual j from the population that >> has not yet had GROUPSIZE evaluations >> evaluate i and j together once, assigning fitness to >> each >> >> Sometimes it happens that there's no one on left to evaluate against, >> in which case a random person j is chosen and his fitness is not >> assigned. > > Okay, that would explain some things. Is an individual ever matched > against itself? We usually check for that not to happen. >> During breeding, except for a few GP modifiers which had a bug in >> them, individuals modified to the next generation should be marked as >> not evaluated. Individuals which are direct copies will be marked as >> evaluated. However CompetitiveEvaluator will evaluate individuals no >> matter how they're marked. > > In other words, individuals will always be marked as not evaluated? Yes. > If so, how can I set the initial fitness of an unevaluated individual > just once? Use problem.preprocessPopulation(state,state.population) >> Your GoProblem example is odd though: it appears in >> postprocessPopulation you're just trimming fitnesses to between 0 and >> 100. Why would you want to do that? > > I set the minimum to zero in the belief that fitnesses have to be > nonnegative. Is this true? SimpleFitness may have arbitrary values as of the previous version (I believe, or if not the current version does not complain about that anymore). > I set the maximum to 100 so that an individual could not build up a > huge fitness by winning many early games, then never be knocked down > by later losses. I am not sure I follow the reasoning. Even if an individual won against early competitors in initial generations, that says little about how good he is against better opponents found at later generations. I would treat this on a per-generation basis and ignore information about wins or loses from previous generations. Again, I encourage you to look into the single-elimination tournament, which we found to work nicely. There is also a version of double-elimination-tournament somewhere, though we have not tested it that much. Best regards, Liviu.