Esempio n. 1
0
        public Route Mutate()
        {
            Route newRoute = new Route(cities);
            newRoute.genotype = new Dictionary<City, double>();

            foreach (KeyValuePair<City, double> entry in genotype) {
                newRoute.genotype.Add(entry.Key, entry.Value);
            }

            newRoute.genotype[cities.Cities[random.Next(cities.Count)]] = random.NextDouble();
            newRoute.ClearCache();

            return newRoute;
        }
Esempio n. 2
0
        public Route Mate(Route father)
        {
            Route newRoute = new Route(cities);
            newRoute.genotype = new Dictionary<City, double>();

            foreach (City city in cities.Cities)
            {
                Route parent = (random.Next() % 2 == 0) ? this : father;
                newRoute.genotype.Add(city, parent.genotype[city]);
            }

            newRoute.ClearCache();

            return newRoute;
        }
Esempio n. 3
0
        public Route Split(Route father)
        {
            int cutoff = 50;
            int current = 0;
            Route newRoute = new Route(cities);
            newRoute.genotype = new Dictionary<City, double>();

            foreach (City city in cities.Cities)
            {
                Route parent = (++current < cutoff) ? this : father;
                newRoute.genotype.Add(city, parent.genotype[city]);
            }

            newRoute.ClearCache();

            return newRoute;
        }