OK, I see the problem. It was based on a misunderstanding of the GroupedProblemForm.evaluate parameters. I thought that the ind[] array would have ind[0] the individual under evaluation, and ind [1] the opponent. That's how it was when I only had one subpopulation and was running the CompetitiveEvaluator. I switched to MultiPopCoevoluationaryEvaluator, figuring it would do the same thing, but it doesn't. Apparently the ind[] array is the size of the number of subpops, and the update[] element that's true is the individual under evaluation. Now the only problem is that it seems that ind[0] is always an individual from subpop 0, ind[1] is an individual from subpop 1, and ind[2] is one from subpop 2. What I really wanted was to choose a random individual from a random subpop (not in my own subpop). I guess that means that in my GPProblem's evaluate method, I will have to randomly choose one of the non-updated ind's. It would be nice to be able to choose the number of opponents in the parameters for MultiPopCoevolutionaryEvaluator... --Rob