Previsione Tempi di Consegna Last-Mile con Machine Learning e Intelligenza Agentica

Sistema Ibrido XGBoost con Zonizzazione Spaziale e Calibrazione Dinamica Real-Time

30.81
MAE (minuti)
0.6025
R² Score
45,979
Training Samples
9
Zone Spaziali

Storia dello Studio: Evoluzione Metodologica

Questo percorso documenta l'evoluzione del sistema di previsione attraverso 4 fasi chiave, dalla prima implementazione RandomForest fino al modello XGBoost finale. Ogni fase ha introdotto miglioramenti misurabili, con particolare attenzione alla scoperta e correzione del bug del tempo di servizio che ha guidato l'intera ottimizzazione.

Fase 1: Baseline

RandomForest v1 - Primo Modello

Novembre 2025 - Inizio Sviluppo

Implementazione iniziale basata sull'algoritmo RandomForest, addestrato sul dataset Amazon Last-Mile (Merchán et al., 2024).

Il modello utilizzava 24 feature tradizionali (distanza, numero fermate, traffico, meteo, ora del giorno) senza alcuna partizione spaziale per zone.

MAE: 34.2 minuti
R²: 0.558
Features: 24
Training: 43,793 samples
Fase 2: Scoperta Critica

Il Bug del Tempo di Servizio

Novembre 2025 - Analisi Errori

Durante i test sul campo, emergeva un'anomalia sistematica: per rotte con molte fermate, il modello sottostimava gravemente i tempi reali.

Caso Studio - Rotta con 52 fermate:

Previsione grezza modello: 111 minuti
Tempo servizio reale: 52 fermate × 4.2 min/fermata = 218.4 minuti

Errore: Il modello produceva un tempo totale inferiore al solo tempo di servizio!

Diagnosi: Il dataset Amazon originale conteneva tempi totali che includevano già il tempo di servizio. Il modello aveva appreso a predire il tempo totale, ma nella nostra pipeline aggiungevamo il tempo di servizio una seconda volta = doppio conteggio.

Questo errore metodologico è tipico nella ricerca sulla logistica last-mile, dove la separazione tra tempo di guida e tempo di servizio richiede attenzione particolare durante la preparazione dei dati.

Fase 3: Correzione

Hybrid v2 - Modello Calibrato

Novembre 2025 - Refactoring

La correzione ha separato esplicitamente i due componenti della previsione, seguendo le best practice di Rabbi Shawon et al. (2025):

Formula Corretta:

$$ T_{totale} = T_{guida\_predetto} + T_{servizio\_calcolato} $$

$$ T_{servizio} = N_{fermate} \times 4.2 \text{ min/fermata} $$

Introdotto sistema di calibrazione dinamica per adattare le predizioni base a condizioni contestuali (traffico, meteo, ora del giorno).

MAE: 33.1 minuti
R²: 0.571
Miglioramento: -3.2% MAE vs v1
Fase 4: Soluzione Finale

XGBoost v3 - Modello con Zonizzazione

Novembre 2025 - Versione Finale

Passaggio a XGBoost come algoritmo principale, coerente con i risultati di Rabbi Shawon et al. (2025) che dimostrano una superiorità del 21.6% rispetto a RandomForest per problemi simili.

Innovazioni introdotte:

MAE: 30.81 minuti
R²: 0.6025
Miglioramento: -9.9% MAE vs v1
Training: 45,979 samples
Risultato Finale: Il modello XGBoost v3 rappresenta la conclusione di questo percorso di ricerca, con una riduzione del 9.9% del MAE rispetto al baseline iniziale e un sistema completo di calibrazione dinamica per eventi real-time.
Lezione Metodologica: La scoperta del bug del tempo di servizio evidenzia l'importanza di una validazione rigorosa delle pipeline di previsione nella ricerca logistica. L'errore non risiedeva nell'algoritmo ML, ma nella comprensione di cosa il modello stesse predicendo. Questo tipo di errore metodologico è documentato nella letteratura come "feature leakage" inverso: non dati del futuro nel training, ma componenti già inclusi che vengono erroneamente aggiunti di nuovo.

