Home / Vincoli operativi

Le 34 famiglie di vincoli, una per una.

Un vincolo è un limite operativo che il piano deve rispettare. Un orario di consegna, la capacità di un mezzo, un turno, un cliente che vuole sempre lo stesso furgone. Sono i limiti a decidere se un giro più corto è anche utilizzabile: un percorso breve che viola un orario non è un percorso migliore.

In questa pagina capisci quali limiti il calcolo sa rappresentare. Sono raggruppati in 34 famiglie: il motore rifà insieme l'assegnazione dei mezzi e l'ordine delle fermate, verificando che i limiti dichiarati reggano. Il nome tecnico di questo perimetro è Universal Real-World Constrained VRP.

Il catalogo definisce il perimetro pubblico delle capacità dichiarate. Una famiglia presente nel motore non è automaticamente attiva nel tuo caso. E soprattutto: un limite che non dichiari non può essere verificato dal calcolo. Un requisito operativo non viene considerato supportato soltanto perché somiglia a una delle famiglie: deve essere qualificato, rappresentato nei dati e configurato.

Validazione tecnica interna e riproducibile; non certificazione esterna e non garanzia dell'ottimo globale per qualsiasi istanza.

Tutte le 34 famiglie sono presenti nel catalogo canonico e vengono attivate insieme, nello stesso problema, in una prova di carico che chiunque può rieseguire. Su ognuna il verificatore indipendente — un secondo programma che non usa il solutore — ha un controllo capace di emettere una violazione. Diciotto famiglie hanno in più un test che costruisce apposta il caso violato e verifica che la violazione venga effettivamente rilevata; le altre sedici no. Nella tabella qui sotto, ultima colonna, è scritto quale delle due vale per ciascuna riga: non ci sono righe dichiarate senza prova. Questo resta un controllo interno di coerenza: non è una certificazione.

Tre livelli da non confondere

La mappa

Nove categorie leggibili. Tutte le 34 dentro.

Le categorie servono soltanto a orientare la lettura; gli identificativi canonici restano quelli della tabella. Ogni riquadro indica quali famiglie contiene (per numero): la somma è esattamente 34, senza doppioni e senza omissioni.

⚖

Veicoli e flotta

Più mezzi, flotte eterogenee, capacità e domanda multidimensionali, competenze, compatibilità mezzo-ordine, requisiti dichiarati del mezzo.

Famiglie: 01 · 03 · 04 · 20 · 21 · 22

⌂

Depositi e viaggi

Multi-deposito, ricarico al deposito, più viaggi dello stesso mezzo.

Famiglie: 02 · 16 · 17

◔

Tempo, turni e orario

Finestre orarie, tempi di servizio, turni, limiti di orario di lavoro, guida continuativa, pause, tempi di viaggio dipendenti dall'orario.

Famiglie: 06 · 07 · 08 · 09 · 10 · 11 · 28

⇅

Ritiri, consegne e sequenze

Propagazione del carico, accoppiamento ritiro-consegna, precedenze, split, evasione parziale, backhaul, logistica inversa.

Famiglie: 05 · 12 · 13 · 14 · 15 · 18 · 19

⛬

Accesso e territorio

Restrizioni di accesso territoriale e ZTL, quando fornite e validate.

Famiglie: 23 · 24

〰

Limiti di giro

Distanza massima, durata massima, numero massimo di fermate per giro.

Famiglie: 25 · 26 · 27

≣

Ordini

Opzionali, obbligatori, penalità esplicite per gli ordini non assegnati.

Famiglie: 29 · 30 · 31

◧

Costi e confronto

Costi fissi e variabili nell'obiettivo, confronto baseline deterministico.

Famiglie: 32 · 34

↻

Riottimizzazione

Ricalcolo dinamico limitato, con parti di giro congelate. Capacità tecnica del motore; non funzione commerciale end-to-end attualmente disponibile.

Famiglie: 33

L'elenco completo

Le 34 famiglie canoniche, una per una.

Ogni riga: numero, identificativo tecnico canonico (verbatim dal registro del motore), nome pubblico, descrizione, tipo, dati necessari e stato.

