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