Should be true for both, to get both of them updated.  The code is fairly old, and it is very possible that we did not implement the fastest comprehensive approach. :-(

On May 20, 2008, at 9:00 AM, Peter Drake wrote:

I found at least a workaround here: I can look at updateFitness. On the first batch of evaluations, updateFitness[0] is true and updateFitness[1] is false. On the second pass, vice versa.

If there's a better way, let me know...

On May 20, 2008, at 8:00 AM, Peter Drake wrote:

This solves problem 2, but not problem 1.

I added this line to my evaluate() method:

state.output.message("Evaluating " + ind[0].hashCode() + " vs " + ind[1].hashCode());

When I ran the program (with one generation), I got this:

Evaluating 341584759 vs 202290185
Evaluating 341584759 vs 26376435
Evaluating 54843991 vs 202290185
Evaluating 54843991 vs 26376435
Evaluating 341584759 vs 202290185
Evaluating 54843991 vs 202290185
Evaluating 341584759 vs 26376435
Evaluating 54843991 vs 26376435

In terms of the notation below, it appears that the program did:

aC
bC
bD
aC
bC
bD

Is there a way to avoid the second batch of redundant comparisons?

Thanks,

Peter Drake

On May 19, 2008, at 11:20 PM, Liviu Panait wrote:

The individuals from the two populations will be sent in order: the first individual (individuals[0]) is from the first population, while the second one (individuals[1]) is from the second population.  Hope that solves both problems.

Liviu.

On May 19, 2008, at 8:50 AM, Peter Drake wrote:

I have two coevolving subpopulations. As I understand it, evaluation is handled by the evaluate() method in (my class that implements) GroupedProblemForm. For example, if population 0 has individuals a and b and population 1 has individuals C and D, this method will be called with the following pairs of arguments:

aC
bC
bD
Ca
Cb
Da
Db

I have two problems:

1) I would rather not evaluate both aC and Ca. Is there a way to avoid this?

2) I see no way to tell whether the first individual passed to evaluate is from population 0 or 1. Since my problem is asymmetric, I need this information for evaluation. Is there a way to find it, or do I need to redefine some of the coevolution stuff?

Peter Drake