>> FIRST QUESTION: >> >> Is it true that the setting below will evaluate the individuals in >> groups of two, with each individual in one group? >> >> eval = ec.coevolve.CompetitiveEvaluator >> eval.style = rand-2-ways >> eval.group-size = 2 > > 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. That is correct. I would suggest you look at the single-elimination- tournament as well, we found it to work quite nicely (check out our GECCO 2002 paper for more details). >> When an individual is copied, is the copy marked evaluated? I don't >> seem to be retaining the fitness individual from the previous round. >> Specifically, given the problem class described below, the "residual >> fitness" message is never printed. Any ideas why this might be >> happening? >> (In the params file, I've got "pop.subpop.0.species.crossover- >> prob = >> 0.1".) > > 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. > > 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? No matter who got evaluated and who did not, I believe the coevolutionary setting will ignore that information anyway: as the partners are changing at each generation, the information that somebody was evaluated at a previous generation is usually not very useful. Liviu.