Le 34 famiglie canoniche del motore, in ordine canonico. Le colonne descrivono funzione, ruolo nel modello, dati necessari, condizioni d’uso nel singolo caso e — ultima colonna — lo stato della prova: provata in negativo quando un test costruisce apposta il caso violato e verifica che venga rilevato, verificata nel carico quando la famiglia è attiva nella prova con tutte e 34 insieme e controllata dal verificatore indipendente, ma senza un test negativo dedicato.
№Identificativo canonicoFamiglia e funzioneRuolo nel modelloDati o condizioni necessariUso nel caso e limitiStato della prova
01multiple_vehicles
Più veicoli
Assegnazione degli ordini a una flotta di più mezzi.
struttura del problemaElenco dei mezzi disponibili.Applicata quando esiste più di un mezzo e l'assegnazione rientra nel perimetro.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
02multiple_depots
Multi-deposito
Più punti di partenza e rientro per la flotta.
struttura del problemaElenco depositi e relazione ordine-deposito.Richiede dati sui depositi e un perimetro che li preveda. Il pilota essenziale riguarda un solo deposito.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
03heterogeneous_fleet
Flotta eterogenea
Mezzi con capacità, costi e caratteristiche diverse.
struttura del problemaCapacità, costi e caratteristiche per ciascun mezzo.Applicata quando i mezzi sono descritti singolarmente nei dati.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
04multidimensional_capacity_and_demand
Capacità e domanda multidimensionali
Più dimensioni di carico rispettate lungo il giro.
vincolo rigidoCapacità dei mezzi e domanda per ordine, nelle dimensioni usate.Entrano nel calcolo soltanto le dimensioni realmente fornite. Il dato mancante viene dichiarato, non assunto.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
05delivery_and_pickup_load_propagation
Propagazione del carico
Il carico a bordo varia lungo il giro e resta nei limiti.
vincolo rigidoTipo ordine (consegna o ritiro) e quantità.Richiede che consegne e ritiri siano distinti nei dati.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
06time_windows
Finestre orarie
Servizio entro la finestra dichiarata per ogni fermata.
vincolo rigidoFasce orarie per fermata, con distinzione fra rigide e preferenze.Le finestre devono essere fornite e validate: il sistema non conosce automaticamente gli orari dei clienti.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
07service_times
Tempi di servizio
Tempo di fermata incluso nella durata del giro.
vincolo rigidoDurata di servizio per fermata, categoria o regola.Un valore assunto viene dichiarato come tale e non confuso con una misurazione.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
08driver_shifts
Turni autista
Il giro rientra nell'orario di turno dichiarato.
vincolo rigidoInizio e fine turno.Modellato secondo le regole dichiarate e configurate; non è una verifica di conformità contrattuale.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
09working_time_limits
Limiti di orario di lavoro
Tempo di lavoro complessivo entro i limiti dichiarati.
vincolo rigidoLimiti di orario di lavoro.Modellato secondo le regole dichiarate; non è una verifica di conformità normativa.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
10continuous_driving_limits
Limiti di guida continuativa
Tempo massimo di guida senza pausa.
vincolo rigidoLimiti di guida continuativa.Modellato secondo le regole dichiarate; non è una verifica di conformità normativa.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
11mandatory_breaks
Pause obbligatorie
Pause inserite e compatibili con il percorso.
vincolo rigidoRegole delle pause.Modellate secondo le regole dichiarate e configurate.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
12pickup_delivery_pairing
Accoppiamento ritiro-consegna
Ritiro e consegna sullo stesso mezzo, con ritiro precedente.
vincolo rigidoCoppie ritiro-consegna identificate nei dati.Richiede che le coppie siano complete e riconoscibili.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
13precedence
Precedenze
Ordine obbligato fra determinate fermate.
vincolo rigidoRegole di precedenza dichiarate.È una regola di sequenza dichiarata: non dimostra la fattibilità fisica del carico.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
14split_delivery
Consegna frazionata
Un ordine servito in più parti o più viaggi.
regola opzionaleFrazionabilità ammessa e quantità.Si applica soltanto se il frazionamento è ammesso e dichiarato. Non coincide con l'evasione parziale.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
15partial_fulfilment
Evasione parziale
Copertura parziale di un ordine, quando ammessa.
regola opzionaleAmmissibilità della copertura parziale.Riguarda un ordine coperto solo in parte, non un ordine suddiviso fra più viaggi. Ammessa soltanto se dichiarata.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
16reload
Ricarico
Rientro al deposito per ricaricare e ripartire.
regola opzionaleAmmissibilità e regole di ricarico.Configurazione avanzata: non è compresa d'ufficio nel perimetro essenziale.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
17multi_trip
Multi-viaggio
Più viaggi dello stesso mezzo nella giornata.
regola opzionaleAmmissibilità del multi-viaggio.Configurazione avanzata: non è compresa d'ufficio nel perimetro essenziale.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
18backhaul
Backhaul
Ritiri dopo le consegne all'interno dello stesso giro.
regola opzionaleOrdini di ritiro e politica di backhaul.Configurazione avanzata: richiede che i ritiri siano rappresentati esplicitamente.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
19reverse_logistics
Logistica inversa
Resi, vuoti e imballaggi raccolti nel giro.
regola opzionaleQuantità e punti di raccolta di resi e vuoti.Non viene considerata automaticamente: va rappresentata con quantità, punto e regola.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
20skills
Competenze
Requisiti fra ordine e mezzo o autista.
vincolo rigidoRequisiti richiesti e disponibili.Richiede che i requisiti siano dichiarati e validati.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
21vehicle_compatibility
Compatibilità mezzo-ordine
Alcuni ordini serviti soltanto da determinati mezzi.
vincolo rigidoRegole di compatibilità dichiarate.Se configurata come rigida, una soluzione che la viola non è fattibile: l'esito può essere un ordine non servito o un'infeasibilità.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
22truck_vehicle_restrictions
Restrizioni del mezzo e dell'accesso
Requisiti dichiarati del mezzo o dell'accesso, come altezza, massa complessiva, zona o permesso, quando rappresentabili e configurati.
vincolo rigidoCaratteristiche dichiarate del mezzo e requisiti di accesso.La massa complessiva non equivale al calcolo del peso per asse e l'altezza dichiarata non dimostra la percorribilità reale. Le funzioni di truck routing dipendono dal provider, dal profilo realmente utilizzato e dai dati disponibili.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
23territorial_access
Accesso territoriale
Regole territoriali dichiarate applicate al calcolo.
vincolo rigidoRestrizioni territoriali fornite e validate.Nigin può applicare regole territoriali dichiarate e configurate; non verifica sul campo e non valida legalmente autorizzazioni.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
24ztl_access_restrictions
Restrizioni ZTL
Zone a traffico limitato dichiarate trattate come vincolo.
vincolo rigidoDati ZTL forniti e validati.Nigin può applicare ZTL e permessi dichiarati e configurati. Non dispone automaticamente di una banca dati completa e aggiornata di tutte le restrizioni italiane e non valida legalmente permessi o autorizzazioni.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
25maximum_route_distance
Distanza massima per giro
Tetto di distanza per singolo giro.
vincolo rigidoDistanza massima ammessa.Applicata quando il limite è dichiarato.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
26maximum_route_duration
Durata massima per giro
Tetto di durata per singolo giro.
vincolo rigidoDurata massima ammessa.La durata è una stima del provider più i tempi di servizio dichiarati.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
27maximum_route_stops
Fermate massime per giro
Numero massimo di fermate per mezzo.
vincolo rigidoLimite di fermate.Applicata quando il limite è dichiarato.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
28traffic_time_dependent_travel
Tempi di viaggio dipendenti dall'orario
Tempi di viaggio che possono variare in funzione dell'orario o dei profili disponibili, quando configurati e supportati dai dati o dal provider.
capacità di routingProfili orari o dati del provider.La presenza della famiglia non garantisce traffico live, ETA live o dati correnti in ogni esecuzione. Profilo statico, profilo dipendente dall'orario e traffico live restano elementi distinti.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
29optional_jobs
Ordini opzionali
Ordini che possono non essere serviti, con la penalità dichiarata.
regola opzionaleMarcatura degli ordini opzionali.Un ordine non servito non è di per sé un errore quando l'opzionalità è dichiarata.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
30mandatory_jobs
Ordini obbligatori
Ordini che devono essere serviti.
vincolo rigidoMarcatura degli ordini obbligatori.Se un ordine obbligatorio non può essere servito, l'esito è un'infeasibilità dichiarata, non un'esclusione silenziosa.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
31explicit_unassigned_penalties
Penalità per ordini non assegnati
Costo esplicito associato agli ordini non serviti.
componente dell'obiettivoPenalità dichiarate.È un parametro matematico dell'obiettivo: non descrive la causa operativa della mancata assegnazione.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
32fixed_and_variable_costs
Costi fissi e variabili
I costi fissi e variabili possono partecipare all'obiettivo quando sono forniti e configurati.
componente dell'obiettivoCosti fissi per mezzo e costi per unità, dichiarati.Sono parametri matematici dell'obiettivo e non costituiscono la prova di un risparmio economico realizzato. Nigin non conosce automaticamente carburante, personale, pedaggi, ammortamento o contratti.Verificata nel caricoAttiva nella prova con tutte e 34 insieme, con il verificatore indipendente che la controlla. Nessun test negativo dedicato.
33bounded_dynamic_reoptimization
Riottimizzazione dinamica limitata
Ricalcolo limitato con elementi dichiarati come congelati.
capacità tecnica del motoreElementi da congelare e stato dichiarato.Capacità tecnica presente ed enforced nel motore. Non risulta disponibile come flusso prodotto end-to-end di dispatching o ripianificazione live e non viene promessa come funzione commerciale del pilota.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.
34deterministic_baseline_comparison
Confronto con la baseline
Confronto tra baseline ricostruita e scenario ricalcolato sotto criteri dichiarati.
confrontoAssegnazione e sequenza della baseline, con provenienza dichiarata.La baseline può essere pianificata, osservata, fornita, ricostruita o derivata da routing: la provenienza va dichiarata. Quando distanza e durata sono ricalcolate, baseline e scenario devono usare lo stesso provider, lo stesso profilo, gli stessi endpoint e gli stessi criteri di misura. Il confronto distingue ordini sottoposti, serviti, non serviti, esclusi o non fattibili.Provata in negativoUn test costruisce il caso in cui il vincolo è violato e verifica che la violazione venga rilevata.