Abstract

Questo studio presenta un sistema di previsione dei tempi di consegna last-mile basato su XGBoost con feature engineering spaziale, sviluppato attraverso una metodologia incrementale che confronta tre iterazioni modellistiche: RandomForest baseline (v1), RandomForest con calibrazione (v2), e XGBoost con zonizzazione (v3).

Il modello finale raggiunge un MAE di 30.81 minuti e un R² di 0.6025, rappresentando una riduzione del ~10% dell'errore rispetto al baseline RandomForest (MAE 34.2 min). Questo miglioramento è coerente con i risultati di Rabbi Shawon et al. (2025), che riportano riduzioni fino al 21.6% passando da RandomForest a XGBoost.

L'innovazione principale risiede nell'integrazione di un Agentic Decision Engine basato sul framework PERCEIVE-EVALUATE-ACT (Jamithireddy, 2025), che utilizza l'API Perplexity per rilevare eventi real-time e applicare calibrazione dinamica secondo il modello di impatto a 4 tier derivato da Humphreys & Pyun (2018).

1. Metodologia Incrementale

La metodologia adottata segue un approccio incrementale scientificamente validato, dove ogni iterazione del modello introduce miglioramenti specifici misurabili attraverso metriche standard.

Giustificazione Scientifica: "L'approccio incrementale con hyperparameter tuning e feature engineering rappresenta la best practice per problemi di regressione su dati logistici."
Rabbi Shawon et al. (2025) DOI:10.62754/joe.v4i2.6610

1.1 Evoluzione dei Modelli

Modello Algoritmo Features Training Data MAE (min)
Classic v1 RandomForest 24 Amazon 43K 34.2 0.558
Hybrid v2 RandomForest + Calibrazione 24 Amazon 43K 33.1 0.571
XGBoost v3 XGBoost + Zone Features 22 Amazon 43K + Rome 2K + Session 213 = 45,979 30.81 0.6025
Miglioramento Percentuale:
v1 → v3: Riduzione MAE del 9.9% (34.2 → 30.81 min)
v1 → v3: Miglioramento R² del 8.0% (0.558 → 0.6025)

1.2 Feature Set XGBoost v3

Il modello XGBoost v3 utilizza 22 feature, incluse 10 feature binarie per la zonizzazione spaziale:

distance_km
num_stops
avg_stop_distance_km
hour_of_day
day_of_week
is_weekend
rush_hour
traffic_level
weather_condition
vehicle_type
area_type
city_encoded
zone_vaticano
zone_stadio
zone_centro_storico
zone_eur
zone_fenway
zone_mit_cambridge
zone_back_bay
zone_financial
zone_seaport
zone_general

2. Sistema di Zonizzazione Spaziale

Il sistema implementa una partizione spaziale a 9 zone (4 Roma + 5 Boston) basata sulla metodologia "Zone ID" introdotta da Merchán et al. (2024) per il dataset Amazon Last-Mile.

Riferimento Metodologico: "Zone ID spatial partitioning enables localized predictions that account for geographic variability in urban delivery patterns."
Merchán et al. (2024) DOI:10.1287/trsc.2022.1173

2.1 Zone Roma (4)

ROM-VAT
Vaticano / San Pietro
Moltiplicatore: 1.15x
Eventi papali, turismo religioso
ROM-STA
Stadio Olimpico
Moltiplicatore: 1.10x
Partite AS Roma/Lazio, concerti
ROM-CEN
Centro Storico
Moltiplicatore: 1.25x
ZTL, strade strette, turismo
ROM-EUR
EUR / Magliana
Moltiplicatore: 1.05x
Distretto business moderno

2.2 Zone Boston (5)

BOS-FEN
Fenway / Kenmore
Moltiplicatore: 1.10x
Red Sox, concerti, università
BOS-MIT
MIT / Cambridge
Moltiplicatore: 1.08x
Eventi universitari, tech campus
BOS-BAY
Back Bay / Copley
Moltiplicatore: 1.12x
Shopping, Boston Marathon
BOS-FIN
Financial District
Moltiplicatore: 1.15x
Rush hour business, convention
BOS-SEA
Seaport
Moltiplicatore: 1.08x
BCEC, tech companies
Encoding One-Hot:

