HomeIA e Machine LearningPredittore di Percorsi e ETA per Trasporti

🚌 Predittore di Percorsi e ETA per Trasporti

Simulatore di trasporti interattivo: gli autobus si muovono su una vera rete di percorsi mentre l'algoritmo di Dijkstra calcola i percorsi più brevi e un modello dal vivo prevede gli orari di arrivo rispetto a quelli reali — osserva l'errore di previsione ridursi man mano che gli autobus si avvicinano.

IA e Machine Learning3DAvanzato60 FPS
ai-public-transportation ↗ Apri in autonomo

Informazioni sul Predittore di Percorsi ed ETA per Trasporti

Ogni volta che un'app di trasporti ti dice che un autobus è "a 4 minuti", due branche molto diverse dell'informatica lavorano insieme dietro le quinte. La prima è la ricerca del percorso più breve: data una rete di fermate e tempi di percorrenza, trovare il percorso più veloce da A a B. La seconda è la previsione dell'arrivo dal vivo: dato come si è comportato realmente il traffico di recente, stimare quanto durerà realmente la prossima tratta di un viaggio — perché un orario stampato è sempre e solo una stima di partenza. Questa simulazione implementa entrambi, per davvero, su una rete di percorsi con 16 fermate.

Clicca su due fermate qualsiasi per eseguire una vera ricerca del percorso più breve con l'algoritmo di Dijkstra tra di esse: osserva il fronte delle fermate "definitive" espandersi verso l'esterno e il percorso finale evidenziarsi una volta trovato. Nel frattempo, fino a quattro autobus percorrono continuamente in loop percorsi fissi. Ogni arco della rete ha un fattore di traffico che fluttua casualmente, e un modello a media mobile esponenzialmente pesata dal vivo apprende il tempo di percorrenza corrente per ogni arco da ciascun autobus che lo attraversa — così gli ETA previsti si adattano alle condizioni invece di seguire un orario fisso. Un grafico continuo traccia quanto le previsioni si discostano dalla realtà al variare della volatilità del traffico.

Domande Frequenti

Come calcola realmente l'algoritmo di Dijkstra il percorso più breve?

L'algoritmo di Dijkstra mantiene una distanza minima conosciuta corrente per ogni fermata, partendo da 0 per l'origine e infinito per tutto il resto. A ogni passo sceglie la fermata non visitata con la distanza minima conosciuta, la contrassegna come definitiva, e rilassa ogni arco che ne esce: se passare per la fermata definitiva dà un percorso più breve verso un vicino rispetto al valore migliore attuale del vicino, quella distanza migliore e il suo predecessore vengono aggiornati. Poiché le fermate vengono sempre rese definitive in ordine di distanza crescente, una volta che una fermata è definitiva la sua distanza non può più migliorare, e l'algoritmo si ferma non appena la destinazione diventa definitiva. Percorrendo i puntatori ai predecessori a ritroso dalla destinazione si ricostruisce il percorso più breve effettivo.

Cos'è un modello ETA a media mobile esponenzialmente pesata, e perché batte un orario statico?

Un orario statico presuppone che ogni viaggio lungo un segmento richieda la stessa durata programmata indipendentemente dalle condizioni. Una media mobile esponenzialmente pesata (EWMA) invece mantiene una stima corrente per ogni arco e la aggiorna ogni volta che un autobus attraversa realmente quell'arco: nuova_stima = α · tempo_osservato + (1 − α) · vecchia_stima. Poiché α è compreso tra 0 e 1, le osservazioni recenti contano più di quelle vecchie, così la stima segue le condizioni attuali pur smussando il rumore isolato di un singolo viaggio insolitamente veloce o lento. Questa simulazione usa α = 0.3.

Perché l'errore di previsione aumenta bruscamente quando si alza la volatilità del traffico?

Il modello EWMA può reagire solo dopo aver osservato un viaggio completato, quindi è fondamentalmente un indicatore ritardato. Quando lo slider della volatilità aumenta quanto bruscamente oscillano i fattori di traffico per arco, lo scarto tra "ciò che il modello ha appreso l'ultima volta" e "ciò che sta realmente accadendo adesso" si allarga, quindi l'errore medio assoluto tra gli orari di arrivo previsti e reali cresce.

Perché il percorso più breve cambia anche se la mappa stessa non si muove mai?

Questa simulazione esegue Dijkstra usando il tempo di percorrenza previsto dal vivo tramite EWMA di ogni arco anziché la sua distanza fisica fissa, quindi una query per le stesse due fermate può restituire un percorso diverso una volta che le condizioni del traffico hanno spostato i pesi appresi abbastanza da far diventare più veloce un percorso prima più lento.

⚙ Dietro le quinte

Buses move across a route network as Dijkstra's algorithm computes shortest paths and a live model predicts arrival times.

Three.jsWebGLIAMachine Learning

3D · Three.js / WebGL renderer · 60 FPS target · esegue interamente lato client, nessuna installazione richiesta

Cosa hai trovato?

Aggiungi passaggi per riprodurre il problema (opzionale)