public bool Optimize()
        {
            var route = _routeRepository.GetAllRoutes().First();

            bool improvementFound = false;
            int  numberOfIterationsWithoutImprovement = 0;
            int  numberOfIterations = 0;

            while (numberOfIterationsWithoutImprovement == 0 && numberOfIterations <= 3)
            {
                numberOfIterationsWithoutImprovement++;
                numberOfIterations++;
                for (int i = 0; i < route.Nodes.Count - 1; i++)
                {
                    for (int j = 1; j < route.Nodes.Count; j++)
                    {
                        var cost = this.CalculateCost(route, i, j);

                        if (cost < -0.0001)
                        {
                            numberOfIterationsWithoutImprovement = 0;
                            improvementFound = true;

                            var newOrder = this.GetNewOrder(route, i, j);
                            route.UpdateRoute(newOrder, route.Cost + cost);

                            break;
                        }
                    }
                }
            }

            return(improvementFound);
        }
        public IList <RouteView> GetAllRoutes()
        {
            IList <RouteEntityView> route          = _routeRepository.GetAllRoutes();
            IList <RouteView>       routeResponses = new List <RouteView>();

            foreach (RouteEntityView routeEntity in route)
            {
                RouteView wagon = routeEntity.ToDomainView();
                routeResponses.Add(wagon);
            }
            return(routeResponses);
        }
        public RouteResponse[] GetAllRoutes()
        {
            // Extract user ID from token to use to filter routes.
            var userId = User.GetUserId();

            // We may not have a user ID due to impersonation. Throw an exception.
            if (userId == null)
            {
                throw new AuthenticationException("Unable to determine user ID of current user.");
            }

            // We'll use our map function to map our internal Route objects to our RouteResponse wire format.
            return(_routeRepository.GetAllRoutes(userId).Select(RouteResponse.Map).ToArray());
        }
Exemple #4
0
        public async Task WriteSolution()
        {
            var sb = new StringBuilder();

            foreach (var route in _routeRepository.GetAllRoutes())
            {
                sb.AppendLine($"{route.Cost} 0");

                foreach (var node in route.Nodes)
                {
                    sb.Append($"{node.Id} ");
                }
            }

            await _dtoStore.WriteSolution(sb.ToString());
        }
        public IHttpActionResult GetAllRoutes()
        {
            WebResponseContentModel <List <RouteModel> > tmpUser = new WebResponseContentModel <List <RouteModel> >();
            Del <List <RouteModel> > responseStatusHandler       = ProcessContentModel;

            try
            {
                tmpUser.Content = routeRepo.GetAllRoutes();
                responseStatusHandler(tmpUser);
            }
            catch (Exception ex)
            {
                responseStatusHandler(tmpUser, ex);
                return(Json(tmpUser));
            }

            return(Json(tmpUser));
        }
        public string[] FindBestRoute(string origin, string destination, bool showAllRoutesFoud = false)
        {
            Route[] routes = _routeRepository.GetAllRoutes();

            Tuple <string, int> bestRoute = null;

            for (int index = 0; index < routes.Length; index++)
            {
                var foundRoute = MountRoute(origin, destination, routes, index);

                if (showAllRoutesFoud)
                {
                    if (foundRoute.Item2 != -1)
                    {
                        Console.WriteLine($"route found: {foundRoute.Item1} > ${foundRoute.Item2}");
                    }
                }

                if (bestRoute == null)
                {
                    bestRoute = foundRoute;
                }

                if (foundRoute.Item2 != -1)
                {
                    if (bestRoute.Item2 == -1)
                    {
                        bestRoute = foundRoute;
                    }

                    if (foundRoute.Item2 < bestRoute.Item2)
                    {
                        bestRoute = foundRoute;
                    }
                }
            }

            if (bestRoute is null)
            {
                return(new string[] { "", "-1" });
            }
            return(new string[] { bestRoute.Item1, bestRoute.Item2.ToString() });
        }
Exemple #7
0
        protected override void OnAppearing()
        {
            base.OnAppearing();

            var availableRoutes   = _routeRepository.GetAllRoutes();
            var userSubscriptions = _routeRepository.GetUserSubscription(_sessionData.User.UserId)
                                    .Result
                                    .ToLookup(x => x.RouteId);

            var routes = new ObservableCollection <RouteViewModel>();

            RouteViewModel  routeViewModel;
            SubscriptionDTO subscription;

            foreach (var item in availableRoutes.Result)
            {
                subscription = userSubscriptions[item.RouteId].FirstOrDefault();

                routeViewModel = new RouteViewModel()
                {
                    Name             = item.Name,
                    RouteId          = item.RouteId,
                    IsSuscribed      = subscription != null,
                    SubscriptionId   = subscription?.SubscriptionId,
                    RouteCoordinates = new ObservableCollection <Position>()
                };

                // Se mapean las coordenadas
                item.Position.ForEach(x => routeViewModel
                                      .RouteCoordinates
                                      .Add(new Position(x.Latitude, x.Longitude))
                                      );

                routes.Add(routeViewModel);
            }

            routeLists.ItemsSource = routes;
        }
Exemple #8
0
        public List <Route> GetAllRoutes()
        {
            var AllRoutes = _repository.GetAllRoutes();

            return(AllRoutes);
        }
Exemple #9
0
 public Graph(IRouteRepository <TNode> routeRepository)
 {
     _routeRepository = routeRepository;
     _routes          = _routeRepository.GetAllRoutes();
 }