Ogni zona è codificata come feature binaria (0/1) nel vettore di input del modello.

\( \vec{z} = [z_{vat}, z_{sta}, z_{cen}, z_{eur}, z_{fen}, z_{mit}, z_{bay}, z_{fin}, z_{sea}, z_{gen}] \)

3. Agentic Decision Engine

Il sistema implementa un Agentic Decision Engine basato sul framework PERCEIVE-EVALUATE-ACT per l'intelligenza artificiale agentica, come definito da Jamithireddy (2025).

Framework Teorico: "Agentic AI systems follow the PERCEIVE-EVALUATE-ACT cycle, enabling autonomous decision-making based on real-time environmental sensing."
Jamithireddy (2025) DOI:10.64799/rebicte.v11i.212

3.1 Ciclo Agentico


PERCEIVE
Perplexity API

EVALUATE
Tier Classification

ACT
Dynamic Calibration

3.2 PERCEIVE: Rilevamento Eventi Real-Time

Il modulo PERCEIVE utilizza l'API Perplexity con il modello sonar per interrogare in tempo reale fonti web e rilevare eventi che impattano le consegne:

3.3 EVALUATE: Classificazione Tier

Gli eventi rilevati sono classificati in 4 tier di impatto basati sulla letteratura scientifica sul traffico urbano durante eventi:

Tier Moltiplicatore Impatto Esempi
Tier 1 Minor 1.05x <5% impatto citywide Festival di quartiere, mercatino
Tier 2 Moderate 1.15x +2% citywide, +10-15% near venue Partita Serie A, concerto, ZTL attiva
Tier 3 Major 1.25x +20-30% delay in venue zone Derby Roma-Lazio, Champions League, graduation
Tier 4 Critical 1.40x +40% max immediate vicinity World Series, Super Bowl, Messa Pasquale
Calibrazione Scientifica: "Professional sporting events increase VMT by 6.9% and citywide congestion by 2%, with near-venue delays ranging from 20% to 50%."
Humphreys, B.R. & Pyun, H. (2018) DOI:10.1111/jors.12389

4. Sistema di Calibrazione Dinamica

La previsione finale è calcolata combinando la predizione base del modello XGBoost con 4 moltiplicatori contestuali applicati in modo moltiplicativo con un cap massimo di 1.50x.

Formula di Calibrazione:

$$ T_{finale} = T_{base} \times \min\left( M_{zona} \times M_{eventi} \times M_{meteo} \times M_{ora}, 1.50 \right) $$

4.1 Componenti del Moltiplicatore

Componente Range Fonte
Mzona - Zone Multiplier 1.0x - 1.25x zones_config.json
Meventi - Event Multiplier 1.0x - 1.40x Perplexity + Tier Classification
Mmeteo - Weather Multiplier 1.0x (clear) - 1.45x (snow) Weather API + FHWA
Mora - Time-of-Day 0.85x (night) - 1.30x (evening rush) Traffic patterns

4.2 Cap Scientifico 1.50x

Il moltiplicatore combinato è limitato a 1.50x (50% di incremento massimo) basandosi sulle raccomandazioni FHWA (2024) per i buffer di consegna in giornate con eventi e sulle evidenze empiriche di Humphreys & Pyun (2018) che indicano un impatto massimo near-venue del 50%.

Esempio di Calcolo:
Base prediction: 100 min
Zona Centro Storico: 1.25x
Evento Tier 2 (partita): 1.15x
Meteo pioggia: 1.18x
Evening rush: 1.30x

Combinato: 1.25 × 1.15 × 1.18 × 1.30 = 2.20x → Capped a 1.50x
Finale: 100 × 1.50 = 150 minuti

5. Dataset di Training

Il modello XGBoost v3 è stato addestrato su un dataset combinato di 45,979 samples:

