Ejemplo n.º 1
0
        public double MeasureDiversity(Utility.SortList <AIPlayer> individuals)
        {
            int size = individuals.Count;

            double[] fitnessValues = new double[size];

            for (int i = 0; i < size; i++)
            {
                fitnessValues[i] = individuals[i].GetFitness();
            }

            return(fitnessValues.Distinct().Count() / (double)size);
        }
Ejemplo n.º 2
0
        public double MeasureDiversity(Utility.SortList <AIPlayer> individuals)
        {
            double avgFitness = individuals.Average(i => i.GetFitness());

            double fitDiff = 0.0;

            foreach (AIPlayer p in individuals)
            {
                double fit = p.GetFitness();
                fitDiff += (fit - avgFitness) * (fit - avgFitness);
            }

            return(Math.Sqrt(fitDiff / (individuals.Count - 1)));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }