Beispiel #1
0
 public override void Mutate()
 {
     if (Parameters.RandomGenerator.NextDouble() < Parameters.MutationsRate)
     {
         int     index1 = Parameters.RandomGenerator.Next(Genome.Count);
         TSPGene gene   = (TSPGene)Genome.ElementAt(index1);
         Genome.RemoveAt(index1);
         int index2 = Parameters.RandomGenerator.Next(Genome.Count);
         Genome.Insert(index2, gene);
     }
 }
Beispiel #2
0
        public override double Evaluate()
        {
            int     totalKm = 0;
            TSPGene oldGene = null;

            foreach (TSPGene gene in Genome)
            {
                if (oldGene != null)
                {
                    totalKm += gene.GetDistance(oldGene);
                }
                oldGene = gene;
            }
            totalKm += oldGene.GetDistance((TSPGene)Genome.FirstOrDefault());
            fitness  = totalKm;
            return(fitness);
        }
Beispiel #3
0
 public int GetDistance(TSPGene a_gene)
 {
     return(TSP.GetDistance(city, a_gene.city));
 }
Beispiel #4
0
 public TSPGene(TSPGene a_gene)
 {
     city = a_gene.city;
 }