Esempio n. 1
0
        private Guid GetIdOfChromosomeRoulette()
        {
            double SumFitness = Individuals.Select(x => x.Fitness).Sum();

            if (SumFitness == 0)
            {
                return(Individuals[Random.Next() % Individuals.Count].Id);
            }
            int random = Random.Next() % (int)SumFitness;

            if (random <= 0)
            {
                random = 1;
            }
            double PartialSum = 0;

            foreach (var chromosome in Individuals)
            {
                PartialSum += chromosome.Fitness;
                if (PartialSum >= random)
                {
                    return(chromosome.Id);
                }
            }
            if (Individuals.Count > 0)
            {
                return(GetIdOfRandomChromosome());
            }
            return(Guid.Empty);
        }
 /// <summary>
 /// Create a population with additional GA information
 /// </summary>
 /// <param name="population">Individuals to store</param>
 /// <param name="number">N-th generation in a GA</param>
 public NumberedPopulation(Population <TIndividual, TGene> population, int number) : base(population)
 {
     Number     = number;
     TopFitness = Individuals.Select(i => i.Fitness).Max();
 }
Esempio n. 3
0
 public override string ToString()
 {
     return(string.Join(Environment.NewLine, Individuals.Select((ind, i) => $"{i + 1}:\t{ind}")));
 }
Esempio n. 4
0
 public double CalculateWorstDistance()
 {
     return(Individuals.Select(individual => individual.CalculateTotalDistance()).Max());
 }
Esempio n. 5
0
 public double CalculateAverageDistance()
 {
     return(Individuals.Select(individual => individual.CalculateTotalDistance()).Average());
 }
Esempio n. 6
0
 protected override void Initialize()
 {
     Individuals = Individuals.Select(individual => individual.Shuffle()).ToList();
 }
 public override string ToString()
 {
     return(string.Join(Environment.NewLine, Individuals.Select(i => i.ToString()).ToArray()));
 }