public KalmanPredictionResult Predict(KalmanTripSegment lastVehicleSegment, List <KalmanTripSegment> historicalSegments, double lastError) { double average = HistoricalAverage(historicalSegments); double variance = HistoricalVariance(historicalSegments, average); double gain = Gain(average, variance, lastError); double loopGain = 1 - gain; KalmanPredictionResult result = new KalmanPredictionResult(Prediction(gain, loopGain, historicalSegments, lastVehicleSegment, average), FilterError(variance, gain)); return(result); }
private double Prediction(double gain, double loopGain, List <KalmanTripSegment> historicalSegments, KalmanTripSegment lastSegment, double averageDuration) { double historicalDuration = averageDuration; long lastVehicleDuration = lastSegment.GetDestination().GetTime() - lastSegment.GetOrigin().GetTime(); double prediction = (loopGain * lastVehicleDuration) + (gain * historicalDuration); return(prediction); }