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); } }
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); }
public int GetDistance(TSPGene a_gene) { return(TSP.GetDistance(city, a_gene.city)); }
public TSPGene(TSPGene a_gene) { city = a_gene.city; }