La colonna Ruolo nel modello è una lettura editoriale verificata riga per riga, non un campo del registro canonico: il catalogo tecnico elenca gli identificativi, non li classifica per tipo. La colonna Uso nel caso non descrive lo stato tecnico della famiglia, che è lo stesso per tutte e 34, ma le condizioni alle quali quella famiglia viene applicata a un calcolo concreto.

Riproduzione

I comandi, per controllare invece di crederci.

Le due colonne di stato corrispondono a due comandi. Si lanciano dalla radice del progetto e non richiedono rete: nessuna chiamata a OSRM, nessuna chiamata a HERE, matrici sintetiche deterministiche.

Provata in negativo — 18 famiglie. Esegue i test che costruiscono il caso violato e pretendono che la violazione venga rilevata.

node --test vrp_saas/lib/universal-constrained-vrp/canonical-state.test.js vrp_saas/lib/universal-constrained-vrp-verifier/verifier.test.js

Verificata nel carico — 16 famiglie. Esegue il problema con tutte e 34 le famiglie attive insieme e il verificatore indipendente sopra.

node universal_vrp_all34_stress_case.js '{"mode":"combined","cells":1,"solverSeed":20260813,"iterationLimit":120}'

Il caso di prova che questi comandi eseguono è scaricabile, con la sua impronta: dentro ci sono le righe che decidono quando una famiglia si dichiara attiva.
L’esito atteso del secondo è "activeFamilyCount":34, "missingFamilies":[], "verificationStatus":"PASS".

