示例#1
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;
        }
示例#2
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);
        }
示例#3
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);
        }
示例#4
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);
        }
示例#5
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;
        }
示例#6
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;
        }