On Oct 26, 2009, at 12:56 PM, Adam Spalek wrote: > Is there an ECJ implementation available to remove individuals based > on > their similarity from the population to increase/maintain diversity? ECJ doesn't have it by default, no. Because we don't know what kind of individuals you're using beforehand. > (1) Using Exchanger with custom SelectionMethod ? > (2) Using BreedingPipeline with custom SelectionMethod ? The big issue here is the O(n^2) computational complexity involved in comparing everyone to everyone and then ranking them based on who's "most similar" to whom and by how much. You could do it in two ways I imagine: 1. If a generated individual is "to similar" to some existing individual in the population, dump him and create a new one. Here you'd make a custom BreedingPipeline at the very top of your pipeline chain (that is, the opposite end from the selection methods), which asks for individuals until it gets one which match your desired quality. You'd have to determine the notion of "quality". 2. Or you could override your Evaluator to first test individuals for similarity and for each unacceptably similar group, make all but one member of that group have a Very Bad Fitness. I'd do #1. Sean