Analizza dal vivo
Riordina una sequenza di fermate direttamente nel browser.
Questa è una dimostrazione, non il prodotto. Gira interamente dentro il tuo browser: puoi aprire un file di coordinate dal tuo computer, oppure usare quello inventato che trovi qui sotto.
Il file non viene inviato, non viene conservato e non arriva a Nigin. Non è un caricamento e non avvia nessuna analisi: il percorso reale comincia da una conversazione. La demo usa la distanza in linea d'aria, non la rete stradale, e riordina soltanto le fermate: non è il motore di produzione.
Che cos'è questa pagina. È una demo locale di riordinamento di una singola sequenza di fermate. Legge le coordinate dal CSV, usa l'ordine delle righe come sequenza iniziale e cerca una sequenza più corta secondo la distanza geometrica calcolata nel browser.
Non assegna ordini a una flotta, non applica il catalogo completo dei vincoli Nigin e non calcola i percorsi sulla rete stradale. È una demo di una singola rotta: nessuna assegnazione multi-mezzo, nessun vincolo produttivo, nessun routing stradale OSRM o HERE.
Il risultato è dimostrativo e non equivale al report del pilota.
01 — Il file
Apri un file dal tuo computer, oppure prova quello inventato.
Il file non deve contenere nomi, numeri di telefono o altri dati personali: per la demo bastano un identificativo e le coordinate.
02 — Il confronto
Sequenza iniziale e sequenza ricalcolata.
Demo locale di riordinamento di una singola sequenza di fermate, eseguita nel browser. Distanze in linea d'aria (Haversine), non sulla rete stradale. Ricerca locale 2-opt e perturbazione double-bridge; risultato euristico, senza garanzia di ottimo globale, fattibilità operativa o risparmio economico.
File: — · Stampato il —
Riduzione = (distanza iniziale − distanza ricalcolata) / distanza iniziale × 100. La demo conserva sempre la migliore fra la sequenza iniziale e le sequenze candidate: il risultato non può essere peggiore dell'ordine di partenza, ma può essere identico.
Il PDF eventualmente salvato mediante la funzione di stampa del browser non è il report professionale del pilota.
Segnalazioni sulla lettura del file
Righe escluse
| Riga | Identificativo | Motivo dell'esclusione |
|---|
Sequenza ricalcolata
| # | Identificativo | Ruolo | Lat | Lon |
|---|
03 — Formato CSV della demo
Quattro colonne, tre obbligatorie.
| Colonna | Obbligatoria | Contenuto |
|---|---|---|
| name | sì | Identificativo leggibile della fermata. Può essere un codice pseudonimo, per esempio STOP_001. Non serve un vero nome cliente. |
| lat | sì | Latitudine in gradi decimali, fra −90 e +90. |
| lon | sì | Longitudine in gradi decimali, fra −180 e +180. |
| stop_type | no | Uno fra depot_start, customer, depot_end. |
Alias accettati dall'intestazione: nome / id / stop per name; latitudine / latitude per lat; lng / long / longitudine / longitude per lon; tipo / type per stop_type. I nomi delle colonne non sono sensibili alle maiuscole.
name,lat,lon,stop_type
DEPOT_START,42.5636,12.6437,depot_start
STOP_001,42.5710,12.6540,customer
STOP_002,42.5480,12.6250,customer
DEPOT_END,42.5636,12.6437,depot_end
Come vengono trattati i depositi
Regole applicate
- ✓ La prima riga con depot_start è la partenza e resta fissa
- ✓ La prima riga con depot_end è il rientro e resta fissa
- ✓ Senza depot_end, il percorso si chiude sulla partenza
- ✓ Senza depot_start, la prima riga valida diventa la partenza
- ✓ Senza la colonna stop_type, valgono le due regole precedenti
Casi segnalati
- ✕ Più di un depot_start: vale il primo, gli altri diventano fermate intermedie
- ✕ Più di un depot_end: stessa regola
- ✕ Valori di stop_type diversi dai tre previsti: riga trattata come fermata intermedia
- ✕ Identificativi ripetuti: la riga è mantenuta e segnalata
- ✕ La demo non gestisce più depositi né più percorsi nello stesso file
Ogni caso di questo elenco compare come segnalazione esplicita sopra i risultati: la demo non modifica il file in silenzio.
Lettura del file
Il separatore è la virgola, e soltanto quella: il lettore non riconosce il punto e virgola né la tabulazione. Le virgolette doppie sono interpretate secondo la convenzione RFC 4180, quindi un identificativo può contenere il separatore. Il BOM UTF-8 iniziale viene rimosso e il file è letto come UTF-8. Le coordinate accettano sia il punto sia la virgola come separatore decimale. Le righe completamente vuote vengono ignorate senza segnalazione.
Una riga viene esclusa, con il motivo indicato in tabella, quando il numero di campi non corrisponde all'intestazione, l'identificativo è assente, una coordinata manca, una coordinata non è numerica o una coordinata è fuori intervallo. Il file viene rifiutato per intero quando è vuoto, contiene solo l'intestazione, ha colonne duplicate o non contiene le tre colonne obbligatorie.
Il motore conosce anche colonne come tw_start, demand e vehicle_id, ma non vanno incluse nel file: nel percorso verificato la loro presenza fa rifiutare l’input prima del calcolo, invece di produrre un risultato parziale che sembrerebbe averle rispettate. Il tracciato che conta è quello della documentazione tecnica.
04 — Perimetro
Che cosa ottimizza, e che cosa no.
Che cosa ottimizza
- ✓ L'ordine delle fermate di una singola sequenza
- ✓ Con partenza e rientro tenuti fissi
- ✓ Secondo la distanza geometrica fra le coordinate
Che cosa non ottimizza
- ✕ Assegnazione degli ordini a più mezzi e bilanciamento della flotta
- ✕ Capacità, finestre temporali, turni e pause
- ✕ Ritiro-consegna, split, reload, multi-viaggio, backhaul
- ✕ Compatibilità cliente-mezzo, più depositi, ordini non serviti
- ✕ Traffico, profili camion, ZTL e vincoli produttivi completi
Per questi problemi serve il motore produttivo e un perimetro formalizzato.
05 — Metodo
Come è calcolata la sequenza.
Distanza geometrica
Le distanze sono calcolate in linea d'aria sulla superficie terrestre mediante la formula Haversine, con raggio medio terrestre di 6.371,0088 km. I valori sono quindi realmente in chilometri, ma non considerano strade, sensi unici, ponti, montagne, ZTL, divieti o accessibilità dei mezzi.
Ricerca locale e perturbazione
La demo applica una ricerca locale 2-opt a primo miglioramento, con gli estremi tenuti fissi, e una perturbazione double-bridge all'interno di un ciclo ILS. Sono consentite tre perturbazioni; il ciclo si arresta quando la ricerca locale non trova più miglioramenti e le perturbazioni sono esaurite.
Casualità
La perturbazione double-bridge estrae i punti di taglio in modo casuale e non usa un seed fisso. Esecuzioni successive sullo stesso file possono quindi produrre risultati differenti. La soluzione conservata è sempre la migliore incontrata, inclusa quella iniziale.
Queste tecniche esistono anche altrove. 2-opt e double-bridge sono strumenti classici dell'ottimizzazione combinatoria, presenti anche nel patrimonio algoritmico Nigin, ma qui operano su un problema molto più semplice: la loro presenza non rende questa demo equivalente al motore produttivo. Il motore produttivo Universal Real-World Constrained VRP gestisce assegnazione, sequenza e vincoli nel perimetro configurato; questa pagina non lo esegue e non attiva né verifica le 34 famiglie canoniche di vincoli.
Nessun ottimo globale garantito. Il risultato è euristico: non dimostra che non esista una sequenza migliore. Non garantisce fattibilità operativa né un risparmio economico, e la differenza può essere nulla.
06 — Baseline e limiti
Che cosa rappresenta davvero la distanza iniziale.
La sequenza iniziale corrisponde all'ordine delle righe nel CSV, salvo le regole esplicitamente applicate ai depositi. Non è, di per sé, il giro realmente eseguito dai tuoi autisti: lo diventa soltanto se sei tu a ordinare le righe secondo la sequenza effettivamente percorsa. Per rappresentare il giro realmente percorso, ordina le righe del CSV nella sequenza effettivamente eseguita.
Limite di dimensione
La demo si ferma a 300 fermate valide e a 2 MB di file. La soglia non è arbitraria: la ricerca locale costa circa 0,1 secondi di calcolo a 100 fermate, 0,9 a 200 e 3,8 a 300 nella misura eseguita su un motore JavaScript da scrivania. Oltre quella soglia la crescita rende l'attesa inaccettabile su un telefono. Un file più grande non blocca la pagina: viene rifiutato con un messaggio.
Reattività
Il calcolo è suddiviso in intervalli brevi, così l'interfaccia resta reattiva e la barra di avanzamento mostra lo stato. Su file grandi l'elaborazione richiede comunque tempo: è lavoro reale, non un'animazione.
07 — Dati
Che cosa resta nel browser.
Il contenuto del CSV viene letto e calcolato localmente dal browser. La demo non invia file, coordinate o risultati a Nigin: non esiste, nel codice di questa pagina, alcuna chiamata di rete che trasporti il contenuto del file, e non sono presenti analytics, logging remoto, error reporting o telemetria. Anche i due file scaricabili sono costruiti nel browser.
Il browser effettua soltanto le richieste necessarie a caricare la pagina e i suoi asset, tutte verso questo stesso sito: i font e la libreria grafica sono ospitati qui, quindi nessun dominio di terze parti riceve il tuo indirizzo IP. L'unico dato conservato localmente è la scelta sul banner dei cookie tecnici.
08 — Dataset dimostrativo
Il CSV demo, e che cosa non è.
Il pulsante «Prova con il CSV demo» carica un dataset sintetico dimostrativo: tredici punti costruiti su coordinate di comuni umbri, con identificativi pseudonimi del tipo STOP_001. Non è un giro reale, non descrive un cliente, non contiene dati personali e non va usato come riferimento di prestazioni.
Per un confronto su rete stradale e sotto vincoli serve un perimetro distinto.
Il passo successivo non è caricare un file.
Il backend produttivo utilizza provider di routing e un modello operativo differente dalla demo locale. Prima di trasmettere dati, verifica finalità, formato, canale e trattamento applicabile.