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); }
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); }