AI-System for Road Traffic Congestion Forecasting
Traffic prediction is the foundation of intelligent transportation systems (ITS). Accurate congestion forecasting enables optimizing traffic signal control, informing drivers, and planning urban infrastructure. ML achieves 85-92% accuracy for 30-minute forecasts on specific road segments.
Data Sources
Sensor Data:
- Induction loops: vehicle count, speed, lane occupancy
- Video detectors: different from loops, provide vehicle classification
- Radar detectors (Wavetronix, RTMS)
- Bluetooth/Wi-Fi tracking: time between points → speed
GPS Floating Car Data:
- Yandex/2GIS: aggregated flow speed data
- Google Maps Traffic: generalized data
- Waze: crowdsourced incident reports + GPS tracks
- FCD (Floating Car Data) from taxi fleets and car-sharing services
Infrastructure Data:
- Road network topology (OpenStreetMap, highway authorities)
- Traffic signal locations and phase plans
- Pedestrian crossing and bus stop locations
Spatial-Temporal Models
Graph-based Models: Road network = graph. Each sensor = node. Roads between nodes = edges.
Graph Convolutional Network (GCN) for Traffic:
import torch
from torch_geometric.nn import GCNConv
class TrafficGCN(nn.Module):
def __init__(self, n_nodes, in_features, hidden, out_features):
super().__init__()
self.gcn1 = GCNConv(in_features, hidden)
self.gcn2 = GCNConv(hidden, hidden)
self.lstm = nn.LSTM(hidden, hidden, batch_first=True)
self.fc = nn.Linear(hidden, out_features)
def forward(self, x, edge_index, edge_weight):
# x: [batch, seq_len, n_nodes, n_features]
# Apply GCN to each time step
gcn_out = self.gcn1(x, edge_index, edge_weight).relu()
gcn_out = self.gcn2(gcn_out, edge_index, edge_weight)
# LSTM along temporal dimension
lstm_out, _ = self.lstm(gcn_out)
return self.fc(lstm_out[:, -1, :])
Key Architectures:
- DCRNN (Diffusion Convolutional RNN): models traffic diffusion across graph
- Graph WaveNet: dilated causal convolutions + adaptive adjacency matrix
- ASTGCN: attention-based spatial-temporal GCN
Event-Based Forecasting
Traffic responds non-linearly to events:
Planned Events:
- Football match/concert: sharp spike 30-60 min after end
- School: morning peak at start and end of classes
- Workday: standard morning/evening peak
Anomalous Events:
- Accidents (from Waze/cameras): throughput reduction 40-80%
- Road repair (from schedule)
- Snow/rain: speed regime decreases
Event-Aware Forecast:
# Add event flags as known future covariates (TFT)
event_features = {
'stadium_match_flag': upcoming_match_within_3h,
'weather_rain_intensity': precipitation_forecast,
'roadwork_active': roadwork_on_segment,
'incident_nearby': incident_within_1km_duration,
'holiday_flag': is_holiday,
'school_day': not is_school_holiday
}
Traffic Signal Control Optimization
Traffic forecast → adaptive signal management:
SCOOT/SCATS (Traditional): react to detectors in real-time, but without forecast.
AI-Based Control: RL agent where action = signal phase plans. State = current and predicted flow speeds. Reward = minimize total network delay.
Multi-Intersection Coordination: Coordinating 10-20 intersections on a corridor → "green wave" — phase synchronization. RL significantly outperforms fixed phase timing.
Driver Information
Variable Message Signs (VMS):
- Travel time forecast for 15/30/60 min
- Recommended detour routes
- Incident alerts
Mobile Applications:
- Push notifications on abnormal traffic
- Personalized routes based on trip history and current forecast
Navigation Integration: APIs for Yandex Navigator, 2GIS, Google Maps — transmit congestion forecasts for dynamic routing.
System Metrics:
- MAPE flow speed: < 10% for 15-minute horizon
- MAPE travel time: < 12% for 30-minute horizon
- Incident detection latency: < 5 minutes from event to alert
- Savings: reduction in average trip time with signal management
Timeline: basic traffic forecast with LSTM on historical data — 5-6 weeks. GNN model + event-aware forecast + signal management — 4-5 months.