Che cosa vuol dire davvero «attiva», e come lo sappiamo. Un controllo di attivazione che si limitasse a dire «questa famiglia compare nei dati in ingresso» sarebbe vero sempre, e non proverebbe nulla. Per escluderlo i 34 controlli sono stati messi alla prova con ventidue manomissioni della soluzione — turno sforato, distanza gonfiata, ordine delle fermate invertito, pause rimosse, costi alterati, confronto col baseline falsato, e così via.

Ognuna delle 34 famiglie viene dichiarata mancante da almeno una di quelle manomissioni. Nessun controllo è compiacente: se il motore smettesse di applicare una famiglia, la prova lo direbbe.

Che cosa questa tabella non dice. «Provata in negativo» significa che esiste un caso costruito apposta in cui il vincolo viene violato e il sistema se ne accorge. Non significa che ogni ramo di quel vincolo sia coperto: per la compatibilità dei mezzi, per esempio, il caso provato riguarda i requisiti dichiarati sul mezzo, non il mezzo bloccato su un ordine.

E nessuna delle due colonne dice quanto sia buono il piano prodotto. Dicono che i vincoli dichiarati vengono rispettati e che il rispetto viene controllato da un programma diverso dal solutore. La distanza dall’ottimo è un’altra misura, e non è ancora stata fatta.