Fonte Samples Città Descrizione
Amazon Last-Mile Dataset ~43,000 Boston Dataset pubblico Merchán et al. (2024)
Rome Augmented ~2,000 Roma Data augmentation con caratteristiche urbane romane
Session Predictions 213 Misto Previsioni validate durante lo sviluppo
Totale 45,979 - Test set: 9,196 samples (20%)
Dataset Source: "The Amazon Last-Mile Routing Research Challenge: Learning from drivers to improve route performance."
Merchán et al. (2024) DOI:10.1287/trsc.2022.1173

6. Feature Importance

L'analisi dell'importanza delle feature nel modello XGBoost v3 rivela le variabili più influenti per la previsione dei tempi di consegna:

Feature Importanza Interpretazione
city_encoded 69.30% Differenze strutturali Roma vs Boston
num_stops 23.31% Numero fermate = tempo servizio
avg_stop_distance_km 2.87% Densità del percorso
traffic_level 2.16% Condizioni traffico
weather_condition 0.80% Impatto meteo
rush_hour 0.51% Ora di punta
zone_* features <0.1% Zone contribuiscono via calibrazione
Nota: Le feature di zona mostrano importanza bassa nel modello base perché il loro impatto principale è applicato attraverso il sistema di calibrazione dinamica post-predizione, non durante l'inference del modello.

7. Smart Departure Optimizer

Il modulo Smart Departure rappresenta un'innovazione rispetto ai tradizionali moltiplicatori orari statici (es. 1.10x mattina, 1.30x sera). Invece di applicare fattori predefiniti, il sistema interroga direttamente l'API Google Routes con parametri di traffico storico per ogni scenario temporale.

7.1 Architettura del Sistema

Componente Funzione Fonte Dati
SmartDeparturePlanner Orchestrazione confronto fasce orarie Stateless service
Google Routes API Tempi percorrenza con traffico storico traffic_model=best_guess
Perplexity Events Rilevamento eventi per ora target Real-time web search
Zone Calibrator Moltiplicatori zona-specifici zones_config.json
DepartureNarrator Spiegazione AI in linguaggio naturale GPT-4 via OpenAI

7.2 Modalità Operative

Modalità LIVE:
Confronta "adesso" con +1h, +2h, +3h, +4h usando traffico real-time + storico.
Ideale per decidere "Parto ora o aspetto?"

Modalità FUTURE:
Confronta fasce orarie 7:00, 9:00, 12:00, 15:00, 18:00 usando solo pattern storici.
Ideale per pianificare consegne del giorno successivo.

7.3 Formula di Calcolo

\[ T_{finale}(h) = T_{Google}(h) \times M_{zona} \times M_{eventi}(h) \times M_{meteo} \]
dove \( T_{Google}(h) \) = tempo da API Routes con departure_time all'ora \( h \)

A differenza del sistema di calibrazione tradizionale (Sezione 4), qui il fattore Mora è implicito nel valore \( T_{Google}(h) \), poiché Google Routes già incorpora i pattern di traffico storico per l'orario richiesto.

7.4 Parametri API Google Routes

Parametro Valore Scopo
departure_time Unix timestamp Ora di partenza target
traffic_model best_guess Stima bilanciata basata su storico
mode driving Traffico veicolare

Nota: Per orari futuri oltre 1 ora, Google Routes utilizza historical traffic patterns basati su dati aggregati dello stesso giorno/ora delle settimane precedenti, fornendo stime affidabili per la pianificazione.

7.5 Output AI Narrativo

Il modulo DepartureNarrator (GPT-4) genera raccomandazioni in linguaggio naturale che spiegano perché un orario è preferibile, citando condizioni specifiche:

"Parti tra 2 ore perché il traffico sulla Cristoforo Colombo cala significativamente dopo le 10:00, risparmiando circa 15 minuti. Inoltre, la partita allo Stadio Olimpico inizia alle 18:00, quindi eviterai i fan in arrivo."

8. Riferimenti Bibliografici

Sistema sviluppato per tesi di ricerca - Dicembre 2025
Tutti i dati e le metriche sono verificabili dal codice sorgente del repository