UNIVERSITA’ DEGLI STUDI DI PADOVA DIPARTIMENTO DI MATEMATICA
CORSO DI LAUREA SPECIALISTICA IN ECONOMIA E DIREZIONE AZIENDALE TESI DI LAUREA
“VEHICLE ROUTING PROBLEM CON FINESTRE TEMPORALI”
RELATORE: CHIAR. MA PROF. SSA: ALESSANDRA BURATTO
LAUREANDA: CLAUDIA GIORDANO MATRICOLA N.549225
ANNO ACCADEMICO 2012– 2013
INDICE INTRODUZIONE .................................................................................................................. 3 Capitolo 1 - VRP: Vehicle Routing Problem ......................................................................... 4 1.1 Definizione e concetti principali .................................................................................. 4 1.2 Descrizione dei problemi ............................................................................................. 8 1.2.1 Vincolo di capacità (CVRP) ................................................................................. 9 1.2.2.Vincoli di lunghezza dei route ........................................................................... 14 1.2.3 Vincolo di tempo (time windows) ...................................................................... 15 1.2.4 Vincolo di precedenza (pickup and delivery)..................................................... 16 1.2.5 Vincolo con Backhaul ........................................................................................ 17 Capitolo 2 - VRPTW: Vehicle Routing Problem with Time Windows ............................... 20 2.1 VRPTW...................................................................................................................... 20 2.2 Modello Matematico del VRPTW ............................................................................. 25 2.3 Variante “Hard” e “Soft” ........................................................................................... 30 2.3.1 Vehicle Routing Problem with Hard Time Windows (VRPHTW).................... 30 2.3.2 Vehicle Routing Problem with Soft Time Windows (VRPSTW)...................... 31 2.4 Algoritmi euristici ...................................................................................................... 40 2.4.1 Algoritmi euristici costruttivi ............................................................................. 43 2.4.2 Algoritmi euristici a due fasi .............................................................................. 47 2.4.3 Algoritmi euristici migliorativi .......................................................................... 48 2.5 Algoritmi metaeuristici .............................................................................................. 53 2.5.1 Simulated Annealing (SA) ................................................................................. 55 2.5.2 Deterministic Annealing (DA) ........................................................................... 56 2.5.3 Tabu Search (TS) ............................................................................................... 56 2.5.4 Algoritmi Genetici (AG) .................................................................................... 58 2.5.5 Ant Colony System (ACS) ................................................................................. 61 2.5.6 Reti Neutrali (RN) .............................................................................................. 64 2.6 VRPTW: diverse definizioni di finestre temporali .................................................... 65 2.6.1 Tempo di Viaggio Flessibile .............................................................................. 65 2.6.2 Tempo dipendente dal tempo di viaggio ............................................................ 67 Capitolo 3 - Tecniche per gestire le finestre temporali attraverso le funzioni ...................... 69 3.1 Funzioni di costo lineari a tratti ................................................................................. 69 3.2 Funzione di costo convessa ........................................................................................ 71 1
3.2.1 Funzione di costo lineare a tratti convessa della finestra temporale .................. 71 3.2.2 Problemi di regressione isotonica ...................................................................... 72 3.2.3 Funzione di costo generale convessa della finestra temporale ........................... 73 CONCLUSIONI ................................................................................................................... 75 BIBLIOGRAFIA .................................................................................................................. 77
2
INTRODUZIONE In questo lavoro verrà approfondito il Vehicle Routing Problem (VRP), problema di ottimizzazione con molti risvolti nella vita reale e strumento principale per modellare la realtà della logistica e del trasporto dei beni, attraverso lo studio degli algoritmi euristici e metaeuristici che lo risolvono. In particolare si analizzerà il problema di VRP con il vincolo di finestra temporale. Questo vincolo implica che i clienti devono essere serviti all'interno di un certo intervallo cronologico rappresentato dalla finestra temporale. Traendo spunto dall’articolo di Hascimoto H., Yagiura M., Imahori S.e Ibaraki T. (2010) Recent progress of local search in handling the time window of the vehicle routing problem, vengono evidenziati gli ultimi sviluppi fatti in materia per quanto riguarda le tecniche per gestire le finestre temporali che possono essere di due tipologie, come vedremo nel Capitolo 2, Hard o Soft. Nel Capitolo 1 si illustra il VRP in tutti i suoi aspetti fondamentali e nelle sue principali tipologie che si distinguono per modalità di servizio, caratteristiche dei veicoli, struttura dei vincoli, sistema di obiettivi e tipi di vincoli. Nel Capitolo 2, dopo aver presentato le diverse tipologie di problemi collegati al VRP ci concentreremo su uno di questi problemi, quello che comprende le finestre temporali, ovvero il cosiddetto Vehicle Routing Problem with Time Windows, indicato con la sigla VRPTW. Il Capitolo 3 è dedicato ai recenti sviluppi in relazione alle tecniche di gestione delle finestre temporali attraverso le funzioni di costo lineari a tratti e funzioni di costo convessa, espressi dall'articolo sopra citato.
3
Capitolo 1 - VRP: Vehicle Routing Problem 1.1 Definizione e concetti principali Il Vehicle Routing Problem, che indicheremo d'ora in poi con la sigla VRP, è un tipico problema operativo nelle reti di distribuzione e consiste nella distribuzione di beni materiali tra un deposito o un insieme di depositi e i clienti. Tale problema è stato introdotto da Dantzig e Ramser (1959); nello specifico con il termine VRP si intende un'intera classe di problemi che ha per oggetto lo studio di tecniche per la pianificazione dei percorsi di una flotta di veicoli, che svolgono un servizio di distribuzione di beni materiali, servizi o informazioni tra un insieme di depositi ed un insieme di clienti. Nucleo centrale è la pianificazione dei percorsi (route) su cui sono disposti i clienti da raggiungere e servire, con l'obiettivo di minimizzare i costi di routing e di assegnamento dei veicoli ai relativi percorsi. Questo tipo di problema è il più importante tra i problemi di routing, i quali costituiscono un sottoinsieme dei problemi di logistica; questi riguardano il problema di definire un insieme di percorsi coperti da un insieme di veicoli che trasportano materiali, persone o informazioni e che partono e terminano nello stesso deposito utilizzando una opportuna rete stradale; la risoluzione di questi problemi prevede la costruzione di un modello a grafo. I problemi di routing più realistici comprendono l'aspetto di scheduling in cui si devono pianificare anche gli orari del servizio; in questo caso si considera oltre alla componente geografica tipica del problema di routing “puro” anche una componente temporale. Il VRP ha molte implicazioni pratiche nella realtà in contesti logistici e distributivi di dettaglio, come ad esempio il servizio di scuolabus, la raccolta dei rifiuti, la pulizia delle strade mediante veicoli; tali problemi riguardano non solo le aziende nel settore del trasporto, ma ogni compagnia che deve affrontare un trasporto effettivo di merce (ad esempio gestire il servizio di posta interna di una grande azienda).
Il VRP può essere esplicitato andando a descrivere nel dettaglio le caratteristiche dei veicoli, dei clienti e della rete stradale che ne definiscono il contesto operativo. La rete stradale utilizzata per il trasporto normalmente viene rappresentata mediante un grafo orientato o meno (dipende se per gli archi sia impostato il senso di marcia o meno) i cui archi
4
rappresentano i tratti stradali percorribili ed i cui vertici corrispondono ai punti importanti della rete, cioè agli incroci ed ai punti dove sono localizzati clienti e depositi. Si tratta di un grafo pesato, ovvero ad ogni arco è specificato il costo di transito (lunghezza del collegamento) ma in alcuni modelli può rappresentare il tempo di percorrenza (dipende dal tipo di veicolo che percorre tale collegamento o dall'orario durante il quale l'arco è attraversato).
Ciascun cliente, è caratterizzato da: un vertice del grafo stradale in cui è localizzato; quantità di merce, anche di diversi tipi, che deve essere consegnata e/o raccolta (i clienti possono richiedere: consegna della merce, prelievo della merce, entrambi i servizi); intervalli di tempo (time windows) per il servizio, poichè i clienti hanno un preciso arco temporale in cui possono ricevere il servizio richiesto (gli orari di apertura di un esercizio ne sono un esempio); tempi di carico e di scarico della merce; eventuali sottoinsiemi di veicoli che possono essere utilizzati per servirlo (ad esempio, in certe parti della città possono essere adatti solo alcune tipologie di veicoli); una domanda che se non viene soddisfatta interamente: si definiscono livelli di priorità (vincoli di precedenza definiti tra clienti); oppure se non viene eseguito il servizio in modo totale o parziale si prevede una penalità (in termini di tempo o di costi).
I circuiti percorsi hanno origine e destinazione in uno o più depositi localizzati nei vertici del grafo. Ogni deposito possiede un numero e determinate tipologie di veicoli inoltre può variare la quantità di merce che il deposito è in grado di trattare. In alcuni casi è possibile una pre-assegnazione di alcuni clienti ai depositi e i veicoli partono e ritornano allo stesso deposito, per cui ciascun deposito agisce in modo indipendente dagli altri e quindi il problema può essere scomposto in diversi problemi relativi ciascuno ad un solo deposito. È frequente la situazione in cui questa scomposizione non può avvenire perchè il veicolo non fa ritorno alla stesso deposito di partenza per la mancata pre-assegnazione dei clienti a 5
particolari depositi, questo per far fronte, se necessario, a vincoli ulteriori, ad esempio il vincolo di capacità. Un’altra dimensione per la classificazione dei problemi di VRP è data dalle caratteristiche dei veicoli: la flotta di veicoli può essere prefissata o variabile; il deposito di partenza, dove i veicoli ritornano o meno alla fine del percorso; capacità del veicolo, che può essere definita dal peso, volume, numero di unità di imballaggio della merce, con eventuale suddivisione in scomparti dei beni; alcuni veicoli possono non essere idonei al carico di determinati tipi di merce (ad esempio la necessità di celle frigorifere per beni deperibili); metodologia di carico e scarico e disponibilità a bordo di attrezzature per la movimentazione della merce (pianali mobili); impossibilità per il veicolo al transito in alcuni tratti stradali; costo associato all'utilizzo del veicolo, costo prodotto dal tempo utilizzato o dalla distanza percorsa.
Il problema è anche caratterizzato dagli autisti che sono utilizzati per la guida dei veicoli e sono soggetti a vincoli di tipo sindacale diversi a seconda che siano dipendenti del trasportatore o lavoratori autonomi (ad esempio: orari di lavoro, numero e durata delle pause). Di solito questi vincoli sono associati direttamente ai veicoli.
Deposito Cliente
D
Figura (1.1): rappresentazione grafica del VRP classico Fonte: elaborazione personale
6
I principali obiettivi, anche contrastanti, dei problemi di vehicle routing, sono: minimizzare il numero di veicoli utilizzati per servire tutti i clienti; minimizzare la distanza totale percorsa dalla flotta; minimizzare il costo totale del trasporto che dipende dalla distanza totale percorsa, dal tempo totale impiegato e dai costi fissi associati ai veicoli; minimizzare le penali associate al servizio portato a termine solo a una parte dei clienti; bilanciamento dei percorsi per quanto riguarda il tempo di percorrenza e/o carico del veicolo; minimizzare una funzione obiettivo che corrisponde a una combinazione degli obiettivi precedenti.
Il VRP non è un problema puramente geografico dato che la domanda dei clienti può essere vincolante; infatti la maggior parte delle volte è possibile trovare una soluzione ottima solo se il numero di clienti da visitare è relativamente piccolo. Nello specifico questi problemi appartengono ad una classe di problemi NP-hard, cioè l'esecuzione di algoritmi che risolvano in modo esatto questi problemi richiede un tempo di calcolo esponenziale nella dimensione del problema. Per comprendere meglio il concetto di NP-hard di seguito una breve esposizione delle varie classi di complessità. I vari problemi possono essere suddivisi in classi a seconda del tempo occorrente all'algoritmo, definito dal numero di operazioni necessarie, per risolvere tale problema. Le principali categorie sono: Problemi P (polinomiale), per i quali esistono algoritmi risolutivi di complessità polinomiale, sono problemi di decisione che possono essere risolti con una macchina sequenziale deterministica in un tempo che è polinomiale rispetto alla dimensione dei dati di ingresso. Problemi NP (polinomiale non deterministico), in questa classe rientrano i problemi di decisione le cui soluzioni positive possono essere verificate in tempo polinomiale avendo le giuste informazioni, o equivalentemente, la cui soluzione può essere trovata in tempo polinomiale con una macchina non deterministica. Problemi NP completi, un problema è NP-completo se e solo se appartiene a NP e ogni altro problema in NP è riconducibile ad esso in tempo polinomiale; sono i più 7
difficili problemi nella classe NP nel senso che, se si trovasse un algoritmo in grado di risolvere "velocemente" (nel senso di utilizzare tempo polinomiale) un qualsiasi problema NP-completo, allora si potrebbe usarlo per risolvere “velocemente” ogni problema in NP. Problemi NP-hard (difficile non deterministico in tempo polinomiale), un problema rientra in questa classe se ogni problema in NP è riducibile ad esso in tempo polinomiale (anche se non appartiene ad NP); questi problemi sono almeno complessi quanto quelli definiti nella versione di ottimizzazione di un problema NP-completo; dimostrare che un problema di calcolo è equivalente a un problema notoriamente NPdifficile significa dimostrare che è praticamente impossibile trovare un modo efficiente di risolverlo. I problemi che andremo a studiare nei prossimi capitoli sono tutti riconducibili a quest’ultima classe di problemi esposti.
1.2 Descrizione dei problemi Esistono molte versioni del VRP, conseguenti al tentativo di modellare al meglio le molteplici situazioni pratiche riconducibili ad un problema di instradamento. I percorsi devono rispettare determinati vincoli, che dipendono dalla natura del trasporto effettuato, dalla qualità del servizio desiderato e dalle caratteristiche di clienti e dei veicoli.
Alcuni tipici vincoli sono i seguenti: la richiesta totale dei clienti posti lungo il percorso non può superare la capacità del veicolo ad esso assegnato; i clienti serviti possono richiedere solo la consegna della merce, solo la raccolta o entrambi i servizi; i clienti possono essere serviti in un arco di tempo limitato (time windows) nel quale ricevono il servizio richiesto e tale attività è eseguita durante il periodo di lavoro degli autisti; possono essere definiti vincoli di precedenza tra i clienti, ne troviamo di due tipi: un primo tipo di vincolo impone che una parte della merce da consegnare ad un cliente debba essere preventivamente raccolta presso altri clienti, per cui interi gruppi di clienti devono essere serviti dallo stesso veicolo; 8
il secondo tipo di vincolo prevede invece che i veicoli possono effettuare raccolta e distribuzione, a condizione che quest'ultima attività avvenga per prima.
Per una descrizione più approfondita del VRP, analizzeremo di seguito le varianti più importanti studiate.
1.2.1 Vincolo di capacità (CVRP) La versione più comune della classe di problemi VRP è il Capacitated Vehicle Routing Problem (CVRP). La soluzione CVRP consiste nel determinare un sistema di circuiti, ognuno percorso da un singolo veicolo, che partono da un determinato deposito e vi fanno ritorno, tali da rispettare i vincoli di capacità dei veicoli e da soddisfare i requisiti della clientela e del distributore, con l'obiettivo di minimizzare il costo totale di trasporto in funzione del numero dei percorsi, della loro lunghezza complessiva o del tempo di percorrenza.
Questa versione del problema ha specifiche caratteristiche: il veicolo deve consegnare la merce e non deve raccoglierla e deve passare per il deposito; la domanda del cliente è nota a priori e deve essere soddisfatta da un solo veicolo; ogni veicolo deve effettuare un solo viaggio; tutti i veicoli sono uguali (K veicoli identici); esiste un singolo deposito centrale (vertice 0); la somma delle domande dei clienti di un circuito deve essere minore o uguale alla capacità C dei veicoli (vincolo di capacità del veicolo).
In questo tipo di problema il vincolo di capacità limita l'insieme dei nodi del grafo visitabili da ciascun veicolo perchè ogni veicolo ha una capacità di carico limitata, per cui questo vincolo riduce il numero di soluzioni possibili.
9
Il CVRP può essere formulato in termini di problema su grafo, nel seguente modo:
Sia G= (V, A) un grafo completo dove V= {0,...,n} è l' insieme dei vertici e A quello degli archi. I vertici i=1,....,n rappresentano i clienti, mentre il vertice 0 corrisponde al deposito. Ogni arco (i, j) ∈ A ha un costo non negativo cij che corrisponde al costo di trasferimento dal vertice i al vertice j; di solito non è consentito l'uso di loop ,cioè un arco (i,i) che collega un nodo a se stesso e ciò è imposto definendo cii = +∞, ∀i ∈ V. Se il grafo è completo orientato (diretto), la matrice dei costi c sarà asimmetrica e il corrispondente problema è detto Asymmetric CVRP (ACVRP), altrimenti se il grafo non è orientato cij = cij ∀ (i, j) ∈ A il problema è chiamato Symmetric CVRP (SCVRP). Nel caso il problema si sviluppi in modo simmetrico (SCVRP), l'insieme degli archi A è generalmente sostituito da un insieme di lati E. Dato un lato e ∈ E, α(e) e β(e) definiscono i suoi estremi. Per semplicità si indicheranno l'insieme dei lati di un grafo non diretto (completo) G con: A quando i lati sono indicati attraverso i loro estremi (i;j); E quando sono indicati con un singolo simbolo e. Il grafo G è generalmente completo (grafo semplice non orientato a cui ogni vertice è collegato a tutti i vertici rimanenti). Dato un vertice i, si indica con Δ+(i) l'insieme di tutti i vertici j tali che (i;j) ∈ A insieme definito forward star; con Δ-(i) indica il backward star, che corrisponde all'insieme dei vertici l tali che (l;i) ∈ A. Dato un insieme di vertici S ⊆ V, δ(S) denota l'insieme dei lati e ∈ E con un solo estremo in S, mentre E(S) indica il sottoinsieme dei lati con entrambi gli estremi in S. In molti casi di interesse pratico la matrice dei costi c soddisfa la disuguaglianza triangolare: cik + ckj ≥ cij , ∀ i, j, k ∈ V. Questa proprietà viene richiesta a volte da alcuni algoritmi; quando non è presente, si può ovviare alla sua mancanza aggiungendo una quantità positiva M al costo di ogni arco, anche se questa procedura può portare ad una pesante distorsione della metrica di costo delle soluzioni. In alcune istanze i vertici sono associati a punti del piano in cui sono specificate le coordinate, in questi casi il costo generico cij relativo all'arco (i;j)∈ A è definito come la distanza euclidea tra i due punti corrispondenti ai vertici i e j.
10
La matrice dei costi in questo caso è simmetrica, e soddisfa anche la disuguaglianza triangolare; il problema che si propone è denominato Euclidean SCVRP. Ogni cliente i=1, . . . , n é associato ad una richiesta non negativa di merce di (domanda del cliente), mentre il deposito ha una domanda fittizia do=0. Dato un insieme S⊆V, d(S) rappresenta la richiesta complessiva dei clienti in:
S : d (S ) d s sS
indicando con r un route, d(r) è la richiesta complessiva dei vertici visitati. Un insieme K di veicoli, uguali tra loro ed ognuno con capacità C , è disponibile nel deposito. Poniamo una condizione di ammissibilità di ≤ C per ogni cliente i=1,..,n (condizione in cui la domanda del cliente deve essere minore o uguale alla capacità del veicolo assegnato). Ogni veicolo può percorrere un circuito e si assume che K sia non minore di Kmin che corrisponde al numero minimo di veicoli necessari per servire tutti i clienti. Il valore di Kmin si determina risolvendo il Bin Packing Problem (BPP) associato all'istanza di CVRP: il BPP richiede di inserire tutti gli oggetti nei contenitori in modo che ciascun oggetto venga inserito in un contenitore; il peso (di per i = 1, . . . , n) degli oggetti inseriti in ciascun contenitore non deve superare la capacità C di ogni contenitore con l'obiettivo di minimizzare il numero di contenitori utilizzati. Il BPP è un problema NP-hard, ma esistono algoritmi risolutivi efficienti anche per istanze con molti elementi. Se consideriamo un sottoinsieme S ⊆ V e indichiamo con r(S) il numero minimo di veicoli necessari per servire tutti i vertici in S, una stima grossolana di r(S) può essere fornita dal lower bound [d(S)/C], essendo r (V \{0}) = Kmin. Introdotta la seguente variabile binaria utilizzata:
1 se (i, j ) A appartiene al route servito dal veicolo k , k K xijk 0 altrimenti
11
Il problema può essere così formulato: min
c
kK ( i , j )A
ij
xijk
(1.1)
con i seguenti vincoli:
x
kK jV
1
k ij
d x iV
i
jV
k ij
C
i V
(1.2)
k K
(1.3)
x
k oj
1
k K
(1.4)
x
k ih
xhjk 0
h V , k K
(1.5)
x
k ( i , n 1)
k K
(1.6)
i, j V
(1.7)
jV
iV
iV
jV
1
xijk 0,1
La funzione obiettivo (1.1) dichiara che il costo totale di trasporto, dato dalla somma dei costi espressi sugli archi, dovranno essere minimizzati. Il vincolo (1.2) impone che ogni cliente deve essere visitato esattamente una volta e deve essere assegnato ad un solo veicolo; il vincolo di capacità (1.3) dichiara che nessun veicolo può servire più clienti di quanto permetta la sua capacità. Il vincolo (1.4) impone che il veicolo parta dal deposito; il vincolo (1.5) definisce che il veicolo lasci il generico nodo h, appartenente all'insieme V, solo se è entrato in tale nodo; il vincolo (1.6) impone che il veicolo torni al fittizio nodo n+1 (che può o non può coincidere con il deposito 0) questo ultimo è ripetitivo ma sottolinea la struttura dei percorsi; infine il vincolo (1.7) definisce la natura binaria della variabile
12
In letteratura sono state proposte e studiate molte varianti della versione semplice di CVRP vista; di seguito alcuni esempi: caso in cui il numero K di veicoli disponibili è maggiore a
, in questa eccezione è
consentito lasciare inattivi alcuni veicoli, in questo caso ad ogni mezzo viene associato un costo fisso, e il costo totale di trasporto viene valutato anche tenendo conto di questo aspetto; altro caso molto frequente considera la presenza di veicoli diversi tra loro, ognuno con una propria capacità
con k =1,...., K e se richiesto con un proprio costo fisso;
in altri casi possono essere vietati circuiti (percorsi) che visitino un solo cliente.
Il CVRP è un problema NP-hard, che generalizza il primo problema di routing della storia: il problema del commesso viaggiatore, il cosiddetto Travelling Salesman Problem (TSP), dove è disponibile un solo veicolo (commesso) e deve servire un certo numero di clienti, ognuno una sola volta e deve partire dal deposito e tornare alla fine del viaggio. Per questo problema non si considera la capacità di carico del veicolo in quanto necessariamente il veicolo sarà sufficiente al trasporto di tutta la merce. Infatti un'istanza CVRP con un solo veicolo (K=1) e con capacità del veicolo in grado di soddisfare l'intera domanda di servizio
, si riduce ad un'istanza di TSP.
Il problema si può esplicitare come segue: dato un grafo, che rappresenta una rete di strade, in cui i nodi rappresentano i clienti da visitare ed ad ogni arco che congiunge i nodi è associato un costo, il problema consiste nel cercare la rotta più corta o più economica. Nel grafo è compreso un nodo che rappresenta il deposito da dove si assume parta il veicolo e che poi finito il percorso di distribuzione vi faccia rientro. Il TSP è puramente geografico perchè sia i vincoli che la funzione obiettivo da ottimizzare dipendo solo da una componente geografica. Ma anche se è semplice la descrizione del problema, trovare la risoluzione tenendo in considerazione tutti i vincoli citati è un problema di difficile risoluzione.
13
Di seguito, nella figura 1.2, la rappresentazione grafica del problema: Deposito
D Cliente
Figura (1.2):TSP Fonte: elaborazione personale
1.2.2.Vincoli di lunghezza dei route Una importante variante del CVRP è il DVRP Distance-Constrained VRP in cui si introducono dei vincoli sulle lunghezze delle distanze percorse in ogni rotta o sui tempi massimi di percorrenza. In questo caso i vincoli di capacità di ogni percorso sono sostituiti da: vincoli di lunghezza: una lunghezza non negativa
viene associata ad ogni arco (i,j),
la lunghezza totale degli archi che sono compresi in una route non deve superare un valore massimo pari a T; vincoli di tempo massimo: se il parametro
rappresenta il tempo di viaggio, ogni
vertice i ha assegnato un tempo di servizio si che rappresenta il tempo necessario al veicolo per compiere il proprio servizio dal cliente; in alcuni casi i tempi di servizio possono essere inclusi nei costi temporali degli archi, ponendo per ogni arco (i,j) dove
è il costo temporale per la sola percorrenza dell'
arco (i,j). Possiamo analizzare un seconda variante, il DCVRP- Distance-Constrained CVRP- dove ad ogni rotta si impone, oltre al vincolo di capacità di trasporto, i vincoli di lunghezza o tempo di percorrenza massima. In genere le matrici dei costi e delle distanze coincidono, cioè vale l' uguaglianza
per
tutti gli archi (i,j)∈ A. L' obiettivo del problema è minimizzare la lunghezza totale dei circuiti oppure, se il tempo di servizio è incluso nei costi temporali degli archi, la loro durata. 14
1.2.3 Vincolo di tempo (time windows)
Un' altra variante del problema è il VRP con Time Windows (finestre temporali) -VRPTW- in cui si estende il problema di base attraverso un vincolo aggiuntivo: i clienti devono essere serviti all'interno di un certo intervallo cronologico rappresentato dalle finestre temporali; tale problema tiene in considerazione l'aspetto temporale dei problemi di routing. Di questo particolare vincolo parleremo in modo più approfondito nei prossimi capitoli, ma per introdurre il problema definiamo le caratteristiche principali e i concetti più importanti. Questi intervalli di tempo devono essere rispettati, vale a dire che un veicolo deve visitare un cliente all'interno dell'intervallo di tempo prestabilito. Questo tipo di problema rende realistico il problema di base perché il cliente oltre a richiedere un servizio indica anche gli orari entro i quali deve essere soddisfatta la richiesta (esempio: orario di apertura del cliente, orari di accesso a Z.T.L.) Nello specifico ad ogni cliente i è associato un intervallo di tempo [ei, li] denominato “time windows”. Il servizio di ogni cliente deve iniziare in un istante si contenuto nella finestra temporale; se arriva prima al vertice i del tempo stabilito il veicolo deve attendere il tempo ei prima di poter effettuare il servizio. Altro elemento del problema è la matrice dei tempi di viaggio, in cui l'elemento generico pari al tempo di percorrenza dell'arco (i,j) ∈ A, inoltre definiamo
è
l'istante di tempo nel quale
i veicoli lasciano il deposito. In genere si definisce che le matrici di costi e di tempi coincidano e si suppone che tutti i veicoli partano dal deposito all'istante t = 0 . Problema di solito rappresentato in modo asimmetrico perché i valori della finestra temporale inducono implicitamente un orientamento dei percorsi. Obiettivo del problema è quello di determinare K circuiti di costo minimo tali che: ogni circuito visiti il deposito; ogni cliente sia visitato da solo un circuito; la somma delle richieste dei clienti visitati da una route non ecceda la capacità u dei veicoli che li serve; per ogni cliente i, il servizio deve avvenire all'interno del time windows [ei,li] e il veicolo deve rimanere occupato per un tempo pari a si. La formulazione matematica di tale variante sarà esplicitata nel Capitolo 2.
15
1.2.4 Vincolo di precedenza (pickup and delivery)
Un’ ulteriore versione del problema è il VRP con Pickup and Delivery (VRPPD) in cui viene esplicitato il vincolo di precedenza tra i clienti a causa della necessità di un certo tipo di servizio all'interno dello stesso viaggio. Ogni cliente è associato a due quantità non negative: d richiesta di merce;
i
: quantità di merce da ritirare.
Per semplificare si può definire di -
i
che è pari alla differenza netta di merce necessaria
(eventualmente negativa). Per ogni vertice i sono introdotti altri due parametri
e
:
i:
sono i vertici che sono all'origine della domanda di consegna;
i:
sono i vertici di destinazione, in cui si consegna il materiale.
La merce richiesta dal vertice i deve essere prima raccolta dal veicolo dal cliente stesso modo la merce ritirata presso il cliente i deve essere consegnata al cliente
i;
allo
che deve
essere visitato successivamente. Per convenzione si definisce che lo scarico della merce avvenga prima del caricamento. L'obiettivo è quello di determinare K route di costo minimo, tali che: ogni circuito visiti il deposito; ogni cliente sia visitato da uno e un solo circuito; il carico del veicolo, in ogni punto della route, sia non negativa e non ecceda la capacità totale C; per ogni cliente i, il vertice
i
, se diverso dal deposito, venga visitato nello stesso
circuito e prima della visita di i; per ogni cliente i, il vertice
i
, se diverso dal deposito, venga visitato nello stesso
circuito e dopo della visita di i.
Spesso l'origine
i
e la destinazione
i
sono comuni per tutti i vertici e non sono indicati
esplicitamente (ad esempio coincidono con il deposito), in questo caso il problema è VRP con Pickup and Delivery simultaneo (VRPSPD). In letteratura esiste anche una variante di VRP che tiene conto degli ultimi due vincoli analizzati VRP Pickup and Delivery Problem with Time Windows (VRPPDTW) in cui i 16
veicoli durante il percorso (itinerari) consegnano e ritirano le merci all'interno di determinate finestre temporali. VRPPD e VRPSPD generalizzano entrambi il CVRP, e sono quindi NP-hard in senso stretto.
1.2.5 Vincolo con Backhaul
Il VRP con Backhaul (VRPB) è un'estensione del CVRP in cui l'insieme dei clienti V\{0} è diviso in due sottoinsiemi, si coinvolgono sia i punti di ritiro che di consegna della merce: il primo L, contiene n clienti Linehaul, ogni cliente ha una specifica domanda di merce, sono clienti che devono ricevere una quantità di merce; il secondo B, contiene m clienti Backhaul, dai quali una certa quantità di prodotto deve essere ritirata. In questo caso, la rotta percorsa può servire prima tutti i punti di consegna di merci prelevate da un deposito (clienti Linehaul), e dopo tutti i punti di prelievo merci da trasportare al deposito (clienti Backhaul). I vertici sono numerati in modo che L={1,...,n} e B={n+1,...,n+m}. In questo caso è sottointeso un vincolo di precedenza tra i clienti in L e i clienti in B, se un percorso serve clienti di entrambi i tipi: tutti i clienti di L devono essere visitati prima di ciascuno di quelli in B, questo per evitare di riorganizzare i carichi sul veicolo. Ad ogni vertice i è associato un paramento non negativo di, che rappresentante la richiesta di merce; al deposito è associato un valore fittizio d0=0. La quantità di merce da consegnare e da ritirare è fissa e nota a priori. Se la matrice dei costi è asimmetrica, il problema è detto VRP con Backhaul asimmetrico (AVRPB). Esiste anche una variante che comprende il vincolo di finestra temporale (time windows) denominato VRPBTW.
17
In questo problema si richiede di individuare un insieme di K circuiti semplici di costo minimo tali che: ogni circuito visiti il deposito; ogni vertice sia visitato da uno e un solo circuito; in ogni circuito, tutti i clienti linehaul vengano visitati prima di eventuali clienti backhaul; le richieste totali dei clienti in L e di quelli in B non superino, separatamente, la capacità C del veicolo. Distanza totale percorsa dai veicoli sia minimizzato. In genere circuiti con solo clienti backhaul non sono ammessi. Denotati con KL e KB il minimo numero di veicoli necessari a servire tutti i clienti in L e tutti quelli in B, rispettivamente, si deve assumere per l'ammissibilità di un'istanza che K≥max{KL,KB}. KL e KB possono essere ricavati risolvendo l'istanza di Bin Packing Problem associata ai rispettivi sottoinsiemi di vertici. VRPB e AVRPB generalizzano rispettivamente SCVRP e ACVRP quando B=Ø, e sono quindi problemi NP-hard in senso stretto.
Graficamente, di seguito nella figura (1.3) viene descritto il VRBP:
Deposito
D
Cliente Linehau l
Cliente Backhaul
Figura (1.3):VRPB Fonte: elaborazione personale
18
Per riassumere quanto esposto in questo capitolo, di seguito la figura (1.4) dove descriviamo le correlazioni tra le principali classi di problemi, a partire dal caso base il CVRP, che si differenziano per i vincoli imposti.
Backhauling
VRPB
CVRP Time Windows
Distance
Mixed Service
VRPPD
VRPTW
VRPBTW
DCVRP
VRPPDTW
Figura (1.4): La classificazione dei problemi di Vehicle Routing Fonte: TOHT, P., VIGO, D., 2002. The Vehicle Routing Problem. SIAM
Nella figura (1.4) sono state inserite sono solo alcune possibili estensioni del VRP, quelle maggiormente studiate e note. Nel seguito di questo lavoro focalizzeremo l'attenzione sul problema di routing di veicoli con finestre temporali, cioè la variante del VRP più importante, definiremo un modello matematico ed analizzeremo i principali approcci a tale problema di ottimizzazione combinatoria.
19
Capitolo 2 - VRPTW: Vehicle Routing Problem with Time Windows Riprendendo i concetti di base del Vehicle Routing Problem with Time Windows (VRPTW) illustrati nel Capitolo 1 e partendo dall'articolo base di questa tesi: Hascimoto H., Yagiura M., Imahori S. e Ibaraki T. (2010) Recent progress of local search in handling the time window of the vehicle routing problem, andremo ad approfondire tale problema, orientando l'analisi e l'approfondimento delle tematiche discusse all'interno dell'articolo.
2.1 VRPTW Ma partiamo dai concetti principali del VRPTW: Tra le tante varianti del VRP (illustrate nel primo capitolo) il VRPTW è la variante più comune e più studiata, infatti tale tipologia di problema è un' importante generalizzazione del VRP classico, tale problema include, oltre a tutti i vincoli definiti per il problema base, anche un vincolo temporale per cui ha una maggiore complessità rispetto al VRP. Il VRPTW è molto studiato nel campo della ricerca operativa perchè è uno dei problemi di ottimizzazione combinatoria più difficili, e come già accennato, questo problema è rilevante per il progresso nella gestione del modello di base di routing. Il VRPTW coinvolge un certo numero di veicoli che, partendo da un deposito, devono servire un certo numero di clienti in determinate finestre temporali situati in posti geografici differenti. La finestra temporale (time windows) è un intervallo di tempo specifico all'interno del quale il veicolo deve iniziare e quindi fornire il servizio a ciascun cliente; il lasso di tempo è definito dal cliente stesso, in questa caso i clienti richiedono dei tempi di consegna, vale a dire il momento della giornata in cui le consegne devono avvenire.
Come abbiamo già anticipato, a ogni veicolo deve essere assegnato a un circuito (rotta), progettato in modo tale che ciascun cliente venga servito da un solo veicolo e una sola volta all'interno del percorso e all'interno della finestra temporale specifica.
20
Ogni veicolo deve iniziare il proprio percorso da una posizione specifica (il deposito) e al termine del proprio servizio deve tornare al deposito. Ciascun cliente ha una specifica domanda ma le richieste totali di tutti i clienti all'interno di una determinata rotta non devono superare la capacità del veicolo, per cui ogni veicolo non può servire più clienti rispetto alla sua capacità di carico.
L'introduzione del vincolo temporale al problema di VRP di base rende più difficile la costruzione ed il mantenimento di un insieme realizzabile di rotte, ma permette la specificazione di funzioni obiettivo più realistiche, rispetto alla semplice minimizzazione della distanza totale percorsa sostenuta dalla flotta di veicoli, in modo che siano rispettati i vincoli di capacità, infatti gli obiettivi del VRPTW sono quelli di minimizzare: il costo complessivo del viaggio; il numero di veicoli utilizzati; la durata totale del percorso.
In questa variante con la presenza di finestre temporali, i costi totali che si devono considerare comprendono i costi fissi di utilizzo del veicolo ma anche i costi variabili, come ad esempio quelli di tempo necessario per gli spostamenti e i tempi di attesa sostenuti quando un veicolo arriva troppo presto dal cliente o quando il veicolo viene caricato o scaricato. Tale problema aggiunge specifiche condizioni realistiche al VRP, difatti ha una vasta gamma di applicazioni nel mondo reale, è un importante problema che si verifica in molti sistemi di distribuzione con la conseguenza che la risoluzione del problema contribuisce direttamente alla riduzione dei costi totali nelle attività imprenditoriali (ad esempio nell' area logistica o nella gestione della distribuzione). Di seguito alcuni principali esempi che evidenziano come il VRPTW si riscontri nelle maggior parte delle attività quotidiane della vita reale, come i servizi di:
consegna alle banche (Lambert et al. (1993)), in questo caso la maggior parte delle banche devono inviare dei veicoli in modo regolare alle proprie succursali al fine di raccogliere denaro depositato dai clienti o fornire denaro a filiali o bancomat. Il
21
problema è definito come un problema di VRP con l'aggiunta di condizioni specifiche del contesto bancario, come ad esempio sanzioni degli interessi persi; scuolabus (Braca et al.(1994)), l'analisi del problema ha origine dall'obiettivo di trovare un sistema computerizzato per pianificare il servizio di trasporto per una flotta di autobus scolastici in tutti i distretti di New York, città che ha uno dei sistemi scolastici più estesi al mondo. L'obiettivo, come per tutti i problemi di VRP, è quello di minimizzare il numero di scuolabus necessari a servire la città riducendo così al minimo il costo totale di esercizi; tenendo presente che oltre al vincolo di capacità (un autobus può contenere solo un numero limitato di studenti in una sola volta) devono anche essere soddisfatti i vincoli temporali, ogni studente non deve viaggiare sul bus per più di un ammontare specifico di tempo, in quanto uno studente è più sicuro quanto meno tempo passa all'interno dello scuolabus. Inoltre è presente una finestra temporale definita di acceso alla scuola, e per questo l'autobus deve svolgere il servizio rispettando gli orari di inizio e fine delle attività scolastiche; consegne postali (Mechti et al. (2001)), questo problema si occupa del servizio postale giornaliero presso i clienti sparsi all'interno di una specifica zona urbana, la trattazione di Mechti et al.(2001) ha l'obiettivo di progettare una serie di percorsi di costo minimo, che hanno origine e che terminano in un deposito centrale, per una flotta di veicoli identici che devono erogare il servizio postale al clienti; raccolta di rifiuti industriali (Golden et al. (2001)), in questo specifico esempio, si analizza la gestione dei rifiuti solidi industriali, infatti molte aziende di rifiuti solidi devono riuscire a erogare il servizio di raccolta rifiuti ottimizzando tempo e numero dei veicoli coinvolti, considerando anche la compattezza del percorso e il bilanciamento del carico per soddisfare le esigenze dei clienti. Inoltre nell'industria della raccolta dei rifiuti, ci sono tre aree principali: la raccolta dei rifiuti commerciale, la raccolta dei rifiuti residenziali e roll-on-roll-off (raccolta che viene attuata quando sono coinvolti grandi rimorchi, per cui bisogna spostare volumi consistenti da cantieri, aree del centro ad un impianto di smaltimento). Oltre ai vincoli del problema VRPTW bisogna, in questo caso considerare le operazioni di smaltimento e gli orari di lavoro (turni e pausa pranzo) dei conducenti. Quando un veicolo è pieno, è necessario passare ad uno degli impianti di smaltimento (discarica o stazione di trasferimento). Si deve quindi tener conto anche di variabili specifiche come: la gestione di diverse tipologie
22
di rifiuti, le dimensioni delle confezioni di rifiuti, la disposizione in più punti nel territorio delle sedi di smaltimento e le esigenze dei clienti diverse e variabili; consegna di gas industriali (Campbell et al. (2001)), in questa trattazione si è analizzato il problema della gestione e distribuzione del rifornimento di gas industriali da una grande azienda ai singoli clienti. In questo caso il fornitore gestisce il rifornimento delle scorte dei propri clienti, lo stesso determina quando e in quali quantità il cliente dovrà ricevere la fornitura di gas attraverso il monitoraggio, con tecnologie ad hoc, a distanza dei livelli delle scorte. I venditori così risparmiano sui costi di distribuzione grazie alla possibilità di coordinare meglio le consegne ai diversi clienti e quest'ultimi non devono dedicare delle risorse per gestire le scorte, questi tipi di problemi sono noti come Inventory Routing Problems (IRP). L'obiettivo è quello di minimizzare il costo totale di distribuzione del prodotto, ma non causando rotture di stock, il cliente non dovrà mai essere sprovvisto del prodotto. In questa analisi si combina la gestione delle scorte presso i clienti con la progettazione delle rotte.
Inoltre, nella realtà, i vincoli di tempo e capacità possono, in una certa misura, essere violati. Per cui per quanto riguarda il vincolo temporale, esistono due principali varianti del problema:
la prima è la variante in cui le finestre temporali sono “hard”, in questo caso il vincolo temporale deve essere soddisfatto e rispettato rigidamente, il veicolo può arrivare in anticipo da un cliente ma in tal caso per poterlo servire deve aspettare l'inizio della relativa finestra temporale e comunque non può arrivare dal cliente dopo il termine dell'intervallo di tempo predefinito; la consegna dei beni al cliente non è possibile al di fuori della finestra temprale specificata. Variante definita Vehicle Routing Problem with Hard Time Windows (VRPHTW). nella seconda variante le finestre temporali sono “soft”, nel senso che il vincolo di tempo può essere violato al costo dell'introduzione di una penalizzazione all'interno della funzione obiettivo; la consegna è possibile al di fuori del lasso temporale definito dal cliente ma sono previste delle sanzioni. Tale variante è definita Vehicle Routing Problem with Soft Time Windows (VRPSTW). Soprattutto negli ultimi anni, questa
23
variante è stata studiata da molti ricercatori come analizzeremo nel prossimo paragrafo. Come definito all'interno della trattazione di Hashimoto et al.(2010), la soluzione al VRPTW è composta da due fasi: routing: si stabiliscono i percorsi dei veicoli per servire tutti i clienti (instradamento dei veicoli, vehicles routing);
scheduling: in questa fase si definiscono i turni di ogni veicolo, pianificando il tempo di ogni mezzo lungo il suo percorso, avendo come informazioni note la domanda, i luoghi e tempi di inizio e di fine del servizio (turnazione dei mezzi, vehicles scheduling).
Sebbene il calcolo della parte di routing (ad esempio, la distanza e la violazione dei vincoli di capacità) può essere fatto in modo efficiente, la parte di scheduling (ad esempio, la violazione del vincolo della finestra temporale) diventa spesso un collo di bottiglia per un algoritmo, poiché comporta la determinazione dei tempi. Per non avere questo tipo di limite, ci concentreremo sulla parte di scheduling lungo ogni rotta. Infatti ponendo l'attenzione più specifica alla parte di scheduling, si definisce il problema di determinare un'ottima schedulazione dei veicoli in ogni rotta per soddisfare il cliente, Optimal Time Scheduling Problem (abbreviato OTSP), per cui si ottimizza la turnazione dei veicoli per soddisfare la domanda dei clienti. Un tema legato al OTSP è il “machine scheduling problems with time windows” si considera la programmazione dei macchinari con il vincolo temporale, per cui si considera il problema di schedulare i macchinari in modo che rispettino le finestre temporali. Il problema di programmazione della macchina è uno dei problemi classici di ottimizzazione combinatoria. Tali problemi sono strettamente correlati alla VRPTW, in cui un cliente corrisponde a un posto di lavoro e ogni lavoro ha un tempo di elaborazione, un tempo di rilascio e una data di scadenza. Ogni attività deve essere elaborata dopo il suo tempo di rilascio e prima della data di scadenza. In questi tipi di problemi il vincolo temporale (vale a dire, tempo di rilascio e/o la data di scadenza) a volte può essere violato, e viene considerata la pena per tale violazione. 24
Un'impostazione comune è che il vincolo di tempo è hard per i tempi di rilascio, ma è soft per le date di scadenza, in tal caso, i programmi vengono valutati da un valore oggettivo in relazione alle date di scadenza, come ad esempio il ritardo totale, ritardo massimo e il tempo totale di anticipo nel attività.
2.2 Modello Matematico del VRPTW Descriviamo ora un modello matematico di programmazione lineare intera per il VRPTW. Il VRPTW è definito da un grafo completo orientato, G = (V, E) dove: V = {1,2,....,n} è l'insieme dei vertici (nodi); E = {(i;j)| i,j ∈ V, i≠j } definisce l'insieme degli archi del grafo il quale rappresenta la connessione tra deposito e clienti e tra clienti; M = {1,2,....,m} è l'insieme dei veicoli, ed ogni veicolo ha una identica capacità u.
Il deposito è rappresentato da 0 in cui partono tutti i veicoli con il carico da consegnare e quello a cui tornano una volta percorsa la relativa rotta. Tutti gli altri vertici rappresentano i clienti i. Ad ogni cliente i ed ad ogni arco (i,j)∈ E della rete vengono associati: la quantità di beni da consegnare al cliente i, è fissa e predeterminata ai (≥ 0) la domanda dei clienti è nota; una finestra temporale [ei, li] che rappresenta l'intervallo temporale all'interno del quale deve iniziare il servizio al cliente i da parte del veicolo della flotta; un costo di trasporto
(≥ 0) da i a j;
un tempo di percorrenza dell'arco
(≥ 0), cioè il tempo di viaggio da i a j.
Il tempo di servizio, cioè il tempo in cui il veicolo staziona dal cliente per erogare il servizio per poi passare al cliente successivo, in questo caso è incluso all'interno del tempo di viaggio
Il deposito ha una finestra temporale [ , ], detta anche scheduling horizon.
25
Poiché il tempo del servizio è calcolato all'interno del tempo di viaggio non ha effetti sui costi, si può supporre senza perdita di generalità che
= =0, cioè che tutte le rotte partano
dal tempo 0 e si assume inoltre che in deposito il veicolo ha quantità di carico pari a 0, Indichiamo con
il percorso (rotta/circuito) del veicolo k, dove
all'interno del percorso
=0.
(h) indica il cliente h è
.
Per cui il percorso σ è dato da: =(
,
,........,
)
comprende tutti i percorsi di tutti i veicoli in gioco all'interno del grafo. Per cui ogni rotta
ha un numero di cliente definito che indichiamo con
.
Per costruire il modello matematico introduciamo: la variabile binaria:
(σ) ∈ {0,1}, per i ∈ V \ {0} e k ∈ M,
(σ) è pari a 1 se e solo
se il veicolo k visita il cliente i, 0 altrimenti;
Lo scopo del modello VRPTW è quello di definire un insieme di rotte di costo minimo, una per ogni veicolo, in modo tale che: ogni cliente i sia servito esattamente una volta dal veicolo k; ogni cliente i è incluso esattamente una volta nel percorso ogni rotta abbia origine nel vertice 0 il deposito per cui
;
(0)=0 e
(
.+1)=0
vale
per tutti i veicoli k questo significa che ogni veicolo k ∈ M parte dal deposito, svolge il servizio definito presso i clienti
e poi ritorna al deposito;
vengano osservati i vincoli: temporali: nel senso che devono essere soddisfatte le preferenze dei clienti per quanto riguarda il momento della giornata in cui vogliono essere serviti; di capacità: la domanda totale dei clienti della specifica rotta non può essere maggiore alla capacità del veicolo che deve percorrerla. Il costo di viaggio del percorso del veicolo k è espresso come: nk
d ( k ) c( k ,( h ), k ( h 1)) h 0
la somma di tutti i costi sostenuti dal veicolo k per visitare tutta la quantità di clienti all'interno del percorso
partendo dal deposito per poi al termine del servizio farvi
ritorno.
26
Definiamo poi:
che indica l'inizio del servizio al cliente i dal veicolo assegnato;
il momento di arrivo del veicolo k al deposito al termine del percorso predefinito.
Il problema, nella forma classica, può essere formulato come segue
min
d (
kM
k
)
(2.1)
con i seguenti vincoli:
y
kM
ik
( ) 1
a y
iV o
i
ik
( ) u
∈
(2.2)
∈
(2.3)
∈
(2.4)
,
∈
∈
(2.5)
∈
(2.6)
∈
(2.7)
∈
∈
(2.8)
27
La funzione obiettivo (2.1) dichiara che i costi totali di routing del veicolo k dovranno essere minimizzati. I vincoli: (2.2) è il vincolo definito di assegnazione, per cui ogni cliente i∈ \{0}deve essere visitato esattamente una volta e deve essere assegnato ad un veicolo, per cui la consegna non può essere frazionata tra più veicoli; (2.3) è un vincolo di capacità, esplicita che nessun veicolo deve essere caricato più di quanto sia permesso dalla sua capacità u; I tre vincoli (2.4), (2.5) e (2.6) successivi sono vincoli di flusso: (2.4) questo vincolo si assicura che ogni veicolo
∈
parta dal deposito (cioè dal
vertice 0) (2.5) definisce che il veicolo lasci il cliente i solo se ha visitato tale nodo cioè il veicolo dopo aver raggiunto un cliente deve ripartire nuovamente, il veicolo k non può servire il cliente se prima non è arrivato in tale nodo; (2.6) con questo vincolo si definisce che il veicolo deve tornare alla fine del percorso al deposito, questo ultimo vincolo di flusso è ridondante ma esso è mantenuto nel modello per mettere in evidenza la struttura di rete; (2.7) tale vincolo è specifico della variante VRPTW, è il vincolo temporale per ogni cliente, tale vincolo impone che ogni finestra temporale sia rispettata e quindi soddisfatta; (2.8) questo ultimo è il vincolo di interezza della variabile decisionale y.
Si noti che le variabili decisionali essenziali in questo formulazione sono i percorsi del veicolo k
, poiché i valori di
(σ) sono determinati automaticamente da σ, e quando σ è
fisso, è facile o trovare valori appropriati per
(inizio del servizio al cliente) e
(momento di arrivo al deposito) o si conclude che non è possibile trovare un pianificazione fattibile per la rotta σ. Il numero di veicoli m può anche essere una variabile di decisione, in questo caso l' obiettivo espresso è quello di trovare una soluzione, minimizzando il numero di veicoli e il costo totale delle spese di viaggio in ordine lessicografico, cioè, una soluzione è migliore di un altra se: 1. se il numero dei veicolo è minore o; 2. se i numero del veicolo sono gli stessi ma il costo è minore. 28
Omettendo i vincoli specifici della variante di VRP con finestra temporale il modello proposto rappresenta un CVRP classico, questo può essere ottenuto definendo un'istanza caratterizzata dai parametri
=0 e
=+∞ per ogni vertice (cliente) i=1,..., n, quello che ne
risulta è un problema generalizzato da VRPTW problema quindi NP-hard in senso stretto.
Eliminando invece il vincolo di assegnazione (2.2) il problema diventa un Elementary Shortest Path Problem with Time Windows and Capacity Constraints (ESPPTWCC) per ogni veicolo, il problema in questo caso ha l'obiettivo di trovare il percorso più corto che parta dal deposito e termini nello stesso, tenendo presenti e quindi rispettando i vincoli temporali e di capacità, con l'obbligo del veicolo di visitare i clienti sulla rotta al massimo una volta. Dato che abbiamo assunto che la flotta di veicoli sia omogenea, i veicolo sono identici tra loro e quindi anche tutti i problemi ESPPTWCC che si ottengono rimuovendo il vincolo di assegnazione. Oltre ad eliminare il vincolo di assegnazione (2.2) se elimino: il vincolo temporale ottengo un problema denominato ESPPCC in cui resta da rispettare il vincoli di capacità; il vincolo di capacità (2.3) ottengo ESPPTW; entrambi i vincoli temporale e di capacità il problema sarà denominato ESPP. Si può definire anche un rilassamento di ESPPTWCC, il SPPTWCC, il problema in questo caso deve trovare il percorso più corto che soddisfi sia il vincolo di capacità che i vincoli di tempo, ma in questo caso non si deve rispettare il vincolo che il cliente debba essere visitato una sola volta, in questa variante il cliente può essere servito più di una volta. In questo caso se eliminiamo il vincolo (2.2) e: il vincolo temporale abbiamo: SPPCC; il vincolo di capacità troviamo SPPTW; entrambi siamo temporale e di capacità nel caso di SPP.
29
2.3 Variante “Hard” e “Soft” Come anticipato nel paragrafo 2.1 dedicato all'introduzione del problema VRPTW, in questo paragrafo andremo a definire in modo più dettagliato le due varianti principali del vincolo temporale, ossia il periodo di tempo in cui il servizio al cliente deve essere eseguito, le quali sono definite:“Hard” e “Soft”. L'articolo alla base della di questa tesi, propone i risultati di recenti studi su come gestire le due varianti di finestre temporali, andando ad analizzare le diverse definizioni.
2.3.1 Vehicle Routing Problem with Hard Time Windows (VRPHTW) In questo caso il vincolo temporale è da rispettare rigidamente, in questa variante del problema le violazioni alla finestra temporale sono irrealizzabili, per cui si deve servire il cliente assolutamente all'interno della finestra temporale[ei, li] indicata dallo stesso. Le consegne non sono possibili al di fuori del tempo definito dal cliente, per questa sua caratteristica di rigidità, questa variante è studiata dalla maggior parte della ricerca di ottimizzazione esatta. In questo caso il veicolo deve arrivare in i ed iniziare il servizio prima del tempo li, non è consentito arrivare dopo la fine della finestra temporale e nel caso in cui arrivi prima del tempo ei si è costretti ad aspettare, fino al momento in cui può iniziare il servizio. Il grafico 2.1 di seguito, rappresenta tale problema in cui si evince come le attività svolte dal cliente da parte del veicolo associato deve avvenire all'interno della finestra temporale [ei, li] definita e tale vincolo deve essere rispettato.
Penalità in ∞ termini di costo
[ei
l i]
Grafico 2.1: VRPHTW Fonte:elaborazione personale 30
Il VRPHTW è stato molto studiato in letteratura, perchè è un problema con applicazioni pratiche nella distribuzione, infatti è comune che i clienti pongano limiti agli orario di arrivo e partenza dei veicoli per la ricezione o consegna della merce, e nella logistica a causa della crescente importanza del just-in-time (JIT), nei sistemi di produzione e nel coordinamento sempre più breve delle operazioni di supply chain. Pertanto, qualsiasi algoritmo di pianificazione di una flotta di veicoli deve rispettare queste restrizioni. Per VRPHTW trovare un programma realizzabile con un numero determinato di veicoli è noto essere NP-completo, perché comprende un problema monodimensionale come il binpacking (Garey e Johnson (1979)). Pertanto, la ricerca all'interno della regione fattibile VRPHTW può essere inefficiente, soprattutto quando i vincoli sono stretti, per cui questo vincolo troppo rigido può prevenire possibili soluzioni. Inoltre, in molte situazioni del mondo reale, i vincoli di tempo e di capacità, in qualche misura, possono essere violati. La formulazione matematica di tale variante è stata descritta nel paragrafo 2.2, nel modello viene definito il vincolo (2.7) il quale impone che ogni finestra temporale sia rispettata e quindi soddisfatta, non è possibile erogare il servizio al cliente al di fuori della finestra temporale definita.
2.3.2 Vehicle Routing Problem with Soft Time Windows (VRPSTW)
In questa variante del tema, le finestre temporali possono essere non rispettate, i veicoli sono autorizzati a violare le finestre temporali stabilite, ma viene definita una sanzione nel momento in cui la consegna del servizio al cliente avviene al di fuori delle finestre temporali stabilite. Per cui i limiti inferiore e superiore della finestra temporale non devono essere soddisfatti, ma possono essere violati con una penalità. Questo tipo di vincolo non restrittivo rappresenta una preferenza rispetto al momento in cui il servizio dovrebbe avvenire nella sede dei clienti, se un cliente è visitato all'interno della sua finestra temporale richiesta, non viene applicata nessuna penalità in termini di costi aggiuntivi che sono a carico di chi eroga il servizio (del distributore). In questo modo è possibile calcolare circuiti fattibili che sono molto più redditizi per l'operatore logistico. 31
Il vantaggio principale della finestra temporale con vincolo “soft” è quello che un piano realizzabile può includere più visite rispetto al caso in cui vengono imposte delle finestre temporali "hard"; in questo modo si posso realizzare dei circuiti più redditizi. Tuttavia l'algoritmo di ottimizzazione deve tener conto dei costi aggiuntivi provenienti dalle sanzioni; per cui nella funzione obiettivo, le penalità sono assegnate alle variabili decisionali che riflettono la violazione di finestre temporali, ciò implica una serie di problemi algoritmici che devono essere opportunamente indirizzati facendo uso delle tecniche di ottimizzazione matematica. Questa non ristrettezza dei limiti va a discapito della soddisfazione del cliente, che non vede realizzata la sua preferenza circa il momento temporale in cui il servizio deve avvenire, per cui vengono definite pene adeguate in termini di costi. Il grafico 2.2, di seguito illustrato, rappresenta graficamente il problema; in questo caso si evidenzia che se il servizio viene svolto al di fuori della finestra temporale specificata [ , ] si registra una penalità che si tramuta in un aumento dei costi che si devono sostenere.
Penalità in ∞ termini di costo
[ei
l i]
Grafico 2.2: VRPSTW Fonte:elaborazione personale
Grafico 2.2 VRPST Questo allentamento nel vincolo di tempo rende più flessibile l'erogazione del servizio e diventa utile quando si pianifica la distribuzione quotidiana di un deposito centrale ad un ristretto numero di clienti. Inoltre, questo modello ci permette di valutare le conseguenze di assegnare sanzioni diverse per la violazione delle finestre temporali a seconda del cliente. Infatti il coefficiente della sanzione può essere regolata per ogni cliente.
32
Per esempio, un alto coefficiente può essere associato a clienti con requisiti di tempo piuttosto rigidi e un basso coefficiente a clienti con una certa flessibilità.
Questa tematica è stata studiata recentemente da molti ricercatori, di seguito un breve elenco degli studiosi con le principali argomentazioni studiate di questa variante: Balakrishnan (1993) con l'obiettivo di sviluppare le soluzioni veloci, ha sviluppato tre euristiche costruttive con inserimento sequenziale dei clienti nel circuito, le euristiche sono
basate
sul
vicino
più
prossimo,
ogni
euristica
deve
determinare
contemporaneamente il tempo effettivo per iniziare il servizio e il tempo per passare al cliente successivo, ogni euristica deve utilizzare una misura diversa per confrontare il tempo di attesa dal cliente con la penalità relativa da pagare con il beneficio di lasciare immediatamente il cliente. I risultati sono stati positivi, si è analizzato che si riducono di molto i veicoli necessari a soddisfare le richieste dei clienti. Taillard et al. (1997) propongono il tabù search heuristic per risolvere un VRPSTW, cioè con funzioni di penalizzazione lineari. L'algoritmo di tabù search ha prodotto ottimi risultati all'interno del problema VRPHTW, ma nessun risultato viene segnalato per la variante soft. Chiang e Russell (2004) hanno definito che il VRPSTW ha diverse peculiarità: (1) ha un effetto diretto in una riduzione dei costi totali, senza danneggiare la soddisfazione del cliente in modo significativo; (2) molte applicazioni non richiedono finestre temporali rigide”hard” - ad esempio la fornitura di combustibile/gas delle stazioni di servizio; (3) in molti settori i tempi di viaggio non posso essere noti a priori, per cui avere questa possibilità facilita la soddisfazione del cliente e la buona riuscita del servizio; tutto questo è un buon compromesso tra dimensioni della flotta e qualità del servizio dato al clienti; (4) questo approccio può essere utilizzato per risolvere i problemi di tipo hard se le sanzioni sono definite in modo appropriato.
33
Fu et al. (2008) analizzano i diversi tipi di VRPSTW. Presentano la funzione penalità unificata con cui i diversi tipi di VRPSTW possono essere risolti semplicemente modificando i valori dei parametri corrispondenti nella funzione penalità. Risultati computazionali su problemi di benchmark sono forniti e confrontati con altri metodi in letteratura. Alcune soluzioni migliori per i noti problemi di benchmark nella letteratura sono state migliorate con l'algoritmo.
Liberatore et al. (2010) presentano un algoritmo branch-and-price che è il primo algoritmo di ottimizzazione esatta per questo problema. Infatti il VRPSTW risulta essere molto più difficile della versione hard dal punto di vista computazionale, l'algoritmo esatto può essere utilizzato come un'euristica che fornisce una garanzia approssimata a posteriori, quando la dimensione del caso impedisce di trovare una soluzione ottimale dimostrabile nel tempo a disposizione per calcolarlo.
Il VRPSTW è un rilassamento del VRPHTW, questo modello è più generale. Dal momento che ci sono meno vincoli rigidi, le soluzioni sono fattibili e sono più facili da trovare. Per cui il VRPSTW può fornire una soluzione alternativa al problema VRPHTW, per fare un esempio di caso generale le finestre temporali hard possono essere mappate come finestre temporali soft ma con costi infiniti dati dalla violazione. Di seguito, dopo aver definito le caratteristiche principali della variante con vincolo temporale “soft”, analizziamo in modo più approfondito il vincolo di finestra temporale soft con sanzioni lineari, caso analizzato e studiato da Hashimoto et al.(2010). Troviamo due diversi approcci per affrontare la violazione del vincolo temporale: 1. Nel primo caso, viene definita una penalità sull'orario di inizio del servizio, il vincolo di tempo può essere violato sostenendo delle penalità per lo svolgimento del servizio in anticipo e/o in ritardo rispetto la finestra temporale definita. Questo tipo di impostazione viene spesso utilizzata per problemi di scheduling in machine (problema di turnazione delle macchine). 2. Nel secondo approccio, si propone una pena sui tempi di percorrenza dei veicoli, in questo caso il vincolo di tempo deve essere soddisfatto, ma i tempi di viaggio tra i clienti può essere abbreviato a costo di introdurre la pena proporzionale al suo 34
ammontare. Questo approccio viene anche utilizzato per valutare il grado di inflessibilità del vincolo hard (finestra di tempo rigida). Esponiamo di seguito una serie di impostazioni di algoritmi per il vincolo temporale soft, con l'obiettivo di calcolare il OTSP (Optimal Time Scheduling Problem) ciò significa ottimizzare la turnazione dei veicoli per soddisfare i clienti, in altre parole è il problema di determinare il momento di avviare i servizi presso i clienti in una determinata rotta σk , in modo tale da minimizzare la pena. Vediamo il primo caso dove viene definita una penalità sull'orario di inizio del servizio: Sia
( ) la sanzione del cliente, quando il servizi in i inizia al momento si per comodità,
assumiamo che il veicolo k visiti i clienti in questo ordine 1, 2,......
in questo ordine e
+1 rappresenta il ritorno al deposito. Il OTSP può essere così formulato: nk 1
min p h ( s h )
(2.9)
h 1
La funzione obiettivo (2.9) definisce che le sanzioni totali siano ridotte al minimo. Soggetto ai vincoli di: (2.10) (2.11) I due vincoli definiscono che: (2.10) il tempo in cui il veicolo k lascia il deposito è uguale a 0, tutti i veicoli partono dal deposito; (2.11) dichiara che il veicolo k che sta visitando tutti i clienti h non può arrivare dal cliente prima del tempo
che è la somma del tempo in cui il veicolo k
inizia il servizio al cliente h e il tempo per spostarsi da un cliente all'altro, i clienti sono visitati in ordine da 1 a
.
35
Molti algoritmi per il OTSP sono stati proposti in letteratura, di seguito vediamo i principali, ogni studio determina in modo diverso la penalità ph: Desrosiers et al. (1995), é stato il primo a definire un algoritmo nel caso in cui il
è lineare
all'interno della finestra temporale, +∞ altrimenti:
, p h ( s h ) s h eh , ,
s h eh eh s h l h sh l h
In questo caso ogni veicolo dovrebbe iniziare il suo servizio non appena possibile e la tempistica ottimale può essere calcolato nel tempo O(
).
Sexton and Bodin (1985), hanno soffermato i loro studi nella variante del problema di Pickup and Delivery (VRPPD) applicando le time windows soft ad un problema di VRPPD per poi formulare un algoritmo di tempo O(
).
All'interno del problema di VRPPD, c'è un insieme di richieste, ognuna di queste rappresenta una richiesta che parte da un'origine fino ad una destinazione, nel loro elaborato ogni servizio presso il cliente h (servizio inteso come ritiro della merce dall'origine o consegna della merce al vertice di destinazione), deve iniziare il prima possibile rispetto il tempo
.
Ogni cliente ha un punto desiderato di prelievo e un punto desiderato di consegna e il problema è quello di determinare l'ordine e i tempi di prelievo e consegna in modo da minimizzare tutti i disagi del cliente. Come funzione di costo usano però una combinazione lineare di due addendi: Per ogni richiesta, in cui viene recapitata la merce (il servizio) da i a j, viene calcolata una sanzione α ( - ) (α è una costante) che rappresenta il tempo cumulativo di violazione delle finestre temporali per aver anticipato la spedizione (la differenza tra il tempo desiderato di consegna e il tempo effettivo in cui avviene), si calcola anche una penalità β ( -
) (β è una
costante) il ritardo calcolato dalla ricezione alla consegna (il tempo cumulativo in cui i veicoli sono impiegati). Si tratta di un obiettivo probabilmente più adatto a descrivere un trasporto di merci.
36
Pertanto, la penalità
( ) può essere rappresentata come:
s h p h (sh ) h
sh lh sh lh
dove
Yh
h è l ' origine della richiesta h è la destinazio ne della richiesta
Koskosidis et al. (1992), Davis and Kanet (1993), Balakrishnan (1993), Tamaki et al. (1999a) and Tamaki et al. (1999b), nella loro analisi si dovrà pagare una penalità in termini di costi, la quale sarà proporzionale a quanto il servizio sarà erogato in anticipo o in ritardo, attraverso i coefficienti non-negativi La penalità
e
se in anticipo
se in ritardo
.
( ) è definita come segue:
h ( eh s ) ph ( sh ) 0 (s l ) h h h
s h eh eh s h l h sh lh
Tuttavia i veicoli possono attendere senza alcun costo in qualsiasi momento, lungo le loro rotte. Sakuraba et al. (2009), ha proposto un O(
) algoritmo di tempo per un problema per un
sistema di pianificazione con date di rilascio individuali e una data comune di scadenza. Cioè, ogni posto di lavoro h (ossia, un cliente) ha un tempo di rilascio
e una comune data di
scadenza L. La pena
è data da:
ph ( sh ) L sh s L h
s h eh eh s h l h sh lh
37
Taillard et al. (1997), in questo caso la sanzione per il cliente h è: +∞ per la precocità e lineare per il ritardo, vale a dire:
ph ( sh ) 0 (s l ) h h
s h eh eh s h l h sh lh
si propone un O(1) algoritmo di tempo per calcolare approssimativamente la pena in una soluzione ottimale. Nel secondo approccio, si propone una pena sui tempi di percorrenza dei veicolo: Nagata (2007) ha proposto un diverso tipo di sanzione per la violazione del vincoli temporale nella sua definizione infatti il tempo di viaggio tra i clienti può essere ridotto di una quantità arbitraria per soddisfare i rigidi vincoli di tempo in modo che la penalità sia minimizzata. Il OTSP risultante può essere formulato come: nk 1
min Th
(2.12)
h 1
soggetto ai seguenti vincoli: (2.13) (2.14) (2.15) (2.16)
Si può notare che, in questa impostazione, il tempo di inizio del servizio significativo per il OTSP, perché il tempo di percorrenza ridotto
non può essere può essere
negativo. Tuttavia, il valore ottimale per questo problema è una stima del grado di inflessibilità del percorso determinato, e il problema può essere risolto in modo efficace, nel tempo O(
,
38
mentre il suo valore ottimale può essere ottenuto in O(1) cioè il tempo per ottenere una soluzione in un intorno standard insieme a O(
inteso come il tempo di aggiornamento della
struttura dei dati quando viene accettato un cambiamento. La complessità di tempo O(
è ottenuta mediante un algoritmo di programmazione
dinamica. Definito che
è il tempo minimo di percorrenza per arrivare ai clienti 1, 2,......,h quando il
veicolo k li visita in questo ordine lungo il percorso. Sia
insieme con
l'ora di inizio del servizio da h che raggiunge
.
La formula di programmazione dinamica è quindi: =
(2.17) -
Nella formula (2.17), se
<
(2.18)
, il tempo di percorrenza si riduce per
soddisfare il vincolo di tempo e questo importo ridotto è sommato a Si può notare che
può essere calcolata nel tempo
essere ottenuto nel tempo O(
in (2.18).
O(1) e il valore ottimale
può
).
Una naturale estensione di questo OTSP è quello di utilizzare una funzione obiettivo ponderata
invece di utilizzare la formula (2.12).
In letteratura Masuda (2001), ha illustrato un altro tipo di variante della finestra temporale il Vehicle Routing Problem with General Time Windows (VRPGTW). In questo caso, dopo aver fissato l'ordine dei clienti da visitare per ogni veicolo e definito quindi il suo specifico percorso, si devono determinare il tempi di avvio ottimali per servire i clienti in modo che la penalizzazione totale sia ridotta al minimo; in questo tipo di problema sono ammesse molteplici finestre temporali per ogni cliente. 39
La parte essenziale della VRPGTW è assegnare ai veicoli i clienti e determinare l'ordine di visita di ciascun veicolo, questo problema può essere efficacemente risolto utilizzando la programmazione dinamica ed è risolto dall'algoritmo di ricerca locale (LS).
2.4 Algoritmi euristici
Lo sviluppo di questo tipo di algoritmi ha l'obiettivo di fornire una soluzione di buona qualità ad un problema difficile con un limitato tempo di calcolo, per cui dal testo di Maffioli (2000), l’algoritmo euristico è un metodo che non pretende di trovare una soluzione ottima al problema, ma solo una soluzione ammissibile il cui valore si è cercato di ottimizzare per quanto possibile. Gli algoritmi euristici sono utili quando dei fattori esterni chiedono di risolvere il problema con tempi di calcolo relativamente brevi fornendo soluzioni di buona qualità. A causa dell' elevata complessità e allo stesso tempo della sua ampia applicabilità alla vita reale, per il VRPTW si è messo in primo piano lo sviluppo di algoritmi euristici proprio per una reale necessità di produrre soluzioni di buona qualità in tempi brevi di elaborazione. La differenza principale tra algoritmi euristici classici e metaeuristici, sta nel livello di profondità che questi metodi raggiungono nell'esplorazione dello spazio delle soluzioni: euristici: determinano una soluzione ammissibile e di “buona qualità” in un tempo di calcolo accettabile e limitato; metaeuristiche: approfondiscono la ricerca della soluzione ottima nelle zone più promettenti dello spazio delle soluzioni, implementando sofisticate regole di ricerca e di ricombinazione dei risultati parziali ottenuti, questo tipo di metodo impiega un tempo di calcolo maggiore ma ottengono soluzioni migliori rispetto gli algoritmi euristici classici. La costruzione di algoritmi euristici si basa su elementi teorici e semplici regole di buon senso. Una utilità importante di questi algoritmi sta nella necessità di risolvere problemi NPhard di grandi dimensioni.
40
I metodi euristici sono metodi che trovano una soluzione attraverso una regola che viene applicata ad ogni passo dell'algoritmo e si possono dividere in tre classi: Euristici costruttivi: operano costruendo gradualmente una soluzione ammissibile, cercando di contenere il costo totale della soluzione stessa; Euristici a due fasi: scompongono il problema in fasi, si dividono i vertici in gruppi (cluster) e in un'altra fase si costruiscono dei route ammissibili. A loro volta questi metodi si suddividono in due classi: cluster-first, route second: i vertici sono prima raggruppati in cluster e poi viene calcolato un route per ogni cluster; route-first, cluster-second: un route viene costruito su tutti i vertici per poi essere suddiviso. Euristici migliorativi: si applicano ad una soluzione già esistente e non necessariamente ammissibile con l'obiettivo di migliorarla, procedendo con lo scambio di archi o vertici tra diverse rotte. All'interno dell'articolo di Bräysy e Gendreau (2005a) viene spiegato come valutare un metodo euristico, infatti per valutarlo al meglio ci sono vari elementi da analizzare, ad esempio: il tempo di esecuzione, la qualità della soluzione, la facilità di implementazione, la robustezza e la flessibilità, di seguito una breve descrizione: Flessibilità: un algoritmo deve essere in grado di gestire facilmente i cambiamenti nel modello come i vincoli o/e la funzione obiettivo ma poiché i metodi euristici sono progettati per risolvere problemi del mondo reale, la flessibilità è tra le più importanti caratteristiche da considerare; Robustezza: un algoritmo non dovrebbe essere troppo sensibile alle diverse caratteristiche del problema, un algoritmo deve essere in grado di produrre buone soluzioni ogni volta che si applica ad una data istanza; Facilità di implementazione: un algoritmo deve essere di facile implementazione per arrivare in tempi ragionevoli ad una buona soluzione;
41
Il tempo di esecuzione: il tempo necessario di un algoritmo euristico per produrre soluzioni di buona qualità può essere determinante nella scelta tra diverse tecniche; La qualità della soluzione: è importante perchè è misurata dalla funzione obiettivo, la soluzione ottimale è una misura standard di qualità. Vi è generalmente un trade-off tra il tempo di esecuzione e la qualità della soluzione, più a lungo una euristica viene eseguita, migliore è la qualità della soluzione finale. Un compromesso è necessario in modo che le soluzioni di buona qualità siano prodotte in un ragionevole lasso di tempo. Il metodo più comune per valutare la qualità della soluzione di un algoritmo euristico è l'analisi empirica. In generale, l'analisi empirica testa l'euristica in una vasta gamma di istanze del problema per avere un'idea delle prestazioni generali. Nel contesto VRPTW, il modo più comune per confrontare i metodi euristici sono i risultati ottenuti da Salomone (1987) con i 56 Problemi di Benchmark. Questi problemi hanno come oggetto 100 clienti, un deposito centrale con vincoli di capacità e vincoli di tempo, sono definite fasce orarie per la consegna e un tempo totale di percorrenza. I clienti possono essere classificati all’interno di gruppi o in posizioni casuali, i gruppi sono definiti dalle classi C1 e C2, i clienti in posizioni casuali sono compresi all'interno delle classi R1 e R2. Le classi RC1 e RC2 contengono un mix di entrambi i tipi di clienti casuali e gruppi. Ogni classe contiene tra gli 8 e i 12 casi di problemi individuali, e tutti i problemi in qualsiasi classe hanno lo stesso numero di clienti, gli stessi luoghi e le stesse capacità dei veicoli; si differenziano per le fasce orarie. In termini di densità del vincolo temporale (cioè la percentuale di clienti con la finestra di tempo), i problemi hanno 25%, 50%, 75%, e le finestre temporali 100%. Le classi C1, R1, e i problemi RC1 per avere un orizzonte di pianificazione di breve periodo richiedono da 9 a 19 veicoli. Questi problemi con un orizzonte di breve periodo hanno veicoli che una piccola portata ed i tempi di percorrenza sono brevi, e non si possono servire molti clienti in una sola volta.
42
Le classi C2, R2, e RC2 sono più rappresentativi per un tipo di consegna "a lungo raggio" con orizzonti di pianificazione più lunghi con meno (da due a quattro) veicoli. Sia il tempo di percorrenza e la distanza sono dati dalla distanza euclidea tra i punti. I risultati sono generalmente classificati secondo una funzione obiettivo gerarchico, dove è considerato il numero di veicoli come obiettivo primario, e per lo stesso numero di veicoli; l'obiettivo secondario è spesso o la distanza totale percorsa o la durata totale delle rotte. Pertanto, una soluzione che richiede meno rotte è sempre considerato migliore di una soluzione con più vie, indipendentemente dalla distanza totale percorsa. Secondo Bräysy (2001) questi due obiettivi sono molto spesso in conflitto, ciò significa che la riduzione nel numero di veicoli è spesso causa di aumento complessivo della distanza percorsa. Così, una soluzione migliore in termini di distanza totale può essere ottenuta aumentando il numero di percorsi.
2.4.1 Algoritmi euristici costruttivi
Questa tipologia di algoritmi parte da una soluzione vuota e determina iterativamente i nuovi elementi da aggiungere alla soluzione fino ad ottenere una soluzione completa (ammissibile). Il procedimento consiste principalmente nell'inserire gradualmente i clienti uno alla volta nelle rotte in base al così detto metodo di saving (metodo del risparmio). Dati due percorsi (0,....i,0) e (0,j,.....,0), se queste due rotte possono essere unite in un unico percorso ammissibile (0,....,i,j,...0) si ha un risparmio sui costi pari a
.
Gli algoritmi di costruzione si distinguono per l'ordine in cui vengono selezionati i clienti e dal metodo usato per determinare se un cliente deve essere inserito. I nodi vengono scelti in base a il criterio di minimizzazione dei costi, spesso soggetti ai vincoli di capacità del veicolo o del vincolo finestra temporale. Sono utili perchè per determinare il valore della variabili definite nel modello matematico vengono definiti questi algoritmi che sono eseguiti in tempi molto brevi rispetto agli algoritmi metaeuristici, e possono essere utilizzati per generare una soluzione iniziale che poi potrà essere sviluppata.
43
I metodi costruttivi possono essere divisi in: sequenziali: viene costruito un percorso alla volta sino all'esaurimento dei vertici, in nessun caso si può decidere tra più rotte in cui inserire un vertice; si costruisce una rotta alla volta; paralleli: più percorsi vengono costituiti contemporaneamente, il loro numero può essere fissato a priori o derivare dalla fusione progressiva di percorsi più piccoli già calcolati. Per quanto riguarda i metodi costruttivi sequenziali, Solomon (1987) ha sviluppato diversi tipi di questi algoritmi a inserimento sequenziale, tra tutti il più efficiente è quello che si sviluppa con la scelta prima di tutto del cliente più lontano dal deposito il quale viene definito il cliente centrale. I restanti clienti vengono poi inseriti uno per uno, uno dopo l'altro, selezionando ad ogni iterazione un cliente che massimizza il risparmio tenendo conto della distanza dal deposito e il costo di inserimento quel cliente nel percorso. Il cliente viene quindi inserito in una posizione in modo da minimizzare una combinazione ponderata tra la distanza supplementare e il tempo aggiuntivo necessario per visitare il cliente. Il processo viene ripetuto fino a quando tutti i clienti siano state inseriti e da questo momento non è più possibile inserire ulteriori clienti senza violare i vincoli di capacità o vincoli di tempo. A questo punto un nuovo percorso viene iniziato selezionando un nuovo cliente base (centrale) questo processo si ripete fino al punto di non avere più clienti da collocare. Ulteriori perfezionamenti al metodo euristico costruttivo sequenziale di Solomon (1987) sono stati descritti da Ioannou, Kritikos e Prastacos (2001) che hanno proposto di modificare i criteri di selezione del cliente per sottolineare che l'inserimento dei clienti nel percorso corretto ha poi degli effetti su tutti i clienti all'interno di quella rotta. La versione parallela di questo tipo di metodo costruttivo è stato successivamente sviluppato da Potvin e Rousseau (1993) i quali hanno proposto una misura che riflette il possibile aumento dei costi che potrebbe verificarsi se un cliente non è stato assegnato al percorso corretto con l'obiettivo di minimizzare il costo totale del percorso. 44
Il più noto algoritmo euristico proposto per il CVRP è l'Algoritmo dei risparmi di Clarke e Wright (1964), il quale si applica in modo naturale a problemi per i quali il numero dei veicoli non è predefinito ed è senz'altro l'euristica più conosciuta nell'ambito del Vehicle Routing Problem, ed è basato sull'idea di risparmio. Questo tipo di algoritmo si suddivide in due fasi: il calcolo dei risparmi e la fusione dei percorsi. Per quanto concerne il calcolo dei risparmi: Definito che: i,j=1,...., n, i≠j dove il cliente i è l'ultimo del percorso e il primo cliente dell'altro percorso è j, vale a dire, si ha un risparmio sui costi
,ovvero
la distanza
che si è risparmiata tornando al deposito una volta in meno. Vengono creati n rotte del tipo (0,i,0) per i=1,...., n e i risparmi vengono ordinati in ordine decrescente. Per quanto riguarda la fusione dei percorsi: Si seleziona l'arco (i, j) che massimizza
con la condizione che il percorso definito sia
fattibile, e poi si concatenano i due percorsi. Esistono due modi per procedere alla fusione dei percorsi:sequenziale o parallela. Nella versione sequenziale: Si esamina un percorso per volta, e si ricerca tra i risparmi, sempre dal maggiore al minore, se si può combinare il percorso corrente con un altro rispettando i vincoli di fattibilità per cui si considera a turno ogni generico percorso (0,i,...,j,0) e si determina il primo risparmio (saving) ski o sjl che consenta di fonderlo con un altra rotta contenente l'arco (k,0) o l'arco (0,l) per dar luogo ad un nuovo percorso ammissibile. Se questo passaggio va a buon fine si crea con la fusione un nuovo percorso, altrimenti si applica sempre lo stesso passaggio al percorso successivo, l'algoritmo si ferma quando non è più possibile effettuare alcuna unione di percorsi. Per quanto riguarda la versione parallela: Partendo dal massimo risparmio fino al minimo si effettuano le fusioni delle rotte, sempre però cercando di rispettare i vincoli di fattibilità, infatti si considerano i risparmi (saving) ordinati e si procede determinando se è possibile fondere insieme due rotte esistenti,
45
contenenti rispettivamente l'arco (0,j) e l'arco (i,0) dato il risparmio
ottenendo un nuovo
percorso ammissibile. La versione parallela presenta le prestazioni migliori anche se lontane da soluzioni ottime, entrambe le versioni producono buoni percorsi all'inizio ma poi possono presentare il difetto di essere troppo estesi geograficamente. Per ovviare a questo problema è stato proposto l'utilizzo di un parametro di forma di route λ che modifica i risparmi(saving) secondo la formula
Viene in questo
modo data più enfasi alla distanza dei vertici da collegare per valori maggiori di λ. I risultati sperimentali dicono che la versione parallela è più performante di quella sequenziale. Solomon (1987) ha applicato questo metodo al VRPTW, il suo approccio è quello di estendere il metodo del risparmio inizialmente proposto per il CVRP da Clarke e Wright (1964); definisce che per adeguare questo tipo di approccio al VRPTW, si deve prima di tutto verificare la fattibilità nel rispettare l'arco temporale (vincolo di tempo); perchè in un problema di routing la direzione con cui è attraversato un arco di solito è irrilevante, invece in questa procedura, a causa dell'esistenza di finestre temporali, si deve rappresentare l'orientamento delle rotte. L’autore prende in esame due percorsi parziali con i clienti finali i e j, rispettivamente, se i è il primo, e j è l'ultimo, i collegamenti ammissibili sono dall'ultimo cliente (1) su una rotta, al primo cliente (f) su un altra. Se i due percorsi sono combinati, gli orari di partenza sul primo percorso non cambiano invece per il secondo percorso, c'è una condizione necessaria che deve essere rispettata cioè ci deve essere un limite massimo di attesa nel percorso. Inoltre, si deve tener conto dei vincoli di capacità dei veicoli e si deve verificare di non violare i vincoli di tempo ad ogni passo nel processo euristico. Come definito nel procedimento euristico del risparmio, potrebbe risultare redditizio unire due clienti molto vicini in termini di distanza, ma molto distanti nel tempo. L'algoritmo euristico modifica il grado di collegamento tra i due clienti le cui finestre sono molto distanti nel tempo. Tali collegamenti introducono lunghi periodi di tempo di attesa, che possono avere un costo elevato.
46
Quindi per tener conto sia della vicinanza spaziale sia di quella temporale dei clienti, si può ridurre il tempo di attesa quando si uniscono due clienti: lasciando
che è il tempo di attesa
se f e 1 dovevano essere uniti, e W è un parametro, vale a dire, se
"* > W, in questo caso
non si deve utilizzare il collegamento (1, f). Gli orari di partenza lungo il percorso potrebbero essere scalati in avanti nel tempo, e uno di loro potrebbe diventare fattibile.
2.4.2 Algoritmi euristici a due fasi Questi metodi sono basati sulla decomposizione del problema che può essere effettuata nuovamente con metodi euristici. La generazione della soluzione viene suddivisa in due fasi denominate: cluster: genera degli insiemi di clienti; route: genera dei percorsi. Esistono due approcci per utilizzare queste due fasi. Nel caso si scelga cluster first, route second si generano prima gli insiemi di clienti che saranno serviti da un certo veicolo k. Al contrario nel caso route first, cluster second inizialmente si genera un circuito (giant tour), che non rispetta i vincoli, sulla base delle distanze o del tempo di percorrenza. La seconda fase riguarda la scomposizione del giant tour in modo da soddisfare i vincoli. Ad oggi l'approccio cluster first, route second risulta quello maggiormente seguito, tale algoritmo è stato sviluppato da Fisher e Jaikumar (1981) e proposto per il CVRP, si applica quando sono noti a priori il numero di veicoli K. Di seguito le due fasi dell'algoritmo: Nella prima fase si partizionano i clienti in cluster (insieme di clienti visitati da un veicolo) si deve risolvere un'istanza di assegnamento generalizzato (GAP): cioè si
47
attribuisce una disponibilità di merce pari a Q a K vertici, opportunamente scelti per rappresentare i K rotte; Nella seconda fase si risolve il problema di assegnare i percorsi a tutti i clienti del VRP in maniera ottima, senza violare i vincoli di capacità e che ogni vertice deve essere assegnato ad un solo percorso. Bramel e Simchi-Levi (1996) e Koskosidis et al.(1992) hanno modificato l'algoritmo FJ per gestire anche le finestre temporali.
2.4.3 Algoritmi euristici migliorativi
Le euristiche di miglioramento (o di ricerca locale) effettuano delle modifiche a una soluzione completa, esplorando quindi l'intorno di una soluzione, cercando di migliorare il valore della funzione obiettivo. L'obiettivo di questa tipologia di metodi è quello di partire da una soluzione pre-esistente di un'istanza di VRP per cercare di migliorarla. Di seguito i passi fondamentali di un algoritmo migliorativo: 1. Inizializzazione:Si sceglie una soluzione iniziale S di innesco del processo di ricerca. 2. Individuazione dell’intorno: Si definisce una “mossa” ovvero una operazione che consente di individuare un intorno N(S) della soluzione corrente. 3. Scelta di una nuova soluzione: Si individua la soluzione S‘∈N(S) migliore dell’intorno. 4. Criterio di arresto: Se S’è migliore di S si sostituisce e si pone S=S’ e si torna al passo 2; altrimenti la procedura si arresta. Questo algoritmo è rilevante perchè molto spesso le soluzioni ottenute mediante algoritmi euristici possono essere migliorate attraverso procedure di post-ottimizzazione basate su spostamenti di clienti o scambi di archi.
48
Dal punto di vista matematico il processo di ricerca analizza, ad ogni iterazione, un intorno della soluzione corrente. Per questa ragione gli algoritmi migliorativi sono detti anche algoritmi o tecniche di ricerca locale. Gli algoritmi euristici di miglioramento sono caratterizzati principalmente dal tipo di scambi considerati ad ogni iterazione. L'insieme di tutti gli scambi possibili definisce la vicinanza di una soluzione, cioè, l'insieme di soluzioni raggiungibili dalla soluzione corrente eseguendo uno scambio singolo o un trasferimento vertice. Consideriamo un problema di minimizzazione, e una sua soluzione ammissibile x, con associato il valore della funzione obiettivo f(x). La ricerca locale consiste nel definire un intorno di x, e nell'esplorarlo in cerca di soluzioni migliori, se ve ne sono. Se, in questo intorno di x, si scopre una soluzione y per cui f(y) < f(x), allora ci si sposta da x a y e si riparte da y con l'esplorazione del suo intorno. Se invece nell' intorno di x non si scopre nessuna soluzione migliore, allora vuol dire che x è un minimo locale. Nella ricerca locale classica, arrivati ad un minimo locale, l'algoritmo si ferma e restituisce questo minimo come valore di output. Ovviamente, non si ha nessuna garanzia in generale che tale valore costituisca una soluzione ottima del problema; anzi, tipicamente esso può essere anche molto distante dall'ottimo globale. Benchè ogni applicazione del concetto di ricerca locale a un problema abbia le sue peculiarità, alcuni aspetti sono abbastanza comuni a molte realizzazioni. Generalmente questi algoritmi applicati al problema di VRP sono degli “edge exchange algorithm” ovvero effettuano degli scambi di archi. Alcuni autori parlano di forza di un intorno (Stuetzle, (2003)). Un intorno definito in un certo modo è tanto più forte quanto più la qualità delle soluzioni prodotte dall'algoritmo è indipendente dalla bontà della soluzione di partenza. Ad esempio, 3-opt per il VRP è considerato un intorno forte; questo fatto implica che si può affrontare il problema senza perdere tempo a generare buone soluzioni iniziali. Anzi, conviene generare molte soluzioni iniziali casualmente, sperando così di avere un campionamento rappresentativo dell'intera regione ammissibile.
49
Le prime euristiche di miglioramento per il VRPTW, Russell (1977); sono stati infatti adattamenti del 2-opt (Croes, 1958), 3-opt (Lin, 1965) e Or-opt (Or, 1976), meccanismi originariamente introdotti per la TSP. A causa delle finestre temporali, è importante verificare se un dato scambio è fattibile anche in questo caso. A partire dal lavoro di Savelsbergh (1985), diversi tentativi sono stati fatti per sviluppare implementazioni efficienti. Un confronto è stato eseguito tra le euristiche 2-opt, 3-opt e Or-opt per il VRPTW da Potvin e Rousseau (1995) che hanno anche introdotto una nuova euristica, denominata 2-opt*, un caso speciale di 2-opt che mantiene l'orientamento delle rotte coinvolte nello scambio. Un altro meccanismo di scambio è stato descritto da Thompson e Psaraftis (1993), i quali hanno proposto il trasferimento di gruppi di clienti in maniera ciclica tra i diversi percorsi. Diversi tentativi sono stati compiuti anche per integrare le euristiche di costruzione alle euristiche di miglioramento. Russell (1995) ha sviluppato una procedura che incorpora un miglioramento del percorso all'interno del processo di costruzione della soluzione. Più precisamente, i clienti possono essere commutati tra percorsi, e i percorsi possono essere eliminati durante la costruzione della soluzione che viene eseguita con una procedura analoga a quella di Potvin e Rousseau (1993). Più recentemente, Cordone e Wolfler Calvo (2001) hanno proposto una algoritmo euristico composito in cui un insieme di soluzioni iniziali vengono costruite utilizzando l'algoritmo euristico di Solomon (1987) e viene quindi applicata una procedura di miglioramento a ciascuno di essi. Questa procedura è valida per 2-opt e 3-opt e tenta di ridurre il numero di rotte spostando i clienti. Per sfuggire agli ottimi locali, si alterna tra gli algoritmi euristici due obiettivi: quello di ridurre al minimo la distanza totale e quello di ridurre al minimo la durata complessiva di percorso; l'obiettivo primario in entrambi i casi, è quello di ridurre al minimo il numero di rotte. Diversi metodi euristici deterministici di ricerca locale sono stati inoltre proposti da Braysy (2002), basati su un nuovo approccio trifase. 50
In una prima fase, una soluzione iniziale è stata creata con una delle due euristiche proposte per la costruzione del percorso. La seconda fase tenta di ridurre il numero di percorsi applicando un operatore di ricerca locale basato sulle catene di espulsione. Infine, la terza fase si applica O-opt per ridurre la lunghezza totale delle linee. Esistono due percorsi per raggiungere l'obiettivo degli algoritmi migliorativi: 1. single-route: si focalizza l'azione al fine di migliorare il singolo route ed è definita dalle operazioni applicate ad un percorso unico; 2. multi-route: si cerca di arrivare alla soluzione ottima attraverso lo scambio di vertici e di collegamenti tra diversi route per cui è definito dalle operazioni applicate a più di una rotta. La prima single-route: Molte delle procedure classificabili in questo percorso possono essere considerate varianti del meccanismo di λ-opt proposto da Lin (1965): λ vertici sono rimossi dai percorsi e per ricomporre la rotta sono necessari λ nuovi collegamenti tra di essi. Nel generare i vari schemi di riconnessione, la procedura si arresta in presenza di un minimo locale quando nessun altro scambio utile può essere effettuato. La verifica della λ-ottimalità della soluzione può essere calcolata in tempo O(
).
Sono stati proposti numerosi schemi di scambio per ottenere i risultati migliori, alcuni prevedono, ad esempio, la variazione dinamica del parametro λ in fase di esecuzione, ma i più interessanti sono: • Or-opt, proposto da Or (1976), consiste nello spostare stringhe di 1, 2 o 3 vertici consecutivi in altre posizioni; é un metodo che richiede tempo O(
) ed assomiglia molto al 3-opt;
• 4-opt, che effettua scambi di catene di vertici di dimensione 2 con catene di dimensione massima w e ottimizza in tempo O(wn).
51
Il secondo il multi-route: I metodi migliorativi multi-route cercano di abbassare il costo di una soluzione mediante lo scambio di vertici o lati tra diversi percorsi. Gli schemi di scambio sono anche qui molto vari, ma focalizzeremo la nostra attenzione soprattutto su due versioni rilevanti: Thompson e Psaraftis (1993) descrivono uno schema di scambio b-ciclico di grado k: considerati b route se ne effettua una permutazione circolare e k vertici sono trasferiti da ogni route al successivo nella permutazione ciclica. Van Breedam (1994) classifica le operazioni di scambio in quattro categorie: string cross (SC): due stringhe, o catene, di vertici vengono scambiate tra loro incrociando due lati appartenenti a diversi percosi; string exchange (SE): due stringe di più k vertici vengono scambiate tra due diversi percosi; string relocation (SR): una stringa di più k vertici viene riassegnata ad un altro percorso;
string mix (SM): viene scelta la mossa migliore tra SR e SE.
Per valutare la bontà di una strategia rispetto ad un’altra, a seconda dei casi in esame, Van Breedam (1994) ha proposto l’utilizzo di diversi parametri. Con questi parametri si definiscono la lunghezza delle catene di vertici da scambiare (k) e la qualità della soluzione ottenuta. Un altro aspetto che caratterizza un approccio di ricerca locale è il modo in cui deve essere esplorato l'intorno di una soluzione. Ci sono due strategie: first improvement e best improvement. Nel primo caso l'esplorazione dell'intorno termina non appena si trova una soluzione migliore di quella corrente. Nel secondo, invece, lo si esplora comunque tutto cercando il massimo miglioramento che quell'intorno consente di ottenere. In genere si preferisce il primo approccio.
52
Inoltre la selezione delle mosse può essere effettuata a seconda che si segua un paradigma del tipo first improvement, nel quale la prima mossa migliorativa viene attuata, o best improvement, con il quale viene praticata la mossa che realizza il maggior miglioramento.
Per quanto riguarda il caso specifico VRPTW la ricerca si è concentrata sugli algoritmi euristici. Tuttavia, quando il problema è sufficientemente vincolato (cioè, quando le finestre temporali sono sufficientemente strette), è possibile che sia risolto in modo ottimale mediante tecniche di programmazione matematica. Il VRPTW è stato oggetto di intensi sforzi di ricerca a favore sia di approcci esatti che approcci con metodi euristici o metaeuristici. Vista la difficoltà di realizzazione di metodi esatti veramente efficienti, la maggior parte della ricerca si è focalizzata sullo sviluppo di diverse e efficienti tecniche euristiche in grado di fornire in un tempo ragionevole una buona soluzione al problema (ammissibile ma non di certo ottima).
2.5 Algoritmi metaeuristici Questo tipo di algoritmi utilizzano diversi meccanismi per migliorare le soluzioni ottenibili con un metodo migliorativo. La maggior parte delle recenti ricerche sugli algoritmi per risolvere il problema del VRPTW si sono concentrati sulle metaeuristiche. Le caratteristiche principali degli algoritmi metaeuristici sono l’esplorazione approfondita delle regioni, considerate più promettenti, nello spazio delle soluzioni e l’impiego di sofisticate regole di ricerca del neighborhood (intorni), cioè particolari strutture di dati e metodi di ricombinazione delle soluzioni. Una caratteristica che spesso distingue questi algoritmi da quelli euristici è il procedimento di ricerca, questo può passare attraverso soluzioni non ammissibili e/o fasi non migliorative.
53
Il tempo necessario a questi algoritmi per giungere ad una soluzione ottima è sensibilmente maggiore rispetto alle performance degli algoritmi euristici classici, ma i risultati ottenuti sono solitamente di qualità superiore. Inoltre, l’esecuzione di questi algoritmi è subordinata alla corretta valutazione e impostazione di un predeterminato numero di parametri, propri dell’algoritmo stesso, al fine di adattare il metodo di risoluzione al problema e ottenere la soluzione migliore possibile. Gli algoritmi metaeuristici proposti per il problema del VRP si può suddividere in sei categorie: 1. Simulated Annealing (SA); 2. Deterministic Annealing (DA); 3. Tabu Search (TS); 4. Algoritmi Genetici (GA); 5. Ant Colony System (ACS); 6. Reti Neurali (RN). Nei primi tre casi, la ricerca prende il via da una soluzione iniziale ammissibile xi, e passa, ad ogni iterazione t, dalla soluzione corrente xt alla migliore soluzione, contenuta nel neighborhood N( ),
, finchè non risulta soddisfatto un opportuno criterio di arresto.
I metodi metaeuristici possono non rispettare la clausola di diminuire ad ogni iterazione il costo della soluzione ottima, perciò, in generale, non è detto che, se f(x) denota il costo della soluzione x, f
≤ f( ).
Infatti, per favorire la diversificazione ed evitare fasi di stallo intorno a punti di minimo locale, può essere necessario attraversare sequenze di soluzioni peggiorative. Nel caso degli Algoritmi Genetici, ad ogni iterazione viene considerata una popolazione di soluzioni: ogni popolazione deriva dalla precedente attraverso la combinazione delle soluzioni migliori e l’eliminazione delle peggiori.
54
Negli Ant Colony System vengono sfruttate informazioni raccolte alle iterazioni precedenti per creare numerose nuove soluzioni. Le Reti Neurali, invece, sono meccanismi in grado di autoregolare un insieme di coefficienti interni, progredendo verso soluzioni sempre migliori.
2.5.1 Simulated Annealing (SA) L’approccio proposto con il metodo SA prevede che, ad ogni iterazione t, venga scelta casualmente una soluzione x appartenente al neighborhood (intorno) N( che f(x) ≤ f( ), allora
x xt 1 xt
; se `e verificato
è posta uguale a x, altrimenti:
con propabilit à pt con probabilit à 1 pt
dove pt `e, in genere, una funzione decrescente di t e di f(x)−f( )definita come:
in cui
`e un parametro proprio dell’algoritmo chiamato temperatura all’iterazione t. Di
solito
una funzione decrescente in t, proprio per limitare la probabilità che all’aumentare
delle iterazioni venga scelta una soluzione peggiore. I criteri d’arresto sono tre: 1. il valore f della migliore soluzione attuale non diminuisce di una percentuale prefissata negli ultimi cicli di iterazioni; 2. il numero di mosse accettate negli ultimi cicli è inferiore ad una percentuale prefissata; 3. sono stati eseguiti un numero predeterminato di cicli.
55
2.5.2 Deterministic Annealing (DA) La principale differenza che distingue la tecnica Deterministic Annealing dal precedente Simulating Annealing consiste nel fatto che le mosse che si intendono effettuare sono accettate o rigettate secondo regole deterministiche. Due implementazioni standard di questa tecnica sono: 1. threshold accepting: ad ogni iterazione t, la soluzione
viene accettata solamente se
uest’ultimo parametro è controllato dall’utente; 2. record-to-record travel: si definisce record la miglior soluzione ottenuta nella ricerca. La soluzione
`e accettata se
dove θ2 è un parametro definito
dall’utente, di solito poco superiore ad 1. In un test con istanze formate da numerosi vertici, questa implementazione ha ottenuto ottimi risultati, dal punto di vista delle soluzioni ma soprattutto per quanto riguarda i tempi di calcolo.
2.5.3 Tabu Search (TS) La tecnica Tabu Search é stata introdotta da Glover (1986). Questa tecnica esplora lo spazio delle soluzioni attraverso la determinazione, ad ogni iterazione t, della soluzione migliore contenuta in un sottoinsieme del neighborhood N(t). Al fine di evitare cicli all’interno della ricerca e lo stazionamento della stessa in un intorno di un minimo locale, le buone soluzioni recentemente visionate vengono marcate da un attributo che le rende non selezionabili nelle iterazioni successive, sono definite quindi tabu. La soluzione marcata rimane proibita per un intervallo di tempo variabile e il suo stato può cambiare a seconda che si verifichino eventi particolari, ad esempio, una soluzione tabu risulta essere la migliore delle precedenti soluzioni viste. Rendere non selezionabile un determinato gruppo di soluzioni può essere realizzato attraverso l’utilizzo di una struttura dati (una tabu list) regolata secondo una politica FIFO. In questa lista nera di soluzioni, possono essere memorizzati solamente gli attributi principali e distintivi di ogni soluzione, per rapidità di consultazione e ricostruzione delle stesse.
56
L’applicazione di questa tecnica negli ultimi anni ha portato ottimi risultati nella maggior parte delle istanze più studiate, al punto che è opinione comune che difficilmente possano essere sviluppati nuovi metodi euristici in grado di competere con la tecnica Tabu Search. Vediamo questo metodo applicato al VRPTW: La prima applicazione del meccanismo Tabu Search al VRPTW può essere attribuita a Potvin et al. (1996) che hanno utilizzato il metodi di Salomone I1 (euristica di inserimento) per creare una soluzione iniziale che è stata poi migliorata attraverso gli schemi di scambio 2-opt* e Or-opt. Questo meccanismo è stato usato anche per tentare di spostare i clienti in percorsi contenenti massimo tre clienti o addirittura meno. Un algoritmo più sofisticato è stato successivamente sviluppato da Taillard et al.(1997) per il caso VRPTSW (versione soft del problema) in cui i veicoli possono arrivare in ritardo presso i clienti, ma tutte le violazioni di tempo sono penalizzanti all’interno funzione obiettivo. Questa euristica si basa sul concetto di memoria adattativa introdotta da Rochat e Taillard (1995) e sulla decomposizione e sulla procedura di ricostruzione sviluppata da Taillard (1993) per il VRP classico. La memoria adattiva è un insieme di percorsi estratti dalle migliori soluzioni trovate durante la ricerca. Questa memoria viene inizializzata con percorsi prodotti da uno studio euristico randomizzato. Ad ogni iterazione del metodo metaeuristico, una soluzione è costruita con i percorsi nella memoria adattiva e viene migliorata attraverso la Tabu Search. I percorsi della soluzione risultante vengono quindi registrati nella memoria adattiva se questa soluzione migliora la peggior soluzione già memorizzata. Un'implementazione parallela di questo approccio è descritta in Badeau et al. (1997). Più recentemente, è stato sviluppato da Cordeau, Laporte e Mercier (2001) per il VRPTW un metodo Tabu Search. In questo caso, una prima soluzione viene ottenuta mediante una scansione euristica modificata. Le soluzioni irrealizzabili sono consentite durante la ricerca, le violazioni del vincolo di capacità e di tempo sono penalizzate nella funzione obiettivo attraverso un aggiornamento dinamico dei fattori di penalità. Ad ogni iterazione della Tabu Search un cliente viene rimosso dal suo percorso attuale e inserito in un percorso diverso utilizzando almeno un criterio di costo per l' inserimento. Un meccanismo di continua diversificazione che penalizza gli scambi frequentemente commessi è usato per guidare il processo di ricerca lontano da ottimi locali.
57
2.5.4 Algoritmi Genetici (AG)
Holland (1975) ha proposto il paradigma alla base degli algoritmi genetici; si tratta di una tecnica che cerca di risolvere problemi imitando i processi tipici dell’evoluzione naturale. L’idea di fondo consiste nel mantenere memoria di stringhe di bit, chiamate cromosomi, rappresentanti la codifica binaria di una soluzione al problema. L’evoluzione della popolazione è ottenuta applicando degli operatori che simulino i più importanti fenomeni naturali: riproduzione e mutazione. Una descrizione generica del paradigma può essere data nelle seguenti modalità: innanzitutto sia definita una popolazione iniziale di cromosomi: X1 =
, alla quale, in ogni iterazione t = 1, . . . , T, sono applicate k volte (con
k N/2) le operazioni descritte dai passi 1 - 3, seguite dal passo 4: 1. Riproduzione: si selezionano, dalla popolazione Xt, due cromosomi generatori, privilegiando statisticamente la scelta dei cromosomi migliori; 2. Ricombinazione: si applica un operatore di crossover ai due generatori in modo da ottenere una nuova coppia di cromosomi discendenti; 3. Mutazione: con piccola probabilità, si applica l’operatore di mutazione ai cromosomi discendenti; 4. Rinnovo generazionale: a partire da
, si crea la popolazione
rimuovendo le 2k
peggiori soluzioni e sostituendole con le 2k generate nelle k precedenti applicazioni dei passi 1-3.
Al termine delle T iterazioni, si prende come soluzione finale cioè la migliore dell’ultima generazione. Ciò che contraddistingue questo paradigma è l’assoluta generalità della sua specifica. Così come è stato descritto, infatti, esso può essere applicato a diverse tipologie di problemi. Il punto chiave riguarda, in realtà, la definizione degli operatori di crossover e mutazione, che necessariamente si differenzieranno a seconda del problema affrontato. Inoltre, bisogna definire come una soluzione ad un determinato problema deve essere codificata in una stringa di bit, imponendo quindi una serie di regole per l’ammissibilità delle soluzioni. 58
Nel caso specifico, per i problemi di VRP, la codifica in stringhe di bit dei percorsi che compongono una soluzione non è la traduzione più adatta. Si preferisce codificare le rotte con delle sequenze di interi, dove la posizione dell’intero nella stringa indica l’ordine di visita, nel percorso, del vertice corrispondente. L’intero 0, rappresentante il deposito, può comparire più volte nella stringa ed é spesso utilizzato come carattere separatore tra i percorsi. Così definita la struttura dei dati, gli operatori devono essere costruiti in maniera specifica. Un operatore di crossover per il TSP, ma facilmente adattabile al VRP, è stato definito da Oliver, Smith e Holland (1987) e prende il nome di order crossover. Per quanto riguarda gli operatori di mutazione, sono stati studiati degli schemi di scambio o di rimozione e reinserimento (schemi RAR - Remove-and-Reinsert ). Come applicazioni pratiche, gli algoritmi genetici hanno dato i maggiori contributi sulla risoluzione di istanze più vincolate rispetto al semplice CVRP. Ottimi risultati sono stati ottenuti su benchmark di VRPTW. Per cui analizziamo questa variante all'interno del caso specifico di VRPTW: Homberger e Gehring (1999) hanno descritto due strategie evolutive per il VRPTW. Entrambe sono basate sulla strategia (μ, λ): a partire da una popolazione con individui divisi in sottoinsiemi, selezionati in modo casuale e ricombinati per ottenere λ>μ . Ogni progenie viene quindi sottoposta ad un operatore di mutazione, e i più idonei μ sono selezionati per formare la nuova popolazione. Nel primo metodo, nuovi individui vengono generati direttamente attraverso le mutazioni e non attraverso la ricombinazione. Le mutazioni sono ottenuti eseguendo una o diverse mosse dal 2-opt, Or-opt e 1-interscambio di famiglie. Nel secondo metodo, i figli vengono generati tramite una procedura in due fasi di ricombinazione in cui sono coinvolte tre persone. In entrambi i metodi, l'idoneità di un individuo dipende dal numero di veicoli utilizzati e dalla distanza totale percorsa. In seguito, Gehring e Homberger (2002) hanno proposto un metodo metaeuristico che si compone di due fasi: nella prima fase si riduce al minimo il numero di veicoli attraverso una strategia di evoluzione, mentre nella seconda si minimizza la distanza totale attraverso la Tabu Search.
59
Berger, Barkaoui e Braysy (2003) inoltre hanno sviluppato un algoritmo genetico che si evolve contemporaneamente in due popolazioni distinte, le quali perseguono obiettivi diversi in relazione al vincolo parziale. La prima popolazione ha lo scopo di minimizzare la distanza totale percorsa, mentre la seconda si concentra nel ridurre al minimo le violazioni del vincolo di tempo. Il numero massimo di veicoli definiti nella prima popolazione è uguale a popolazione è consentito solo
veicoli, dove
mentre la seconda
si riferisce al numero di vie trovate
all'interno della migliore soluzione fattibile fino a quel momento. Ogni volta che una nuova soluzione fattibile emerge dalla seconda popolazione, la prima popolazione è sostituita con la seconda e il valore di
viene aggiornato di conseguenza.
Due operatori di ricombinazione e cinque operatori di mutazione sono utilizzati per evolvere le popolazioni. Questo approccio si è rivelata piuttosto efficace nel ridurre il numero di veicoli utilizzati. Più di recente, Mester e Braysy (2004) hanno sviluppato un metodo chiamato metaeuristica iterativa che unisce il metodo di ricerca locale e le strategie di evoluzione. Una prima soluzione viene creata da un inserimento euristico. Questa soluzione viene quindi migliorata mediante l'applicazione di una procedura in due fasi. La prima fase consiste in una procedura guidata di ricerca locale in cui vengono eseguiti metodi 2-opt* e Or-opt con 1-scambi. La seconda fase rimuove iterativamente un insieme selezionato di clienti dalla soluzione corrente e reinserisce i clienti rimossi con un costo minimo. Queste due fasi sono ripetute iterativamente fino a quando non si può ottenere un miglioramento. Secondo Braysy e Gendreau (2003b), i tre approcci appena descritti sembrano produrre i migliori risultati tra gli algoritmi genetici.
60
2.5.5 Ant Colony System (ACS) L’Ant Colony System (ACS) studia sistemi artificiali per risolvere problemi di ottimizzazione, prendendo ispirazione dal comportamento delle colonie di formiche ed è stato introdotto per la prima volta da Dorigo (1992). Questa strategia di risoluzione sfrutta la tecnica usata dalle formiche durante la ricerca del cibo. Questi insetti, infatti, marcano il cammino tramite la secrezione di una sostanza, il feromone, che è riconoscibile da tutti i suoi simili. La quantità di feromone presente su un percorso non è casuale, ma dipende direttamente dalla qualità di cibo raccolto e dalla lunghezza del percorso. Le formiche sono insetti sociali, in grado di produrre risultati complessi a partire da individui molto semplici che cooperano tra di loro. Un formicaio mostra comportamenti molto interessanti: difende il nidi dagli attacchi, custodisce le uova, alleva le larve e si procura il cibo. Questi risultati si ottengono sfruttando due caratteristiche particolari delle colonie: da una parte esiste una organizzazione flessibile del lavoro dove il ruolo delle formiche cambia a seconda della circostanza: in caso di attacco la maggior parte delle formiche diventa soldato. Dall’altra le formiche sono in grado di comunicare tra di loro tramite una forma indiretta di comunicazione detta “stigmergia”. Le formiche, infatti, non sono in grado di “parlare” tra di loro ma sfruttano e manipolano l’ambiente per scambiarsi informazioni. Quando cercano il cibo, le formiche inizialmente escono dal nido esplorando le zone circostanti in maniera casuale. Una volta trovato del cibo tornano verso il nido lasciando sul terreno una traccia di una sostanza chimica detta “feromone”. Il feromone ha la funzione di segnalare alle altre formiche la direzione nella quale si trova il cibo. Infatti, questi insetti, sono dotati di capacità sensitive per percepire il feromone e per seguirne la traccia. È interessante notare che maggiore è la quantità di feromone maggiore è la probabilità che la formica ne segua la traccia. Inoltre il feromone evapora e, quando il cibo è finito, la traccia sul terreno diventa gradualmente meno intensa fino a sparire, consentendo nuovamente esplorazioni casuali. Questi processi sono stati studiati dai biologi (Goss, 1989) che si sono accorti che le formiche, grazie al rilascio di questa sostanza chimica, sono in grado ci calcolare il percorso più corto tra due punti: sui percorsi più lunghi il feromone si concentra più lentamente e le formiche tendono a preferire quelli più corti dove il feromone è più intenso.
61
Questa osservazione è alla base di un filone di ricerca molto attivo nel campo dell’informatica avanzata approfondite a partire dal 1994 da Gambardella e il suo gruppo ha reso efficienti e competitive queste tecniche ottenendo i migliori algoritmi a livello mondiale nel campo dei trasporti per flotte di veicoli con finestre temporali (Gambardella, 1999) e nel campo della schedulazione di processi industriali (Gambardella, 2000). In questo caso le formiche diventano camion, il cibo raccolto dagli insetti diventa la merce da trasportare, il nido è il deposito dei mezzi e il feromone delle formiche viene trasformato in “feromone artificiale” utilizzato dal sistema per imparare quali sono le strade da utilizzare per ottimizzare la soluzione. Il programma è in grado di produrre soluzioni sempre più ottimizzate imparando dall’esperienza e dagli esperimenti precedenti. Questa osservazione ha fornito l’ispirazione di una nuova classe di algoritmi che sfruttano i medesimi principi per ottimizzare la distribuzione merci e la produzione industriale. Questi nuovi algoritmi sono capaci di adattarsi rapidamente a situazioni diverse, imparano dall’esperienza e calcolano in pochi minuti soluzioni per migliaia di automezzi. Il primo problema di logistica distributiva cui è stato applicato questo metodo è quello del commesso viaggiatore (TSP). In tale ambito, una formica artificiale è un agente che si muove da una città all’altra fino a toccarle tutte, per poi tornare al punto di partenza. La traccia di feromone, quindi, rappresenta una sorta di distribuzione di informazioni numeriche da parte delle formiche per registrare l’esperienza comune nella risoluzione di un particolare problema. L’ACS termina quando diventa vera almeno una delle seguenti condizioni: è stato generato un numero fissato di soluzioni; è stato raggiunto un prefissato tempo computazionale; non vengono notati miglioramenti nel costo dei giri per un dato numero di iterazioni. La metaeuristica studiata per risolvere il VRP con finestre temporali è detta MACS-VRPTW (Multiple Ant Colony System for Vehicle Routing Problem with Time Windows) e la sua peculiarità consiste nell’utilizzo di due distinte colonie di formiche che, lavorando simultaneamente, tentano di raggiungere due obiettivi: la minimizzazione del numero dei veicoli; la minimizzazione del tempo totale di viaggio.
62
Nel MACS-VRPTW ci si trova di fronte a due colonie di formiche, ACS-VEI e ACS-TIME, il cui operato ha scopi diversi. la prima colonia ha il compito di scoprire se esistono soluzioni ammissibili con un dato numero di veicoli; la seconda quello di trovare la soluzione migliore (che richieda il minor tempo) tra quelle che usano tale quantità di mezzi. Il primo passo della procedura consiste nel trovare una soluzione ammissibile sfruttando un algoritmo tratto dall’euristica del nearest neighbor. Il risultato sarà la miglior soluzione trovata fino a quel momento, ψgb (globally best). Questa richiederà l’utilizzo di un certo numero di mezzi, identificato con s. Volendo applicare una procedura simile a quella usata per risolvere un TSP, è necessario ricondurre il problema ad una situazione in cui l’obiettivo sia trovare un unico circuito hamiltoniano sul grafo. Si devono quindi innanzitutto creare tanti nodi deposito quanti sono i veicoli da utilizzare nella prima iterazione dell’attività della colonia ACS-VEI, e quindi s-1, uno in meno rispetto al numero di veicoli utilizzati nella soluzione trovata al passo precedente: questi saranno indicati come 01, 02, …, 0s-1. Il secondo passo richiede l’attivazione di una colonia di formiche del tipo ACS-VEI. Se esiste una soluzione ammissibile con s-1 automezzi si dovrà ripetere la ricerca utilizzandone uno in meno. Una volta stabilito il numero minimo di depositi (e quindi di veicoli) che consente la costruzione di un circuito hamiltoniano sul grafo, è necessario attivare la colonia ACS-TIME per individuare il percorso più breve con quel numero di veicoli in altre parole, se viene trovata una soluzione che utilizza un minore numero di veicoli, questo viene passata ad un’altra colonia, che cerca nuovamente di minimizzare la distanza. Il processo viene ripetuto iterativamente finché non oltre miglioramenti possono essere ottenuti. Il MACS-VRPTW è competitivo con i migliori metodi noti esistenti sia in termini di qualità della soluzione e tempo di calcolo. Inoltre, MACS-VRPTW migliora alcune delle migliori soluzioni con il vantaggio di ottenere una buona soluzione non ottimale ma modo molto rapido.
63
2.5.6 Reti Neutrali (RN) Le reti neurali artificiali, o semplicemente reti neurali, sono modelli computazionali la cui struttura prevede l’interconnessione di diversi elementi di elaborazione elementari. Queste celle di elaborazione si ispirano ai neuroni del sistema nervoso umano, mentre i loro collegamenti vorrebbero rappresentare le sinapsi. Nelle reti artificiali, ogni collegamento è associato ad un proprio peso numerico, il cui valore varia dinamicamente nel tempo in funzione dell’esperienza acquisita nella computazione: grazie ai pesi associati alle connessioni, le reti neurali godono dell’importante caratteristica che è la capacità di induzione. I primi tentativi di risolvere problemi di ottimizzazione combinatoria con delle reti neurali sono riconducibili all’opera di Hopfield e Tank (1985). I loro modelli, assieme alle reti elastiche (EN) di Durbin e Willshaw (1987) e alle mappe auto-regolanti (SOM, SelfOrganizing Map) di Kohonen (1988), sono stati applicati con successo al TSP. I modelli EN e SOM, solo ispirati alla definizione di reti neurali, prevedono sorte di tour deformabili, che si adattano gradualmente alla disposizione effettiva dei vertici dell’istanza. Modelli come questi possono facilmente essere applicati a istanze geometriche, ma difficilmente riescono ad integrare al loro interno vincoli più stretti, ad esempio quelli del CVRP o di altre varianti del VRP. A questo proposito molte sono le soluzioni proposte, ma particolarmente interessante è quella sviluppata da Ghaziri (1991), descritta brevemente come segue: 1. Si considera, ciclicamente, il vertice successivo dell’istanza e lo si indica come vertice corrente. 2. Si associa una probabilità di selezione ad ogni anello: tale probabilità dipende sia dalla distanza dell’anello dal vertice corrente, sia dal carico dell’anello stesso in termini di vertici temporaneamente assegnati (vedi punto 4). 3. Secondo la probabilità definita al punto 2, si seleziona un anello. 4.
Si assegna il vertice corrente in maniera temporanea all’unità più vicina dell’anello selezionato, e si deforma quest’ultimo in modo da avvicinare l’unità, e alcune tra le sue unità vicine, al vertice.
64
5. Si ripetono i precedenti passi sino a quando ogni vertice ha un’unità del modello sufficientemente vicina. 6. Infine, si assegna permanentemente ogni vertice alla sua unità più vicina, ottenendo così la soluzione finale.
L’aspetto interessante di questa procedura è proprio la definizione probabilistica dell’assegnamento dei vertici agli anelli. Questo metodo fa sì che gli anelli non si avvicinino troppo simultaneamente ai vertici le cui richieste superano le capacità dei veicoli, inoltre fissando alcune probabilità a zero, è possibile adattare il metodo a problemi ancor più vincolati, come ad esempio varianti del VRP con vincoli di tempo. I risultati ottenuti mostrano come questo metodo produca discreti risultati, anche se non è pensabile un confronto alla pari con altri tipi di algoritmi metaeuristici.
2.6 VRPTW: diverse definizioni di finestre temporali In questo paragrafo vedremo alcune generalizzazioni del VRPTW, infatti troviamo in letteratura diverse definizioni di finestre temporali.
2.6.1 Tempo di Viaggio Flessibile Hashimoto et al. (2006) ha trattato i tempi di percorrenza tra i clienti come variabili e ha introdotto le funzioni di costo corrispondenti. Questa è una generalizzazione del problema della pena sui tempi di percorrenza. Sia
il costo del viaggio quando il veicolo viaggia dal cliente da i a j e sia t la differenza
dei tempi di inizio dei servizi tra i e j. Come nel caso della funzione di costo della finestra temporale
, ogni
viene
considerato negativo, a tratti lineare e semi continuo inferiormente.
65
Quindi, il OTSP definito per la rotta nk 1
nk 1
h 1
h 1
=(1, 2, ...,
) del veicolo k è formulato come segue:
min p h ( s h ) min q h 1,h ( s h s h 1 )
(2.19)
soggetto al vincolo: (2.20) che possono essere risolti mediante la programmazione dinamica. la somma minima dei costi per i clienti 0, 1, 2, ….., h serviti dal veicolo k in questo
Sia
ordine, a condizione che i clienti 0, 1,. . . , h-1 siano serviti prima del tempo t e che il cliente h sia servito esattamente al tempo t. Inoltre
può essere calcolato come segue:
=
)+
,l
Il costo ottimale per rotta
è dato da
(2.21) .
Hashimoto et al.(2006) hanno dimostrato che il OTSP diventa NP-hard quando le funzioni dei costi di viaggio sono generali, e ha proposto un algoritmo di tempo pseudo-polinomiale per la programmazione dinamica. L'algoritmo viene eseguito in un tempo polinomiale, se ogni funzione di costo del viaggio è convessa. Per una funzione lineare a tratti g, si definisce un intervallo convesso, un intervallo massimo in cui il dominio è funzione convessa, e si definisce δ^(g) (≤ δ (g)) è il numero di intervalli convessi di g. Gli studiosi hanno dimostrato che se ogni funzione di costo del viaggio è convessa, la complessità temporale del loro algoritmo è O(nk Δ (σk)) quando il problema viene risolto da zero, dove:
( k )
nk 1
nk 1
nk 1
h 1
h1
h1
( ph ) ˆ( ph ) (qh1,h )
(2.22)
66
Questa funzione è polinomiale in base alla lunghezza del problema in ingresso, che è: nk 1
( p h 1
h
) (q h 1,h )
(2.23)
2.6.2 Tempo dipendente dal tempo di viaggio
Nella realtà, i tempi di percorrenza dipendono spesso dagli orari di partenza e variano nel tempo , ad esempio, durante le ore di punta, o dalla quantità di traffico. Ichoua et al. (2003) hanno proposto una variante del VRPTW con tempo-dipendente, all'interno del quale ogni cliente ha una sola finestra temporale di servizio non violabile (hard). Essi prima di tutto risolvono in modo approssimato il OTSP, per cui trovano una soluzione solo per le migliori soluzioni approssimative dell'intorno ν (ν è un parametro). Hashimoto et al.(2008) hanno considerato un problema tempo-dipendente ed hanno fornito una estensione degli studi di Ibaraki et al. (2005) e di Ichoua et al. (2003). Essi hanno introdotto una funzione di tempo dipendente dal tempo di viaggio λij(t) e una funzione di costo dipendente dal tempo di viaggio ηij(t), dove t è l'istante di tempo di inizio del viaggio dal cliente i a j. Quindi, il OTSP è descritto come segue per σk = (1, 2, ..., nk). nk 1
nk
h 1
h 0
min p h ( s h ) h,h1 (t h )
(2.24)
soggetto ai vincoli di:
s0 0
(2.25)
sh t h
1 h nk
(2.26)
t h h,h1 (t h ) sh1
0 h nk
(2.27)
67
Questo OTSP è risolvibile mediante la programmazione dinamica. Sia fh(t) la somma minima dei costi della finestra temporale per i clienti 0, 1, ..., h e delle spese di viaggio a condizione che siano tutti serviti prima di tempo t. Quindi può essere calcolato dalla seguente formula di programmazione dinamica:
t 0 f 0 (t ) t0 0 f h (t ) min ph (s h ) s h t
(2.28)
min
t h 1:t h 1 h 1, h ( t h 1 ) sh
f
h 1
(t h1 ) h1,h (t h1 ) ;
1 h nk 1, t
(2.29)
La funzione del tempo di percorrenza λij(t) viene assunta per soddisfare: t ij (t ) t ij (t ) t ij (t ) t (1 )t ij (t (1 )t ) , 0 1
(2.30)
Questa condizione è più generale rispetto alla condizione di FIFO (first-in first-out) Ichoua et al. (2003) (cioè, t ≤ t' ⇒ t + λij(t) ≤ t'+λij(t')), poiché il sorpasso dei veicoli è possibile anche se la condizione esposta in precedenza 2.30 viene imposta. Essi hanno dimostrato che, in condizioni (2.30) e con alcune assunzioni ragionevoli, fh può essere calcolato dal fh-1 nel tempo O(Δ (σk)), dove:
( k )
nk 1
( p h 1
h
) ( h 1,h ) (h 1,h )
(2.31)
Quindi il costo ottimale di σk può essere ottenuto nel tempo O (nkΔ (σk)), che è polinomiale nella dimensione di ingresso del Δ OTSP (σk). Se le funzioni di costo e di tempo del viaggio sono funzioni costanti (cioè, se non dipendono dal tempo), la complessità di questo algoritmo di programmazione dinamica diventa uguale a quella esposta da Ibaraki et al. (2005).
68
Capitolo 3 - Tecniche per gestire le finestre temporali attraverso le funzioni In questo capitolo vengono presentate alcune tecniche per gestire i vincoli di tempo in cui le sanzioni sono definite da più funzioni.
3.1 Funzioni di costo lineari a tratti Ibaraki et al. (2005) hanno introdotto una funzione di costo lineare a tratti pi(t) per ogni cliente i per rappresentare il vincolo di tempo. Questo approccio è molto generale, nel senso che uno o più intervalli di tempo possono essere assegnati a ciascun cliente. Cioè, la corrispondente funzione che rappresenta la sanzione può essere non convessa e discontinua finché è lineare a tratti. Definiamo il problema come il problema di vehicle routing con il tempo le finestre generale (VRPGTW). In questo caso, dopo aver fissato l'ordine dei clienti da servire per un veicolo, si deve determinare l’orario di inizio del servizio per tutti i clienti in modo che la penalità in termini di tempo sia minimizzata. Ogni funzione pi(t) viene considerata negativa, lineare a tratti e semicontinua inferiormente (vale a dire, pi(t) ≤ limε → 0 min {pi (t + ε), pi (t-ε)} discontinua in ogni punto t). Si noti che pi(t) può essere non-convessa e discontinua purché soddisfi le condizioni di cui sopra. Si presume inoltre pi(t) = +∞ per t<0 in modo che il tempo t di inizio del servizio sia negativo. Queste assunzioni garantiscono l'esistenza di una soluzione ottima. Con questa impostazione, la OTSP è risolvibile in tempo polinomiale, utilizzando l'algoritmo di programmazione dinamica proposto da Ibaraki et al.(2005), dove ancora una volta si suppone che k veicolo visitino i clienti 1, 2,. . . , nk in questo ordine. fh(t) rappresenta le sanzioni minime per la violazione delle finestre temporali per i clienti 0, 1, ..., h sotto la condizione che siano serviti prima di tutti nel tempo t. 69
fh(t) può essere calcolato dalla seguente formula di programmazione dinamica:
t 0 f 0 (t ) 0 t 0
(3.1)
f h (t ) min ph (t ) f h1 (t t h1,h ), 1 h nk 1, t
(3.2)
t t
Il costo ottimale del OTSP per li percorso σk è dato da min fn(k+1) (t). Poiché tutte le funzioni pi(t) sono lineari a tratti, ogni fh è anche lineare a tratti. In questo caso le funzioni lineari a tratti sono memorizzate in liste concatenate, ciascuna cella memorizza l'intervallo e la funzione lineare del pezzo corrispondente, e le cellule sono collegate secondo l'ordine degli intervalli. Se abbiamo algoritmi efficienti per due operazioni, g(t)+g'(t) e Φ(t) = minx≤ tg(x) lineare a tratti e le funzioni g e g', il calcolo di fh(t) come descritto nella da funzione (3.1) può essere eseguito in modo efficiente. Sia δ(g) la somma del numero di pezzi lineari e il numero di punti discontinui di una funzione lineare a tratti g (cioè, il numero dei pezzi della linea poligonale di g). Poi è semplice vedere che l'aggiunta g+g' di due funzioni lineari a tratti e g e g' può essere calcolata nel tempo O (δ(g)+δ(g')) e soddisfa le risultante funzione δ (g+g') ≤ δ(g)+δ(g'). E’ anche facile vedere che la funzione Φ(t) = minx ≤ tg (x) può essere calcolata nel tempo O (δ(g))e la conseguente Φ funzione soddisfa δ(Φ)≤ δ(g). Sia Δ(σk) il numero totale di pezzi lineari per tutte le funzioni pi(t) nel percorso σk, cioè:
( k )
nk 1
( p h 1
k
(h)
)
(3.3)
Da quanto esposto, possiamo notare che δ(fh)≤Δ(σk) ed fh può essere calcolato da fh-1 nel tempo O(Δ(σk)). Quindi, l'algoritmo risolve il OTSP in O(nkΔ(σk)) momento in cui il problema è risolto da zero.
70
Si noti che, nel caso di arrivo in anticipo o in ritardo per cui nel caso di penalità sull'orario di inizio del servizio, si ha Δ (σk) = O (nk) e la OTSP corrispondente è risolvibile in O (n2K) tempo. Inoltre, si può calcolare il valore ottimo di OTSP in O(Δ (σk)) nel momento in cui viene valutata una soluzione in un quartiere standard, mentre si ottiene O(nkΔ (σk)) quando è il momento di aggiornare la struttura dei dati quando un movimento viene accettato.
3.2 Funzione di costo convessa Il OTSP generale per le funzioni di pi(t) può essere risolto in modo più efficiente se la funzioni di costo sono convesse.
3.2.1 Funzione di costo lineare a tratti convessa della finestra temporale Ibaraki et al. (2008) hanno considerato il OTSP in cui la funzione di costo della finestra temporale pi per ogni cliente i è una funzione lineare a tratti convessa. Mentre il loro algoritmo è basato sulla stessa ricorrenza di programmazione dinamica (3.1), memorizza convesse funzioni lineari a tratti in bilanciati alberi binari di ricerca. La complessità di tempo per risolvere il OTSP da zero è O(Δ (σk) log Δ (σk)), e il tempo di valutare una soluzione ottenuta per ricollegare un numero costante di percorsi nella soluzione corrente è O (log Δ (σk) ) (che è il caso di una soluzione in una zona standard), mentre troviamo O (Δ (σk) log Δ (σk)) per aggiornare la struttura di dati quando un movimento viene accettato.
71
3.2.2 Problemi di regressione isotonica
Prendiamo anche in esame il just-in-time scheduling, dove ogni cliente i ha un tempo desiderabile ei e la differenza tra l'ora di inizio si del servizio e ei è la penalizzazione. Il OTSP per questo caso è descritto come segue: nk 1
min wh eh s h
(3.4)
h 1
soggetto a:
s0 0
(3.5)
h 1,......, nk 1
s h1 t h1,h s h
(3.6)
dove wh e μ indicano numeri positivi. Questo problema è strettamente legato ai problemi di regressione isotonica e sono stati ampiamente studiati. Il problema di regressione isotonica Lμ è formulato come: nk
min wh eh s h
(3.7)
h 1
soggetto a: s1 s2 ....... s nk
(3.8)
dove wh sono numeri strettamente positivi e eh sono arbitrari numeri reali. Per il problema di regressione isotonica L2, Best e Chakravarti (1990) hanno proposto un algoritmo O(nk). Se la funzione di costo è la deviazione assoluta da eh, questo problema viene chiamato problema di regressione mediana isotonica: nk
min wh eh s h
(3.9)
h 1
soggetto a: s1 s2 ....... s nk
(3.10) 72
3.2.3 Funzione di costo generale convessa della finestra temporale Dumas et al. (1990) hanno considerato un funzione di costo generale convessa della finestra temporale ph e proposto un algoritmo per il OTSP la cui complessità è la stessa di quella di minimizzare le funzioni O(nk), dove ogni funzione può essere rappresentata come: j
p h 1
h
(s j u h )
(3.11)
di una singola variabile sj e uh = th, h+1 +th+1, h +2 + · · · + tj-1, j. Quindi se:
ph ( sh ) hsh h
s h eh eh s h l h
(3.12)
sh lh
quindi: j
p h 1
h
(s j u h )
(3.13)
è una funzione lineare con un dominio limitato. In questo caso, ogni minimizzazione può essere fatta in O (1) e il OTSP può essere risolto in O(nk). Ahuja e Orlin (2001) hanno considerato un problema generalizzato di regressione isotonica: nk
min p h ( s h )
(3.14)
h 1
soggetto ai vincoli: s1 s 2 ......... s nk
(3.15)
dove ogni ph è una funzione generale convessa. Partendo dal presupposto che la valutazione del ph(sh) per un dato punto sh richiede il tempo O(1), gli studiosi hanno proposto un algoritmo per ottenere una soluzione intera in O (nk log U), dove U indica la differenza tra il limite superiore del valore ottimale di snk e il limite inferiore per il valore ottimale di s1.
73
Hochbaum e Queyranne (2003) hanno considerato il problema di chiusura convessa dei costi, la quale è una generalizzazione del problema di regressione isotonica. Sia G' = (V', E') un grafo diretto e pi una funzione convessa per ogni i∈ V'. Allora, il problema di costo di chiusura convessa è formulato come segue:
min pi ( si )
(3.16)
iV
soggetto ai vincoli: si s j
(i; j ) E
(3.17)
ei si li
i V
(3.18)
si
i V
(3.19)
La complessità dell' algoritmo è la complessità del problema di taglio minimo di un grafo pesato con l'aggiunta della complessità di trovare i minimi nelle funzioni convesse fino a nk .
74
CONCLUSIONI In questa tesi si è studiato il problema del Vehicle Routing Problem with Time Windows (VRPTW), analizzando gli algoritmi euristici e metaeuristici fino ad oggi studiati per la risoluzione di tale problema. Ed inoltre abbiamo esaminato i recenti risultati sul modo di gestire i vincoli temporali hard e soft, ponendo l'accento su diverse definizioni di finestre temporali e algoritmi. Nello specifico, nel capitolo 1 si è analizzato il problema di base, il VRP, che ha una vasta gamma di applicazioni del mondo reale ed è stato intensamente studiato per oltre mezzo secolo. L'obiettivo base del problema è quello di minimizzare i costi di routing e di assegnamento dei veicoli ai relativi percorsi, rispettando vari vincoli, dove ogni cliente deve essere visitato esattamente una volta da un veicolo. Nel capitolo 2 si è passati alla trattazione del VRP con il vincolo temporale tale vincolo rende il problema più utile, ma al tempo stesso più difficile perché richiede la pianificazione temporale dei servizi, oltre a determinare i percorsi dei veicoli. L’analisi dei modelli matematici e degli algoritmi euristici e metaeuristici applicati al VRPTW mostra che si dispone ormai di mezzi adeguati per affrontare con successo istanze con centinaia di vertici. I risultati migliori si ottengono con gli approcci metaeuristici, ed in particolare con gli algoritmi basati sulla tecnica usata negli studi delle colonie di formiche (Ant Colony Optimization) noto come l’algoritmo MACS-VRPTW, in generale, il più performante. Infatti, ad eccezione di alcuni casi, seppure impieghi qualche secondo in più di elaborazione, l’algoritmo consente di trovare una soluzione ottima nettamente superiore (in alcuni casi) rispetto alla altre tecniche La ricerca nel campo del problema VRPTW, è uno dei problemi più complessi ma anche più utilizzati nella pratica, ed è in continua evoluzione; i processi logistici richiedono l’utilizzo di procedure di ottimizzazione a rendimento elevato. Nel caso dell’ottimizzazione di percorsi sono necessari algoritmi veloci, performanti e flessibili. Pensiamo, ad esempio, ai navigatori satellitari di ultima generazione o ai software di gestione dei corrieri espressi. La ricerca sta lavorando al fine di trovare algoritmi sempre più
75
performanti, sia dal punto di vista della soluzione ottima trovata, sia dal punto di vista del tempo impiegato per trovarla. Si è chiusa la trattazione con l’analisi dei recenti sviluppi in relazione alle tecniche di gestione delle finestre temporali attraverso le funzioni lineare di costo a tratti e la funzione di costo convessa.
76
BIBLIOGRAFIA [1] AHUJA R.K, ORLIN J.B., 2001. A fast scaling algorithm for minimizing separable convex functions subject to chain constraints. Operations Research 49(5):784–789. [2] BADEAU, P., GUERTIN, F., GENDREAU, M., POTVIN, J.-Y., TAILLARD, E., 1997. A parallel tabu search for the vehicle routing problem with time windows. Transportation Research 5C, 109–122. [3] BALAKRISHNAN, N., 1993. Simple heuristics for vehicle routering problem with soft time windows, J Oper Res.Soc., 44:279-287. [4] BERGER, J., BARKAOUI, M., BRÄYSY, O., 2003. A Route-directed Hybrid Genetic Approach for the Vehicle Routing Problem with Time Windows. Information Systems and Operations Research 41, 179-194 [5] BEST M J, CHAKRAVARTI N 1990. Active set algorithms for isotonic regression; a unifying framework. Math Program 47(1):425–439 [6] BRACA, J., BRAMEL, J, and SIMCHI-LEVI, D., 1994. A Computerized Approach to the New York City School Bus Routing Problem. IEE Transactions, 29(8), 693-702. [7] BRAMEL, J.,SIMCHI-LEVID. 1997. On the effectiveness of set covering formulations for the vehicle routing problem with time windows. Operations Research. 45:295-301. [8] BRAYSY, O., 2001. Genetic Algorithms for the Vehicle Routing problem with Time Windows, Dept.of matematics and Statistics, University of Vaasa. [9] BRAYSY, O., GENDREAU, M., (2005a). Vehicle routing problem with time windows, part I: route construction and local search algorithms. Transportation Science, 39(1):104– 118. [10]
BRAYSY, O.,GENDREAU, M., 2002, Tabu search heuristics for the Vehicle Routing
problem with Time Windows, Sociedad de Estadistica e investigacion Operativa Top, vol 10, No.2, pp.211-237. [11]
CALVETE, H.I., GALE’, C., OLIVEROS, M. J. and SANCHEZ- VALVERDE, B.,
2004. Vehicle Routing Problems with soft time windows: an optimization based approach, Monografias del Seminario Matematico Garcìa de Galdeano 31, 295-304. [12]
CAMPBELL,
A.M.,
SAVELSBERGH,
M.W.P.,
2004.
Delivery
Volume
Optimization. Transportation Science, 38, 210-223.
77
[13]
CHIANG, W.C.,
RUSSEL, R.A., 2004.
Metaheuristic for the vehicle-routering
problem with soft time windows. Journal of the Operational Research Society, 55, 1298– 1310. [14]
CLARKE, G., WRIGHT, J.V., 1964. Scheduling of vehicle from a central depot to a
number of delivery points. Operations Research, 12:568-581. [15]
CORDEAU, J.-F., LAPORTE, G., & MERCIER, A. 2001. A unified tabu search
heuristic for vehicle routing problems with time windows. Journal of the Operational Research Society, 52, 928-936. [16]
CORDEAU, J-F., LAPORTE, G., 2003. A tabu search heuristic for the static multi-
vehicle dial-a-ride problem, Transportation Research Part B, 37, 579–594 [17]
CORDONE, R.,WOLFLER CALVO, 2001. A heuristic for the Vehicle Routing
Problem with Time Windows, Journal of Heuristics, vol. 7, pp 107-129. [18]
CROES, A., 1958. A method for solving travelling salesman problems. Operations
Research. 12,568-581. [19]
DESROCHERS, M., DESROSIERS, J., SOLOMON, M.M., 1992.A new optimization
for the vehicle Routing Problem with time windows, Operations research, vol.40, No.2, pp 342-354. [20]
DESROCHERS. M., LENSTRA, J.K., SAVELSBERGH, M.W.P. and SOUMIS, F.,
1988. Vehicle Routing with Time Windows: Optimization and Approximation. In: Golden B. and Assad A. (eds.), Vehicle Routing: Methods and Studies. Elsevier Science Publishers, 65-84. [21]
DESROSIERS, J., SOLOMON, M.M., 1988. Time Window Constrained Routing and
Scheduling Problems. Transportation Science, 22, 1−13. [22]
DORIGO, M., MANIEZZO, V. and COLORNI, A., (1991) The ant system: an
autocatalytic optimizing process, Technical Report TR91-016, Politecnico di Milano (1991). [23]
DORIGO, M., 1992. Optimization, Learning and Natural Algorithms, Dipartimento di
Elettronica, Politecnico di Milano, Italy. [24]
DUMAS Y, SOUMIS F, DESROSIERS J 1990. Optimizing the schedule for a fixed
vehicle path with convex inconvenience costs. Transport Sci 24(2):145–152 [25]
DURBIN, R., WILLSHAW, D.J. 1987. An analogue approach to the traveling
salesman problem using an elastic net method. Nature, 326, 689-691
78
[26]
FIGLIOZZI, M. A., 2010. An Iterative route construction and improvement algorithm
for the vehicle routing problem with soft and hard time windows, College of Engineering and Computer Science, Portland State University-CEE. [27]
FISHER, M.L., JAIKUMAR, R., 1981. A Generalized Assignment Heuristic for
Vehicle Routing. Networks, 11, 109-124. [28]
GAMBARDELLA, L.M., DORIGO, M.,(2000) An Ant Colony System Hybridized
with a New Local Search for the Sequential Ordering Problem, INFORMS Journal on Computing, vol.12(3), pp. 237-255. [29]
GAMBARDELLA, L.M., TAILLARD, E., and AGAZZI, G.,(1999) MACS-
VRPTW:A Multiple Ant Colony System for Vehicle Routing Problems with Time Windows, In D. Corne, M. Dorigo and F. Glover, editors, New Ideas in Optimization. McGraw-Hill, London, UK, pp. 63-76. [30]
GEHRING, H., HOMBERGER, J., 2002. Parallelization of a two-phase metaheuristic
for routing problems with time windows. J. Heurist., 8: 251-276. [31]
GENDREAU, M., BRÄYSY, O., 2003. Metaheuristic Approaches for the Vehicle
Routing Problem with Time Windows: A Survey. In the Proceedings of the V International Conference on Metaheuristics. [32]
GHAZIRI, H., 1991, Solving routing problems by a self-organizing map, in Arti-ficial
Neural Networks, a cura di T. Kohonen, K. Makisara, O. Simulae J. Kangas, NorthHolland, Amsterdam,, pp. 829–834. [33]
GLOVER, F., 1986. Future paths for Integer Programming and Links to Artificial
Intelligence. Computers and Operations Research, 5:533-549. [34]
HASHIMOTO, H., M., IMAHOR, S., IBARAKI, T., and YAGIURA, M., 2010.
Recent progress of local search in handling the time window of the vehicle routing problem. Springer. [35]
HASHIMOTO H., IBARAKI T., IMAHORI S., YAGIURA M. 2006. The vehicle
routing problem with flexible time windows and traveling times; Discrete Applied Mathematics 154; 1364-1383 [36]
HASHIMOTO H, YAGIURA M, IBARAKIT 2008. Aniterated local search algorithm
for the time-dependent vehicle routing problem with time windows. Discrete Optim 5(2):434–456. [37]
HOCHBAUM, D. S, QUEYRANNE, M., 2003. Minimizing a convex cost closure set.
SIAM J Discrete Math16(2):192–207.
79
[38]
HOLLAND, J., 1975.Adaptation In Natural and Artificial Systems. The University of
Michigan Press, Ann Arbour. [39]
HOMBERGER, J. and GEHRING, H. 1999. Two Evolutionary Metaheuristics for the
Vehicle Routing Problem with Time Windows. Appears in: Special issue of INFOR on "Metaheuristics for Location and Routing Problems". [40]
HOPFIELD, J. TANK. D.W., 1985. "Neural" Computation of Decisions in
Optimization Problems. Biol. Cybern: 52, 141-152. [41]
IBARAKI T, IMAHORI S, KUBO M, MASUDA T, UNO T, YAGIURA M., 2005.
Effective local search algorithms for routing and scheduling problems with general timewindow constraints. Transport Sci 39(2):206–232. [42]
IBARAKI T, IMAHORI S, NONOBE K, SOBUE K, UNO T, YAGIURAZ M., 2008.
An iterated local search algorithm for the vehicle routing problem with convex time penalty functions. Discrete Appl Math 156:2050–2069. [43]
ICHOUA S, GENDREAU M, POTVIN J-Y 2003. Vehicle dispatching with time-
dependent travel times. Eur J Opern Res 144:379–396. [44]
IOANNOU, G., KRITIKOS, M., PRATACOS, G., (2001) A greedy look-ahead
heuristic for the vehicle routing problem with time windows, Journal of the Operational Research Society. 52,523-537. [45]
KALLEHAUGE, B., 2006. On the vehicle routing problem with time windows. Centre
for Traffic and Transport Technical, University of Denmark. [46]
KOHONEN,T., 1988. Self-Organization and Associative Memory, Springer, Berlino.
[47]
KOSKOSIDIS, Y. A., POWELL, W. B., and SOLOMON, M. M., 1992. An
optimization-based heuristic for vehicle routing and scheduling with soft time window constraints. Transportation Science, 26(2):69–85. [48]
LAMBERT, V., LAPORTE, G. and LOUVEAUX, F., 1993. Designing Collection
Routes through Bank Branches. Computers and Operations Research, 20, 783-791. [49]
LIBERATORE, F., RIGHINI, G. and SALANI, M., 2010. A column generation
algorithm for the vehicle routing problem with soft time windows ,4OR-QJ, Operational research 9, 49-82. [50]
LIBERATORE, F., RIGHINI, G., 2006. A pricing algorithm for the vehicle routing
problem with soft time windows. Dipartimento di Tecnologie dell'informazione Università degli Studi di Milano.
80
[51]
LIN, S., 1965. Computer solutions of the traveling salesman problem. Bell Syst. Tech.
J. 44, 2245-2269 [52]
MAFFIOLI, 2000. Elementi di Programmazione Matematica. CEA.
[53]
MASUDA, T., et al., 2001. Effective local search algorithms for the vehicle routing
problem with general time window constraints. MIC’2001-4th
Metaheuristics
International Conference. Japan: Department of Applied Mathematics and Physics, Graduate School of Informatics, Kyoto University, Kyoto 606-8501. [54]
MESTER, D., BRÄYSY, O., 2004. Active Guided Evolution Strategies for Large
Scale Vehicle Routing Problem. Presented at Euro XX, Rhodes, Greece. [55]
OLIVER, M., SMITH, D.J., HOLLAND, C. 1987. A study of permutation crossover
operators on the travelling salesman problem, Genetic algorithms and their applications: Proc. of the second Int. Conf. On Genetic Algorithms (J. J. Grefenstette, ed.), (Hillsdale, NJ), pp. 224–230, Lawrence Erlbaum Assoc. [56]
OR. I., 1976. Traveling salesman-type combinatorial problem and their relation to the
logistics of regional blood banking. phD thesis, Department of Industrial Engeneering and Management Sciences North-western University. [57]
POTVIN, J.Y,KERVAHUT, T., GARCIA, B-L.,ROUSSEEAU, J.,M., 1996. The
vehicle routing problem with time windows – Part I: Tabu search. INFORMS Journal on Computing 8, 158–164. [58]
POTVIN, J.Y., ROUSSEAU, J.M. 1993. A Parallel Route Building Algorithm for the
Vehicle Routing and Scheduling Problem with Time Windows. European Journal of Operational Research. 66: 331–340. [59]
POTVIN, J.Y., ROUSSEAU, J.M. 1995. An exchange heuristic for routing problems
with time windows.Operational Research 46 1433-1446 [60]
QUERESHI, A. G., TANIGUCHI, E., and YAMADA, T., 2009. Column Generation -
based Hauristics for Vehicle Routing Problem with soft time windows. Jurnal of the Eastern Asia society for Trasportation Studies, Vol.8. [61]
ROCHAT, Y., TAILLARD, E., 1995. Probabilistic diversification and intensification
in local search for vehicle routing. Journal of Heuristics. 1,147–167. [62]
RUSSELL, R.A., 1977. An effective heuristic for them-tour traveling salesman
problem with some side constraints Operational Research.25,517-524 [63]
RUSSELL, R.A., 1995. Hybrid Heuristics for the Vehicle Routing Problem with Time
Windows, Transportation Science, 29, 156−166.
81
[64]
SALELSBERGH. M.W.P., 1985. Local search for routing problems with time
windows. Operational Research.4, 285-305. [65]
SEXTO, T., BODIN, L.D., 1985. Optimizing single vehicle many-to-many operations
with desired delivery times: I. Scheduling. Transportation Science, (19):378–410. [66]
SOLOMON, M.M., 1987. Algorithms for the Vehicle Routing and Scheduling
Problems with Time window constraints. Operations research, vol 35, No.2, pp.254-265. [67]
STUETZLE, W., 2003. Estimating the cluster tree of a density by analyzing the
minimal spanning tree of a sample. Journal of Classification, Vol. 20, No. 5, pp. 25-47. [68]
TAILLARD, E. et al. 1997. A tabu search heuristic for the vehicle routing problem
with soft time windows. Transportation Science, 31(2):170-186. [69]
TAILLARD, E., 1993. Parallel iterative search methods for vehicle routing problems.
Networks 23, 661–673. [70]
THOMPSON, P.M., PSARAFTIS, H.M., 1993. Cyclic transfer algorithms for
multivehicle routing and scheduling problems. Operations research,41. [71]
TOHT, P., VIGO, D., 2002. The Vehicle Routing Problem. SIAM.
[72]
VAIDYANATHAN, B.S., MATSON, J.O.,MILLER, D.M. and MATSON, J.E., 1999.
A Capacitated Vehicle Routing Problem for Just-In-Time Delivery. IEE Transactions 31, 1083-1092. [73]
VAN BREEDAM, A.,1994. An analysis of the behavior of heuristics for the vehicle
routing problem for a selection of problems with vehicle-related, customer-related, and time related constraints, University of Antwerp. [74]
VIGO, D., 2003. Il vehicle routing problem:Modelli ed Algoritmi D.E.I.S.- Università
di Bologna. [75]
VIGO, D., 2003. Tecniche di programmazione ed ottimizzazione dei servizi di
trasporto merci e logistica. D.E.I.S.- Università di Bologna.
82