Validazione e fattibilità

Come viene dichiarata la fattibilità.

Una soluzione che viola un vincolo rigido attivo non viene classificata come fattibile.

Esiti possibili del calcolo

  • Soluzione fattibile sotto i vincoli configurati
  • Ordine non servito, secondo il comportamento configurato
  • Soluzione parziale, quando la copertura parziale è ammessa
  • Istanza non fattibile sotto i vincoli dichiarati
  • Warning
  • Dati insufficienti per una conclusione attendibile

Controlli previsti

  • Distinzione dichiarata fra vincolo rigido, regola opzionale e componente dell'obiettivo
  • Controllo interno di fattibilità separato dal ciclo di ricerca, quando applicabile alla configurazione eseguita
  • Il catalogo è coperto dalla validazione tecnica interna prevista
  • Un gate automatico interno segnala divergenze nel conteggio o nella copertura tecnica

Il report o l'allegato tecnico indica i vincoli configurati nei campi previsti dal formato e dal perimetro concordato. Report standard, export tecnico, allegati e record interno sono superfici distinte e non contengono necessariamente gli stessi campi.

Non dichiarato

Cosa non promettiamo

  • Una banca dati ZTL italiana completa e automaticamente aggiornata
  • Validazione legale di permessi o autorizzazioni, e rilascio di autorizzazioni
  • Certificazione di conformità CCNL o normativa
  • Garanzia dell'ottimo globale su qualsiasi istanza
  • Packing, palletizzazione o disposizione fisica del carico
  • Calcolo del peso per asse o della distribuzione dei pesi
  • Pianificazione di gru, sollevamenti o stabilizzazione
  • Certificazione della percorribilità reale di un itinerario
  • Dispatching o ripianificazione live commercialmente disponibili
  • Tracking GPS, ETA live o notifiche agli autisti
  • Vincoli fuori da questo catalogo, promessi automaticamente

Turni, pause e limiti di orario vengono modellati secondo le regole dichiarate e configurate. Nigin non rilascia certificazioni di conformità giuridica o contrattuale.

Come si aggiorna il catalogo

  • Una nuova famiglia entra nel catalogo pubblico soltanto dopo implementazione, enforcement, controllo tecnico e approvazione formale del relativo verdetto
  • Il tuo vincolo non c'è? Viene verificato durante la qualificazione, prima dell'avvio del pilota
  • L'assenza dal catalogo significa che il requisito non viene oggi promesso come capacità canonica pubblica; non dimostra automaticamente che sia impossibile
  • Il report o l'allegato tecnico indica i vincoli configurati nei campi previsti dal formato concordato

Verifica di coerenza

Questa pagina è stata allineata al catalogo canonico del motore nella versione verificata. Il conteggio e la copertura sono controllati automaticamente:

  • Esattamente 34 famiglie visualizzate, numerate 01–34.
  • Nessun identificativo duplicato; ogni identificativo compare una volta sola.
  • Le nove categorie partizionano tutte e 34 le famiglie: somma 34, senza doppioni e senza omissioni.
  • Ogni voce pubblica corrisponde a una voce del registro canonico, nello stesso ordine.
  • Un gate automatico interno segnala una divergenza se il catalogo non contiene esattamente le 34 famiglie previste o se una famiglia non risulta coperta dal controllo tecnico richiesto.

L'allineamento deve essere ricontrollato quando il catalogo tecnico cambia. Coerenza dichiarata tra catalogo pubblico, registro canonico e runtime verificato nel perimetro tecnico dell'intervento. Validazione interna e riproducibile; non certificazione esterna e non garanzia dell'ottimo globale.

Nessuna promessa fuori catalogo

Dubbi sul tuo vincolo? Chiedi prima.