$ X_k = \begin{bmatrix} d_k \\ v_k \end{bmatrix} $
$ = f(X_{k-1}) $
$ Y_k $
$ = \begin{bmatrix} \phi_k \\ \lambda_k \end{bmatrix} $
$ = h(X_k) $
$ Y_k | X_k^{(i)}, \Sigma \sim \mathrm{Binormal}(h(X_k^{(i)}), \Sigma) $
$ w_i = \frac{\ell(X_k^{(i)} | Y_k, \Sigma)}{\sum_j \ell(X_k^{(j)} | Y_k, \Sigma)} $
1. Bus model: particle filter
All we need to do is …
- Model all buses in Auckland (1000+ at peak hour)
- In real-time, target is 30 seconds or faster
- Goodbye R, hello C++
2. Network Model
- Road segment = stretch of road between two intersections
- Independent of route
- Network state parameters:
$\tau_\ell$ = travel time along segment $\ell$
$\xi_\ell$ = variance of travel time along segment $\ell$
- Data = estimated travel time of buses along segment
-
Implemented using Kalman filter
2. Network Model
- Model all buses in real time
- Update network state as buses traverse segments
3: Arrival time prediction
- ETA = sum road segment travel times
- Calculate ETA for each particle
Simulate travel times, stop/traffic light wait times, etc
- ETA distribution incorporates remaining uncertainty
- Prediction intervals to communicate to commuters
e.g., 10-16 minutes vs. 12 minutes
- Future Work: journey planning?