Ejemplo n.º 1
0
        private RoutePredictionValidation ValidateRoutePrediction(TripSummary trip)
        {
            RoutePredictionValidation validation = new RoutePredictionValidation()
            {
                ActualEndLat = trip.EndLatitude,
                ActualEndLon = trip.EndLongitude,
                StartLat     = trip.StartLatitude,
                StartLon     = trip.StartLongitude,
            };

            var predictionResult = PredictEndLocation(trip.StartLatitude, trip.StartLongitude, trip.StartTime);

            validation.ClusterLevel = predictionResult.ClusterLevel;
            if (predictionResult.Predictions.Count > 0)
            {
                validation.PredictedEndLat           = predictionResult.Predictions[0].Lat;
                validation.PredictedEndLon           = predictionResult.Predictions[0].Lon;
                validation.PredictionAccuracyInMeter = CalculatePredictionAccuracyInMeter(
                    validation.ActualEndLat, validation.ActualEndLon,
                    validation.PredictedEndLat, validation.PredictedEndLon);
                foreach (var prediction in predictionResult.Predictions)
                {
                    var scoredItem = new ScoredRoutePredictionItem()
                    {
                        Prediction = prediction,
                        PredictionAccuracyInMeter =
                            CalculatePredictionAccuracyInMeter(validation.ActualEndLat, validation.ActualEndLon, prediction.Lat, prediction.Lon)
                    };
                    validation.ScoredPredictions.Add(scoredItem);
                }
            }

            return(validation);
        }
Ejemplo n.º 2
0
 public void AddTripSummary(TripSummary tripSummary)
 {
     if (startLocationRoot == null)
     {
         startLocationRoot = new LocationClustering<LocationInstance<TripSummary>>(clusterSize);
     }
     if (endLocationRoot == null)
     {
         endLocationRoot = new LocationClustering<TripSummary>(clusterSize);
     }
     var endLocation = endLocationRoot.AddLocation(tripSummary.EndLatitude, tripSummary.EndLongitude, tripSummary);
     startLocationRoot.AddLocation(tripSummary.StartLatitude, tripSummary.StartLongitude, endLocation);
 }
Ejemplo n.º 3
0
        public void AddTripSummary(TripSummary tripSummary)
        {
            if (startLocationRoot == null)
            {
                startLocationRoot = new LocationClustering <LocationInstance <TripSummary> >(clusterSize);
            }
            if (endLocationRoot == null)
            {
                endLocationRoot = new LocationClustering <TripSummary>(clusterSize);
            }
            var endLocation = endLocationRoot.AddLocation(tripSummary.EndLatitude, tripSummary.EndLongitude, tripSummary);

            startLocationRoot.AddLocation(tripSummary.StartLatitude, tripSummary.StartLongitude, endLocation);
        }
Ejemplo n.º 4
0
        private RoutePredictionValidation ValidateRoutePrediction(TripSummary trip)
        {
            RoutePredictionValidation validation = new RoutePredictionValidation() {
                ActualEndLat = trip.EndLatitude,
                ActualEndLon = trip.EndLongitude,
                StartLat = trip.StartLatitude,
                StartLon = trip.StartLongitude,
            };

            var predictionResult = PredictEndLocation(trip.StartLatitude, trip.StartLongitude, trip.StartTime);
            validation.ClusterLevel = predictionResult.ClusterLevel;
            if (predictionResult.Predictions.Count > 0)
            {
                validation.PredictedEndLat = predictionResult.Predictions[0].Lat;
                validation.PredictedEndLon = predictionResult.Predictions[0].Lon;
                validation.PredictionAccuracyInMeter = CalculatePredictionAccuracyInMeter(
                        validation.ActualEndLat, validation.ActualEndLon,
                        validation.PredictedEndLat, validation.PredictedEndLon);
                foreach (var prediction in predictionResult.Predictions)
                {
                    var scoredItem = new ScoredRoutePredictionItem()
                    {
                        Prediction = prediction,
                        PredictionAccuracyInMeter =
                            CalculatePredictionAccuracyInMeter(validation.ActualEndLat, validation.ActualEndLon, prediction.Lat, prediction.Lon)
                    };
                    validation.ScoredPredictions.Add(scoredItem);
                }
            }

            return validation;
        }
        private List<TripSummary> LoadTrips(List<String> drivers)
        {
            var trips = new List<TripSummary>();

            using (var rd = new StreamReader(@"..\..\testdata\TripSummaries.csv"))
            {
                // read the header
                rd.ReadLine();
                while (!rd.EndOfStream)
                {
                    var splits = rd.ReadLine().Split(',');
                    if (splits.Length == 11)
                    {
                        var trip = new TripSummary();

                        trip.DriverId = splits[0].Trim();
                        if (drivers.Find(item => item.Equals(trip.DriverId)) == null)
                        {
                            drivers.Add(trip.DriverId);
                        }
                        trip.TripId = splits[1].Trim();
                        // ignore [2] -> Timestamp
                        trip.Distance = double.Parse(splits[3].Trim(), CultureInfo.InvariantCulture);
                        trip.Duration = double.Parse(splits[4].Trim(), CultureInfo.InvariantCulture);
                        trip.EndLatitude = double.Parse(splits[5].Trim(), CultureInfo.InvariantCulture);
                        trip.EndLongitude = double.Parse(splits[6].Trim(), CultureInfo.InvariantCulture);
                        // ignore [7] -> EndTime
                        trip.StartLatitude = double.Parse(splits[8].Trim(), CultureInfo.InvariantCulture);
                        trip.StartLongitude = double.Parse(splits[9].Trim(), CultureInfo.InvariantCulture);
                        trip.StartTime = DateTime.ParseExact(splits[10].Trim(), "d.M.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                        trips.Add(trip);
                    }
                }
            }
            return trips;
        }