public double MeasureDiversity(Utility.SortList <AIPlayer> individuals) { int maxDist = individuals.Get(0).Chromosome.Length; int count = individuals.Count; double sum = 0; for (int i = 0; i < count; i++) { for (int p = i + 1; p < count; p++) { sum += LevenshteinDistance(individuals.Get(i).Chromosome.Bitstring, individuals.Get(p).Chromosome.Bitstring); } } //calculate average distance between any two strings, and normalize to lie in range 0.0-1.0 return((sum / (count * (count - 1) / 2)) / maxDist); }
public double MeasureDiversity(Utility.SortList <AIPlayer> individuals) { //calculate average hamming distance between any two strings int size = individuals.Count; int hammingTotal = 0; for (int i = 0; i < size; i++) { for (int p = i + 1; p < size; p++) { hammingTotal += SingleHammingDistance(individuals.Get(i).Chromosome.Bitstring, individuals.Get(p).Chromosome.Bitstring); } } //calculate average between any two strings, and normalize to lie in range 0.0-1.0 int maxVal = individuals.Get(0).Chromosome.Bitstring.Length; return((hammingTotal / (double)(size * (size - 1) / 2)) / maxVal); }