Home / Scenario sintetico Umbria
◇ Dati inventati · non è un cliente reale Routing OSRM su grafo OpenStreetMap

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.

a naso · km ricalcolato · km
Scenario completo: 250 fermate, 10 mezzi, deposito a Terni. Baseline 2.603 km, sequenze ricalcolate 2.346 km, differenza 257 km pari a −9,9%. Percorsi calcolati su OSRM, non in linea d'aria.

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.

250
fermate per istanza · taglia provata
10
rotte da un solo deposito
3
istanze con semi diversi
Ripetizione Baseline sintetica NN Ricalcolato (Nigin) Strada in meno Δ%
Scenario 1 2.605 km2.343 km −262 km−10,1%
Scenario 2 2.753 km2.465 km −288 km−10,5%
Scenario 3 2.868 km2.470 km −398 km−13,9%
Media 2.742 km2.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.

1

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.

2

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.

3

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.

PerugiaTerniFoligno Città di CastelloSpoletoGubbio AssisiBastia UmbraCorciano MarscianoNarniOrvieto TodiUmbertideCastiglione del Lago MagioneBevagnaMontefalco AmeliaSpello

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.

SHA-256 · nigin_simulazione_umbria.py
2421bf5a9b3a564d7af83b0a776dd80ffc1433f719737d13ada03d1709f412eb

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.

  1. Scarica lo script della simulazione dalla pagina degli artefatti. Non serve chiederlo: è lì.
  2. Calcolane l'impronta.
    Linux:
    sha256sum nigin_simulazione_umbria.py
    macOS:
    shasum -a 256 nigin_simulazione_umbria.py
    Deve restituire 2421bf5a…f412eb. Se il risultato coincide, la copia dello script è byte per byte uguale al file identificato nella pagina.
  3. 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.

◇ Questa pagina · simulazione

Simulazione sintetica

Tre istanze sintetiche con una baseline algoritmica dichiarata. Servono a rendere osservabile il meccanismo del confronto.

● Confronto tecnico · dati reali

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.

E soprattutto: qui il «prima» è un algoritmo, non un autista. Il punto di partenza è un nearest neighbor perché, essendo una simulazione, non esiste nessun giro realmente guidato da osservare. Anche nel caso IDEA la baseline è un nearest neighbor, per la stessa ragione: la sequenza realmente percorsa dall'azienda non era stata rilevata, e senza quel dato non può essere il termine di paragone. Il confronto misura quindi un delta tecnico fra due piani calcolati, non un risparmio conseguito — com'è scritto nel confronto tecnico. Se un'azienda può fornire l'ordine di visita realmente eseguito, quello diventa la baseline e la domanda cambia: non più «di quanto ci si stacca da una regola», ma «quanto margine c'è sul giro che si fa davvero».
E allora a cosa serve? A vedere, su un caso che assomiglia al tuo, che esiste un margine misurabile tra "come si fa a mano" e "come si può fare calcolando". Quanto sia sul tuo giro, si scopre in un solo modo: misurandolo davvero, con i tuoi dati. È esattamente quello che fa il pilota.

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.