Lo scenario sintetico: il meccanismo, disegnato.
250 fermate e 10 rotte costruite in Umbria con regole dichiarate nel codice, per mostrare che cosa fa il ricalcolo quando lo si guarda invece di leggerlo. Le fermate sono coordinate generate da uno script, non gli indirizzi di un’azienda. Ogni numero di questa pagina ha il suo file pubblicato e il comando per controllarlo.
Che cosa questa pagina non è. Non è la misura di quanto regge il motore: quella sta su capacità e limiti del motore, ed è una prova diversa, con un’altra fixture. E non è un caso aziendale: l’unico calcolo su dati di un’azienda vera è il confronto tecnico su IDEA Global Service.
Il confronto, disegnato. Lo scenario di riferimento contiene 250 fermate e 10 mezzi, con il deposito a Terni. Baseline significa la sequenza costruita scegliendo ogni volta la fermata non ancora visitata più vicina. Ricalcolato significa le stesse fermate dello stesso gruppo, con la sola sequenza interna rifatta dal metodo ILS storico. Sull'intero scenario del dataset pubblicato con questa pagina la baseline misura 2.603,3 km. La mappa qui sotto disegna tutte e dieci le rotte seguendo le geometrie di routing calcolate sulla rete stradale OpenStreetMap, sopra i confini dell'Umbria, delle sue due province e dei suoi novantadue comuni. Non viene contattato nessun fornitore esterno di cartografia: sia le rotte sia i confini sono file serviti da questo stesso dominio.
Scenario simulato, non un cliente reale. La mappa è disegnata a partire dal dataset locale pubblicato con questa pagina: le linee seguono le geometrie di routing contenute nel dataset, calcolate su OSRM, e non congiungono i punti in linea retta. I totali della mappa sono quelli della didascalia qui sopra; le tre esecuzioni dello script riportate nella tabella seguente sono artefatti distinti e possono differire leggermente, per le ragioni indicate più avanti in «Condizioni di riproduzione».
Scenario sintetico · metodo storico
Questo è un esperimento diverso da quello che misura il tetto del motore, con un’altra fixture e un altro motore: 250 fermate inventate in Umbria, dieci gruppi già formati, riordinati dal metodo ILS storico. Nessuna delle 34 famiglie di vincoli è attiva qui. Serve a mostrare come si legge un confronto, non a misurare il motore produttivo.
Confronto con una baseline scelta da noi.
Il termine di paragone qui sotto è un percorso nearest neighbor, cioè la regola «vai sempre alla fermata non ancora servita più vicina». L'abbiamo scelto noi perché è deterministico e riproducibile. Un confronto con una baseline che scegliamo noi non misura la distanza dall'ottimo: dice soltanto di quanto il risultato si stacca da quella regola.
| Ripetizione | Baseline sintetica NN | Ricalcolato (Nigin) | Strada in meno | Δ% |
|---|---|---|---|---|
| Scenario 1 | 2.605 km | 2.343 km | −262 km | −10,1% |
| Scenario 2 | 2.753 km | 2.465 km | −288 km | −10,5% |
| Scenario 3 | 2.868 km | 2.470 km | −398 km | −13,9% |
| Media | 2.742 km | 2.426 km | −316 km | −11,5% |
Variazione = (baseline − ricalcolato) / baseline × 100. Percentuali arrotondate a una cifra decimale; chilometri interi come nella fonte.
Come leggere queste tre righe. Sono tre istanze sintetiche distinte: a ogni ripetizione le 250 fermate vengono rigenerate con un seme diverso, quindi i punti cambiano. All'interno di ciascuna istanza le fermate assegnate a ciascuna rotta restano invariate: il metodo ricalcola esclusivamente la sequenza interna di ogni cluster. Nelle tre istanze fissate la riduzione osservata varia dal 10,1% al 13,9%: il numero di scenari è troppo limitato e il processo troppo specifico per trarre conclusioni statistiche sulla prestazione generale del metodo. Un'analisi di robustezza richiederebbe un protocollo separato, un numero molto maggiore di istanze e criteri di campionamento stabiliti prima dell'esecuzione. Il range 10,1–13,9% non è un intervallo di confidenza.
Come è costruito lo scenario
Scenario sintetico costruito mediante regole dichiarate.
Fermate generate sui comuni
250 fermate per istanza. Lo script sceglie un comune fra i venti elencati con probabilità proporzionale a un peso dichiarato nel codice, poi sposta il punto attorno al centro del comune con una distribuzione gaussiana (deviazione standard 0,025° in longitudine e 0,020° in latitudine, circa 2 km), arrotondando a cinque decimali. Il peso demografico è usato soltanto come criterio sintetico di generazione: non rappresenta la distribuzione reale della domanda commerciale o dei clienti.
10 cluster geografici
Le fermate sono raggruppate in 10 cluster da una procedura iterativa a centroidi (30 passaggi, tetto di 28 fermate per cluster) con centri iniziali estratti a caso dal seme dichiarato. Ogni rotta è costruita come giro chiuso deposito → fermate → deposito, con deposito a Terni. I cluster sono calcolati una sola volta per istanza e usati identici per la baseline e per la sequenza ricalcolata.
Distanze stimate dal routing
Le distanze e le durate sono stime di routing calcolate sulla rappresentazione digitale della rete OpenStreetMap mediante OSRM, profilo driving, su un'istanza locale del motore. Non sono distanze in linea d'aria, ma non sono chilometri effettivamente guidati. I risultati possono cambiare se cambiano coordinate, dati cartografici, profilo, configurazione o versione del motore di routing.
Su quali comuni
Comuni utilizzati nella generazione sintetica.
Lo scenario utilizza venti comuni umbri per costruire un'istanza geograficamente estesa. I pesi di selezione sono valori dichiarati nel codice, indicativi della dimensione dei comuni: lo script non cita una fonte demografica né un anno di riferimento. La distribuzione generata non coincide necessariamente con la rete commerciale di una specifica azienda.
Deposito di partenza e rientro: Terni, coordinate 12.6427, 42.5636. Ogni cluster genera un giro chiuso che attraversa più comuni. I punti dentro ogni comune sono coordinate sintetiche generate, non indirizzi reali di un'azienda.
La prova che non è un numero inventato
Integrità degli artefatti pubblicati.
I numeri della tabella provengono da un'esecuzione dello script pubblicato, che costruisce le tre istanze a partire dai semi 20260723, 777 e 424242 (il raggruppamento in cluster usa il seme successivo di ciascuno). L'impronta SHA-256 identifica una specifica sequenza di byte: se il file cambia, normalmente cambia anche l'impronta, quindi la corrispondenza dell'hash permette di verificare che due copie del file siano identiche.
Che cosa l'hash non dimostra. L'impronta dello script non dimostra, da sola, che la tabella sia stata generata da quello script, che il codice sia corretto, che il metodo sia appropriato o che il risultato sia riproducibile in un ambiente differente.
Condizioni di riproduzione. Il codice e gli artefatti disponibili permettono di ispezionare il processo. La riproduzione numericamente identica richiede le stesse versioni, gli stessi dati, gli stessi parametri e lo stesso ambiente di routing: l'estratto OpenStreetMap e la build di OSRM utilizzati non sono congelati né registrati, quindi l'esatta riproducibilità non è garantita. Distanze calcolate su OSRM, profilo driving (dati stradali © OpenStreetMap contributors, ODbL).
Parametri del metodo storico. Baseline: nearest-neighbor che sceglie progressivamente la fermata non ancora visitata con la durata minore, misurata poi in chilometri. Ricalcolo: ricerca locale iterata con perturbazione double-bridge e mosse or-opt, Lin-Kernighan a 3 archi e 2-opt su lista di candidati, limite di 8 iterazioni e seme interno fisso. La funzione obiettivo minimizzata combina minuti e chilometri, non i soli chilometri.
Distinzione tecnica. Il confronto utilizza il metodo ILS storico applicato a cluster indipendenti, secondo il comportamento verificato nel codice: non costituisce un'esecuzione del motore produttivo Universal Real-World Constrained VRP e le capacità del motore attuale non possono essere dedotte da questi risultati. Il catalogo produttivo comprende 34 famiglie canoniche tecnicamente validate nel perimetro interno dichiarato: questa simulazione non le attiva e non le valida. Validazione tecnica interna e riproducibile; non certificazione esterna e non garanzia dell'ottimo globale. Il perimetro dei vincoli →
Non fidarti: controlla
Come controllare gli artefatti.
Quello che puoi controllare da solo è l'identità del file: se la tua copia dello script coincide byte per byte con quella identificata in questa pagina.
- Scarica lo script della simulazione dalla pagina degli artefatti. Non serve chiederlo: è lì.
- Calcolane l'impronta.
Linux:sha256sum nigin_simulazione_umbria.pymacOS:shasum -a 256 nigin_simulazione_umbria.pyDeve restituire 2421bf5a…f412eb. Se il risultato coincide, la copia dello script è byte per byte uguale al file identificato nella pagina. - Lo script richiede un'istanza OSRM raggiungibile e le funzioni del motore storico indicate al suo interno. In un ambiente diverso — altro estratto cartografico, altra build del motore di routing — i numeri possono differire.
La verifica dell'impronta non dimostra la correttezza del risultato, non impedisce che una tabella HTML venga scritta a mano e non prova l'assenza di manipolazioni nell'intero processo.
Il confronto tecnico e la simulazione producono evidenze differenti: il confronto tecnico documenta un calcolo su fermate reali di uno specifico perimetro aziendale, la simulazione espone artefatti tecnici sintetici. Né una sottoscrizione né un hash costituiscono, da soli, una validazione tecnica indipendente.
Due cose diverse, tenute separate
Due evidenze, due perimetri diversi.
Simulazione sintetica
Tre istanze sintetiche con una baseline algoritmica dichiarata. Servono a rendere osservabile il meccanismo del confronto.
IDEA Global Service
Un confronto su fermate reali fornite da un'azienda, con baseline dichiarata e limiti dichiarati. Documenta quello specifico caso e non prova risultati generalizzabili. Leggi il confronto tecnico →
Onestà, fino in fondo
Cosa questo numero NON dice.
Un numero onesto viene con i suoi limiti scritti accanto. Ecco cosa questo 10-14% non significa — così non ci sono equivoci.
Non è un cliente reale
Le fermate sono coordinate sintetiche generate dallo script, non gli indirizzi di un'azienda. Il risultato descrive esclusivamente queste tre istanze.
Non è un risparmio in euro
Meno chilometri non significano automaticamente lo stesso risparmio in denaro: quanto vale un km dipende dai costi della tua flotta e da come riorganizzi il lavoro. Qui non c'è nessuna cifra in euro.
Non è quello che otterrai tu
Sul tuo giro reale il risultato può essere maggiore, minore o nullo. Se i tuoi autisti già organizzano meglio di un nearest-neighbor, il margine sarà più piccolo — e va benissimo saperlo.
Non è una media di mercato
Sono tre scenari costruiti in Umbria con un metodo dichiarato, non una statistica su tante aziende. Vale come dimostrazione del meccanismo, non come promessa universale.
Perimetro del modello
Vincoli non modellati in questa simulazione.
Lo script non impone alcun vincolo operativo: il calcolo minimizza una combinazione di tempo e distanza su cluster indipendenti. Non sono modellati:
Assenti dal modello
- Finestre temporali · turni · pause · tempi di servizio
- Capacità dei mezzi · capacità eterogenee · domanda per ordine
- Compatibilità cliente-mezzo
- Pickup-delivery · split · reload · multi-trip · backhaul
- Più depositi · profili camion · traffico
- Ordini non servibili · vincoli dinamici · regole aziendali reali
Limiti
Che cosa non è ancora misurato.
I limiti vanno scritti con la stessa precisione dei risultati. Le due prove qui sotto non esistono: non sono in corso di pubblicazione, non sono riservate, semplicemente non sono state fatte. Quando ci saranno, compariranno qui con il loro numero, anche se il numero non ci farà comodo.
Sensibilità al provider — non misurata
Gli stessi due piani non sono mai stati valutati su una seconda matrice stradale. Finché non lo sono, non sappiamo se una differenza misurata su OSRM resterebbe la stessa calcolata con un altro fornitore di distanze. Il confronto va fatto sugli stessi percorsi congelati, non riottimizzando.
Riscontro sulla guida reale — dato non disponibile
Nessun rilievo GPS, nessun odometro, nessun consuntivo di percorrenza. Tutti i numeri di questa pagina e del confronto tecnico sono stime di routing su una rappresentazione digitale della rete stradale, mai chilometri realmente guidati.
Attenzione a non confondere questa pagina con l’altra. Lo scenario sintetico dell’Umbria, quello con le 250 fermate, non dimostra la gestione delle 34 famiglie: i dieci mezzi sono nominali, senza capacità, turni né attributi differenzianti, e il ricalcolo è fatto dal metodo storico su gruppi già formati. Le 34 famiglie sono provate da una misura diversa, con un’altra fixture, che sta su capacità e limiti del motore.
Livelli di evidenza
Che cosa documenta, e che cosa non documenta.
Che cosa documenta
- Tre istanze sintetiche, con semi dichiarati
- 250 fermate generate per istanza · 10 rotte nominali
- Baseline nearest-neighbor
- Metodo ILS storico dichiarato
- Stime di routing OSRM
- Risultati numerici delle tre istanze · range e media osservati
- Artefatto e impronta effettivamente pubblicati
Che cosa non documenta
- Il piano reale di un'azienda · la qualità media degli autisti
- Una media di mercato · un intervallo statistico
- Un risparmio economico · il risultato atteso per altri dataset
- L'ottimo globale
- La gestione delle 34 famiglie canoniche
- Il comportamento del motore produttivo completo
- La fattibilità sotto regole aziendali reali
- La stabilità su istanze non testate
- Una validazione indipendente da parte di terzi
Il confronto reale parte dalla tua baseline
Nel pilota la baseline dipende da quali dati esistono.
Se l'azienda dispone dell'ordine di visita realmente eseguito, quello diventa il termine di paragone e la misura riguarda il giro vero. Se non ne dispone — come è accaduto nel caso IDEA — la baseline è un nearest neighbor dichiarato, e allora il confronto documenta un delta tecnico fra due piani calcolati, non un risparmio conseguito. In entrambi i casi il risultato può essere maggiore, minore, nullo, non fattibile oppure non determinabile con i dati disponibili, e quale delle due situazioni si applichi viene scritto nel report.
Esiste anche un analizzatore dimostrativo nel browser: è semplificato e non equivale al pilota né al motore produttivo completo.