Esempio n. 1
0
        private double[][] getDistances(GDistanceMatrixResponse response)
        {
            var distances = RectangularArrays.ReturnRectangularDoubleArray(response.Rows.Length, response.Rows.Length);

            for (var i = 0; i < response.Rows.Length; i++)
            {
                for (var j = 0; j < response.Rows[i].Elements.Length; j++)
                {
                    distances[i][j] = response.Rows[i].Elements[j].Distance.Value;
                }
            }
            return(distances);
        }
Esempio n. 2
0
        public virtual ICollection <string> CalculateRoute(ICollection <string> locations)
        {
            if (locations == null || locations.Count == 0)
            {
                return(null);
            }
            if (locations.Count >= 1 && locations.Count <= 2)
            {
                return(locations);
            }

            GDistanceMatrixResponse response = null;

            response = GetResponse(locations);

            var distances = getDistances(response);
            var solver    = new RouteSolver.Solver.RouteSolver(distances);
            var p         = solver.Solve(20);

            return(BuildResult(p, locations));
        }