Beispiel #1
0
        public override IList <KeyValuePair <int, int[]> > CalculateRoutes(IDictionary <int, int>[] distances)
        {
            Distances = distances;
            var result = new List <KeyValuePair <int, int[]> >();

            _random = new Random();
            var algorithm = new RandomRoutes {
                RouteLengthLimit = 50
            };

            algorithm.Distances = distances;

            var algorithmLocalSearch = new LocalSearch(algorithm);

            algorithmLocalSearch.Distances = distances;

            for (var i = 0; i < CountRoutes; i++)
            {
                var routeStart     = algorithm.CalculateRoutesFromCity(_random.Next(distances.Length));
                var optimizedRoute = algorithmLocalSearch.OptimizeRouteFromCity(i, routeStart);

                result.Add(new KeyValuePair <int, int[]>(i, optimizedRoute));
            }
            IsCalculated     = true;
            CalculatedRoutes = result;

            return(result);
        }
Beispiel #2
0
        public static void Report2(IDictionary <int, int>[] data)
        {
            var gc = new GreedyCycle {
                RouteLengthLimit = 50
            };

            RunAlgorithm(gc, data);

            var gcg = new GreedyCycleGrasp {
                RouteLengthLimit = 50
            };

            RunAlgorithm(gcg, data);

            var nn = new NN {
                RouteLengthLimit = 50
            };

            RunAlgorithm(nn, data);

            var nng = new NNGrasp {
                RouteLengthLimit = 50
            };

            RunAlgorithm(nng, data);

            var rr = new RandomRoutes {
                RouteLengthLimit = 50
            };

            RunAlgorithm(rr, data);

            var lsGc = new LocalSearch(gc);

            RunAlgorithm(lsGc, data);

            var lsGcg = new LocalSearch(gcg);

            RunAlgorithm(lsGcg, data);

            var lsNn = new LocalSearch(nn);

            RunAlgorithm(lsNn, data);

            var lsNng = new LocalSearch(nng);

            RunAlgorithm(lsNng, data);

            var lsRr = new LocalSearch(rr);

            RunAlgorithm(lsRr, data);
        }