Metodi di Ottimizzazione per la Logistica e la Produzione Parte II

Metodi di Ottimizzazione
per la Logistica
e la Produzione
Parte II
Manuel Iori
Dipartimento di Scienze e Metodi dell’Ingegneria
Università di Modena e Reggio Emilia
Anno Accademico 2016/17
MOLP – Parte III
1 / 89
Contenuto della Parte II del Corso
5. Problemi di Trasporto e Distribuzione
6. Algoritmi esatti per il VRP
7. Algoritmi euristici per il VRP
8. Problemi di localizzazione di servizi
MOLP – Parte III
2 / 89
5. Problemi di Trasporto e Distribuzione
Problemi di Trasporto e Distribuzione
MOLP – Parte I
3 / 89
5. Problemi di Trasporto e Distribuzione
La Logistica Distributiva
La logistica distributiva è l’attività di trasportare merci e/o servizi, dai luoghi
(“sorgenti”) dove tali merci e/o servizi sono disponibili fino alle destinazioni
che li richiedono.
Il trasporto può essere effettuato o direttamente o indirettamente, ad
esempio mediante uno stoccaggio intermedio.
Per il suo impatto, l’attività di distribuzione è economicamente importante
sia a livello aziendale che territoriale.
MOLP – Parte I
4 / 89
5. Problemi di Trasporto e Distribuzione
In generale la funzione costo del processo di distribuzione è una combinazione
di diversi elementi (un elemento fondamentale è il costo kilometrico). Il
problema decisionale può inoltre presentare svariati vincoli.
Nel caso di trasporti verso più clienti, è necessario determinare la partizione
dei clienti in viaggi e la sequenza di visita per ogni viaggio.
29
8
20
11
28
9
10
15
25
2
20
17
13
19
5
25
4
27
7
21
3
23
24
r
8
12
21
Domanda
28
8
7
25
29
17
7
24
10
19
30
13
14
8
13
13
6
26
6
18
28
13
22
26
16
20
Deposito
29
19
17
23
27
31
25
12
MOLP – Parte I
5 / 89
5. Problemi di Trasporto e Distribuzione
Esempi di problemi di vehicle routing
I problemi di Vehicle Routing impongono di soddisfare le richieste di un
insieme di clienti, nel rispetto dei vincoli e con costo minimo, utilizzando una
flotta di veicoli commerciali localizzata in uno o più depositi.
Alcuni esempi:
Distribuzione a supermercati.
Distribuzione di snack e bevande a distributori.
Distribuzione di prodotti petroliferi.
Distribuzione/raccolta posta.
Movimentazione di merci fra depositi.
Movimentazione autovetture fra concessionari.
Distribuzione prodotti finiti e raccolta materie prime.
Raccolta rifiuti solidi urbani e smistamento verso inceneritori.
Routing di “scuola-bus”.
Movimentazioni merci all’interno di un magazzino.
Picking di merci in un magazzino automatizzato.
MOLP – Parte I
6 / 89
5. Problemi di Trasporto e Distribuzione
Definizione di Vehicle Routing Problem
Il problema di base nello studio della logistica distributiva è il Vehicle Routing
Problem (VRP) (noto anche come Capacitated Vehicle Routing Problem,
CVRP). Nel VRP una flotta di veicoli deve soddisfare le domande di un dato
insieme di clienti partendo da un singolo deposito e minimizzando i costi.
Formalmente, è dato un grafo G = (V , A) , dove V = {0} ∪ V ′ , il vertice 0
rappresenta il deposito, ed i vertici V ′ = {1, . . . , n} rappresentano i clienti.
Ad ogni cliente i ∈ V ′ è associata una domanda (richiesta di merce, in peso)
positiva qi . Ad ogni arco (i, j) ∈ A è associato un costo non negativo cij .Una
flotta di M veicoli identici di capacità Q è localizzata al deposito.
Le specifiche del VRP sono le seguenti:
ogni cliente deve essere visitato una ed una sola volta;
ogni veicolo effettua un viaggio (route) partendo dal deposito con carico non
eccedente Q, visita uno o più vertici e ritorna infine al deposito;
il costo di una route è dato dalla somma dei costi degli archi nella route;
l’obiettivo è di trovare le M route che soddisfino i vincoli con costo minimo.
MOLP – Parte I
7 / 89
5. Problemi di Trasporto e Distribuzione
Complicazioni nel costo della soluzione
Nei casi reali il costo di una soluzione al problema può risultare una
combinazione di diversi fattori:
1
2
3
4
5
6
Numero e tipo di ordini non evasi;
Costo dei veicoli e degli autisti utilizzati;
Distanza percorsa dagli automezzi;
Tempo impiegato dagli autisti;
Costo secondo ”tariffe di legge” o contratti con ditte di trasporto;
...
Altri costi non direttamente quantificabili ma che guidano il processo di
risoluzione possono essere:
1
2
3
Qualità del servizio offerto ai clienti;
Assegnazione di viaggi a trasportatori privati esterni (padroncini);
...
MOLP – Parte I
8 / 89
5. Problemi di Trasporto e Distribuzione
Esempi di complicazioni nei vincoli dei problemi reali
Giorni ed orari di visita ai clienti fissati (ad esempio: Lunedı̀ 8.00-13.00 e
14.00-17.00, Martedı̀ 10.00-13.00 e 17.00-18.00).
Raccolta e consegne (pickup and delivery, ad esempio, lo stesso mezzo che
effettua le consegne raccoglie anche i vuoti).
Distribuzione di più prodotti con veicoli scompartati (ad esempio,
distribuzione di prodotti petroliferi).
Incompatibilità veicolo-cliente (ad esempio, richieste particolari attrezzature
di scarico, strade di accesso di dimensioni limitate).
Incompatibilità prodotto-prodotto (ad esempio, interazione tra prodotti
alimentari, oppure tra prodotti ad alto rischio chimico).
MOLP – Parte I
9 / 89
5. Problemi di Trasporto e Distribuzione
Layout di carico (ad esempio, gli oggetti da caricare sono di grandi
dimensioni).
Viaggi che durano più giorni.
Veicoli che effettuano più viaggi al giorno.
Precedenze nelle consegne (ad esempio, al cliente va lasciato il rimorchio che
sarà ripreso prima di rientrare al deposito, oppure è richiesto un trasporto da
un cliente ad un altro cliente).
Più depositi, possibilmente interdipendenti (ci può essere una divisone
univoca dei clienti tra i diversi depositi, o un’integrazione dei servizi).
...
MOLP – Parte I
10 / 89
5. Problemi di Trasporto e Distribuzione
VRP con Time Windows (VRPTW)
Il VRPTW è una generalizzazione del VRP in cui il servizio di consegna e/o
raccolta merce deve essere effettuato all’interno di una time window (TW)
(intervallo di tempo) definita da un tempo di inizio e un tempo di fine
MOLP – Parte I
11 / 89
5. Problemi di Trasporto e Distribuzione
VRP con Backhauls (VRPB)
Il VRPB è una generalizzazione del VRP in cui l’insieme dei clienti è
partizionato in due sottoinsiemi: clienti ai quali deve essere consegnata merce
(delivery ) e clienti dai quali deve essere raccolta merce (pickup). Inoltre in
ogni viaggio tutte le consegne devono essere effettuate prima delle raccolte.
MOLP – Parte I
12 / 89
5. Problemi di Trasporto e Distribuzione
VRP con raccolte e consegne (VRPPD)
Nel VRPPD l’insieme dei clienti è ancora partizionato in clienti che
richiedono una raccolta (pickup) ed in clienti che richiedono una consegna
(delivery). A differenza del VRPB però, non vi è alcuna precedenza fra le
consegne e le raccolte.
MOLP – Parte I
13 / 89
5. Problemi di Trasporto e Distribuzione
VRP con raccolte e consegne (VRPPD)
Nel VRPPD l’insieme dei clienti è ancora partizionato in clienti che
richiedono una raccolta (pickup) ed in clienti che richiedono una consegna
(delivery). A differenza del VRPB però, non vi è alcuna precedenza fra le
consegne e le raccolte.
Nella variante
Last-In-First-Out
le merci devono
essere raccolte e
consegnate
rispettando un
ordine LIFO.
MOLP – Parte I
14 / 89
5. Problemi di Trasporto e Distribuzione
Capacitated Arc Routing Problem (CARP)
Il CARP è il problema in cui da un deposito (o impianto) centrale una flotta
di automezzi deve soddisfare le richieste associate ad un insieme di strade del
territorio. L’obiettivo è di pianificare i viaggi minimizzando i costi (esempi
tipici sono la consegna della posta, o del latte).
MOLP – Parte I
15 / 89
5. Problemi di Trasporto e Distribuzione
Periodic Vehicle Routing Problem (PVRP)
Il PVRP consiste nel pianificare, per un determinato periodo di tempo,
l’insieme di viaggi che una flotta di veicoli deve effettuare giorno per giorno al
fine di soddisfare un livello di servizio minimo richiesto da ogni cliente,
minimizzando il costo di distribuzione.
MOLP – Parte I
16 / 89
5. Problemi di Trasporto e Distribuzione
2-dimensional Loading Capacitated Vehicle Routing
Problem (2L-CVRP)
Nel 2L-CVRP, le domande dei clienti sono espresse da oggetti rettangolari
pesati (ad esempio componenti di cucine, frigoriferi, . . . ). L’obiettivo è quello
di caricare gli oggetti sui pianali dei veicoli e trasportarli ai clienti con spesa
complessiva minima (con carico/scarico LIFO).
d 4 =60
I 21
d 2 =30
I 22
I 23
d 3 =45
2
I 42
I 44
I 41
I 43
Vehicle 1
Vehicle 2
I 23
I 44
I 12
I 31
4
I 21
I 53
I 52
3
Route 1
Route 2
I 51
5
1
d 5 =35
I 11
I 41 I 43
I 22 I 13
I 42
I 11
I 51
I 31
Vehicle 3
I 63
0
I 12
I 13 d1 =20
I 62
6
Route 3
8
I 82
I 81
d 8 =30
I 53
I 52
I 61
7
I 72
I 71
d 6 =30
I 72
I 61
I 63
I 62
I 71
I 81
I 82
d 7 =25
D=100
MOLP – Parte I
17 / 89
5. Problemi di Trasporto e Distribuzione
3-dimensional Loading Capacitated Vehicle Routing
Problem (3L-CVRP)
Nel 3L-CVRP, le domande dei clienti sono espresse da parallelepipedi
tridimensionali pesati (scatole, pallet, . . . ). L’obiettivo è quello di caricare gli
oggetti e trasportarli con spesa minima. Eventuali vincoli aggiuntivi sono:
carico/scarico LIFO, stabilità del carico, fragilità degli oggetti, . . . .
I 31
y
I 32 I
33
I 41
d3 = 40
I 42 I
43
3
H
d4 = 55
I 31
4
I 33
I 21
I 21
I 32
I 22
2
Vehicle 1
0
Vehicle 2
W
d2 = 30
x
I 11
5
1
I 22
I 12
L
I11
I12
z
d1 = 25
I 51
I 52
MOLP – Parte I
I 53
d5 = 45
18 / 89
5. Problemi di Trasporto e Distribuzione
Multi-Pile Vehicle Routing Problem (MP-VRP)
Nel MP-VRP, le domande dei clienti sono pallet di una certa altezza e
dimensioni base prefissate. Questi pallet sono posti su una o più pile, la cui
altezza non deve superare l’altezza del veicolo. L’obiettivo è di trasportare i
pallet ai clienti, con spesa risultante minima (esempio: trasporto legname).
I42
I43
I44
I52
I41
4
I53
I54
I51
5
I12
I13
I14
I11
I12
I13
I11
D
I14
I32
I33
I21
h(R)
H
I23
1
3
I31
I32
I33
I22
I31
2
I22
I23
I21
MOLP – Parte I
19 / 89
6. Algoritmi esatti per il VRP
Algoritmi Esatti per il VRP
MOLP – Parte I
20 / 89
6. Algoritmi esatti per il VRP
Matrice dei costi
I metodi esatti per la risoluzione ottima del VRP sono classificati in base al
tipo di matrice dei costi [cij ], che puó essere:
1
2
Simmetrica: cij = cji , ∀ coppia (i, j);
Asimmetrica: cij 6= cji , per una o piú coppie (i, j).
Nel caso simmetrico, definiamo un grafo pesato non orientato G = (V , E ):
V = {0} ∪ V ′ è l’insieme dei vertici, dove {0} è il deposito e V ′ sono i clienti;
E è l’insieme dei lati, e ad ogni lato e = (i, j) ∈ E è associato un costo cij ;
Considereremo generalmente grafi G completi, ovvero grafi che contengono un
lato per ogni i, j ∈ V , i < j.
Per il caso asimmetrico definiamo un grafo orientato pesato G = (V , A):
A è l’insieme degli archi, e ad ogni lato a = (i, j) ∈ A è associato un costo cij ;
Se il grafo G è completo, allora contiene un arco per ogni i, j ∈ V .
MOLP – Parte I
21 / 89
6. Algoritmi esatti per il VRP
Supponiamo che la matrice dei costi soddisfi le seguenti proprietà:
1
Costi non negativi:
2
Triangle inequality (disuguaglianza triangolare):
cij ≥ 0, ∀i ∈ V , ∀j ∈ V ;
cik + ckj ≥ cij , ∀i ∈ V , ∀j ∈ V , ∀k ∈ V ;
Se il problema parte da una rete reake (ad esempio stradale o di
telecomunicazioni), allora la matrice dei costi è generalmente costruita in una
fase di preprocessing calcolando
cij = lunghezza del cammino minimo da i a j, ∀(i, j) ∈ A.
Questo preprocessing permette di ridurre considerevolmente la complessità
del caso numerico
invece di tutti gli incroci della rete coinvolta, si considerano solo i clienti e il
deposito;
invece di tutti gli archi della rete conivolta, si considerano solo le connessioni
tra clienti e/o deposito).
MOLP – Parte I
22 / 89
6. Algoritmi esatti per il VRP
Possibili formulazioni
Nella letteratura il VRP è stato modellato e risolto attraverso numerose
formulazioni matematiche.
Le principali formulazioni possono essere classificate come segue:
Formulazioni Vehicle-Flow :
assegnano variabili al fatto che un veicolo attraversi o meno un dato arco;
Formulazioni Commodity-Flow :
estendono le precedenti formulazioni includendo variabili sulla quantità di
merce che attraversa un dato arco;
Formulazioni Set-Covering o Set-Partitioning :
prendono in considerazione tutte le possibili route dei veicoli.
MOLP – Parte I
23 / 89
6. Algoritmi esatti per il VRP
Formulazione Vehicle Flow a 2 Indici
Sia Φ = {S : S ⊆ V ′ } la classe dei possibili sottoinsiemi di clienti S ⊆ V ′
Per ogni S ∈ Φ sia S l’insieme complementare dei vertici, ovvero S = V \ S
X
Sia inoltre q(S) =
qi = domanda totale dell’insieme S ⊆ V ′
i ∈S
Sia r (S) il numero minimo di veicoli necessari per servire l’insieme S ∈ Φ:
Trovare il valore esatto di r (S) implica risolvere un Bin Packing Problem
(BPP) con capacità del bin Q e pesi degli oggetti qi
Dato che il BPP è un problema N P-difficile, in questa formulazione
normalmente si approssima il valore esatto r (S) con il lower bound continuo:
q(S)
r (S) =
Q
Da notare che r (S) calcolato in questo modo è esatto per |S| ≤ 2
MOLP – Parte I
24 / 89
6. Algoritmi esatti per il VRP
Consideriamo inizialmente il caso asimmetrico (più generale) e un grafo
completo ((i, j) ∈ A ∀i, j ∈ V ).
Associamo ad ogni arco (i, j) ∈ A la variabile decisionale:
1 se il lato (i, j) è attraversato da un veicolo;
xij =
0 altrimenti
MOLP – Parte I
25 / 89
6. Algoritmi esatti per il VRP
La formulazione a 2 indici del VRP (2I) è la seguente:
XX
z(2I ) = min
(1)
cij xij
i ∈V j∈V
s.t.
X
xij = 1,
∀j ∈ V ′
(2)
xij = 1,
∀i ∈ V ′
(3)
i ∈V
X
j∈V
X
xi 0 = M,
(4)
x0j = M,
(5)
i ∈V
X
j∈V
XX
xij ≥ r (S),
∀S ∈ Φ
(6)
i ∈S j∈S
xij ∈ {0, 1},
MOLP – Parte I
∀i, j ∈ V
(7)
26 / 89
6. Algoritmi esatti per il VRP
Capacity Cut e Generalized Subtour Elimination
I vincoli (6) sono definiti Capacity Cut Constraints (vincoli di capacità)
Il numero di questi vincoli è esponenziale (in tutto 2n )
n!
insiemi S di
Dato infatti un grafo con n nodi, esistono (kn) = k!(n−k)!
cardinalità |S| = k
Dato che per ogni cliente ho esattamente un arco entrante e uno uscente (a
causa dei vincoli (46) e (47)) ho che (6) è equivalente a (8):
XX
xij ≥ r (S), ∀S ∈ Φ
(8)
i ∈S j∈S
Esiste una formulazione equivalente per i vincoli di capacità, che può essere
ottenuta tramite passaggi algebrici
MOLP – Parte I
27 / 89
6. Algoritmi esatti per il VRP
Consideriamo un generico insieme S. Per ogni vertice j ∈ S valgono i vincoli
(46) e (47), per cui:
X
xij = 1, ∀j ∈ S, ∀S ∈ Φ
(9)
i ∈V
X
xij +
i ∈S
X
xij = 1,
∀j ∈ S, ∀S ∈ Φ
sommando tra loro tutti i vincoli (10) otteniamo


X X
X

xij  = |S|,
xij +
j∈S
(10)
i ∈S
i ∈S
XX
j∈S i ∈S
XX
j∈S i ∈S
xij +
∀S ∈ Φ
(11)
∀S ∈ Φ
(12)
∀S ∈ Φ
(13)
i ∈S
XX
xij = |S|,
j∈S i ∈S
xij = |S| −
XX
xij ,
j∈S i ∈S
MOLP – Parte I
28 / 89
6. Algoritmi esatti per il VRP
Formulazione 2I Simmetrica
La formulazione 2I vale per matrici dei costi simmetriche ed asimmetriche.
Nel caso simmetrico però la formulazione può essere semplificata come segue:
X X
z(2IS) = min
cij xij
(14)
i ∈V j∈V , j>i
s.t.
X
xhi +
h∈V , h<i
X
X
xij = 2,
∀i ∈ V ′
x0i = 2M
i ∈V
X X
h∈S
/ i ∈S, h<i
(15)
j∈V , j>i
xhi +
(16)
X X
xij ≥ 2r (S) ∀S ∈ Φ
(17)
i ∈S j ∈S,
/ j>i
xij ∈ {0, 1} ∀i ∈ V ′ , j ∈ V ′ , j > i
x0j ∈ {0, 1, 2} ∀j ∈ V
MOLP – Parte I
′
(18)
(19)
29 / 89
6. Algoritmi esatti per il VRP
La formulazione 2I simmetrica può anche essere espressa tramite l’utilizzo di
una notazione insiemistica:
X
z(2IS ′ ) = min
ce xe
(20)
e∈E
s.t.
X
xe = 2
∀i ∈ V ′
(21)
e∈δ(i )
X
xe = 2M
(22)
xe ≥ 2r (S) ∀S ∈ Φ
(23)
xe ∈ {0, 1} ∀e ∈ E \ δ(0)
(24)
xe ∈ {0, 1, 2} ∀e ∈ δ(0)
(25)
e∈δ(0)
X
e∈δ(S)
MOLP – Parte I
30 / 89
6. Algoritmi esatti per il VRP
Nella formulazione 2SI’, δ(i) rappresenta l’insieme di lati incidenti sul vertice
i, ∀i ∈ V , ed e ∈ E rappresenta il generico indice di un lato e sostituisce la
notazione (i, j)
Ad esempio, per un grafo completo contenente 4 vertici, V = {0, 1, 2, 3},
abbiamo 6 lati
E = {(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)},
e i seguenti insiemi:
δ(0) = {(0, 1), (0, 2), (0, 3)},
δ(1) = {(0, 1), (1, 2), (1, 3)},
δ(2) = {(0, 2), (1, 2), (2, 3)} e
δ(3) = {(0, 3), (1, 3), (2, 3)}.
Per quanto riguarda l’indice e, numeriamo semplicemente i lati da 1 a 6, e
otteniamo quindi
e = 1 = (0, 1), e = 2 = (0, 2), . . . , e = 6 = (2, 3).
MOLP – Parte I
31 / 89
6. Algoritmi esatti per il VRP
Anche nel caso simmetrico i vincoli di Capacity Cut possono essere espressi
come vincoli di Generalized Subtour Elimination
Per quanto riguarda la formulazione 2IS questo porta a
X X
xhi ≤ |S| − r (S), ∀S ∈ Φ
(26)
Per la formulazione 2IS’, si ottiene
X
xe ≤ |S| − r (S),
(27)
h∈S i ∈S,h<i
∀S ∈ Φ
e∈E (S)
dove E (S) è l’insieme di lati interni a S: E (S) = {e = (i, j) : i ∈ S, j ∈ S}.
MOLP – Parte I
32 / 89
6. Algoritmi esatti per il VRP
Lower bound basato sulla formulazione 2I: assegnamento
Rimovendo dalla formulazione 2I i vincoli di capacità (6), si ottiene il
seguente lower bound LBap :
XX
LBap = min
cij xij
i ∈V j∈V
s.t.
X
xij = 1,
∀j ∈ V ′
xij = 1,
∀i ∈ V ′
i ∈V
X
j∈V
X
xi 0 = M,
i ∈V
X
x0j = M,
j∈V
xij ∈ {0, 1},
MOLP – Parte I
∀i, j ∈ V
33 / 89
6. Algoritmi esatti per il VRP
Questo modello corrisponde al problema dell’assegnamento (assignment
problem), che può essere risolto con algoritmi ad hoc con complessità O(n2 )
La soluzione di questo modello rilassato può risultare non ammissibile per il
VRP originale in quanto:
1
2
alcuni vertici possono essere sconnessi dal deposito
la domanda associata ad circuito che esce dal vertice 0 può eccedere la
capacità Q del veicolo
MOLP – Parte I
34 / 89
6. Algoritmi esatti per il VRP
Lower bound basato sulla formulazione 2IS’: b-matching
Rimovendo dalla formulazione 2IS’ i vincoli di capacità (23), si ottiene il
seguente lower bound LBbm :
X
LBbm = min
ce xe
e∈E
s.t.
X
xe = 2 ∀i ∈ V ′
e∈δ(i )
X
xe = 2M
e∈δ(0)
xe ∈ {0, 1} ∀e ∈ E \ δ(0)
xe ∈ {0, 1, 2} ∀e ∈ δ(0)
MOLP – Parte I
35 / 89
6. Algoritmi esatti per il VRP
Questo modello corrisponde al problema di ottimizzazione noto in letteratura
col nome di b-matching, che può essere risolto in tempo polinomiale con
complessità O(n4 )
Si noti che la soluzione di questo modello rilassato può risultare non
ammissibile per il VRP originale in quanto:
1
2
la domanda associata ad un ciclo contenente il deposito può eccedere la
capacità Q del veicolo
alcuni cicli possono risultare disconnessi dal deposito
MOLP – Parte I
36 / 89
6. Algoritmi esatti per il VRP
Lower bound basato sulla formulazione 2IS’: k-tree
Rimovendo dalla formulazione 2IS’ i vincoli (21) e rilassando a 1 la parte
destra dei vincoli di capacità (23), si ottiene il seguente lower bound LBkt :
X
LBkt = min
ce xe
e∈E
s.t.
X
xe = 2M,
e∈δ(0)
X
xe ≥ 1,
∀S ∈ Φ
e∈δ(S)
xe ∈ {0, 1}, ∀e ∈ E \ δ(0)
xe ∈ {0, 1, 2}, ∀e ∈ δ(0)
MOLP – Parte I
37 / 89
6. Algoritmi esatti per il VRP
La soluzione di questo modello consiste nella determinazione di un albero
ricoprente di costo minimo con il vincolo aggiuntivo che il vertice 0 abbia 2M
lati incidenti. Questo problema è noto col nome di k-tree, e può essere risolto
in tempo O(n3 )
In questo caso i vincoli di capacità impongono solo la connessione di tutti i
veritici nel grafo
La soluzione di questo modello rilassato può quindi risultare non ammissibile
per il VRP in quanto:
1
2
la domanda associata ad un sottoalbero che si dirama dal vertice 0 può
eccedere la capacità Q del veicolo
alcuni vertici possono avere grado diverso da 2
MOLP – Parte I
38 / 89
6. Algoritmi esatti per il VRP
Formulazione Set-Partitioning
Si basa sull’enumerazione di tutte le possibili route ammissibili, e poi sulla
scelta di quale sottinsieme di queste sia ottimale
Definiamo innanzitutto:
R = insieme degli indici di tutte le route ammissibili
aij : coefficiente binario uguale a 1 se la route j ∈ R contiene il cliente i ∈ V ′ ,
0 altrimenti
ĉj : costo della route j ∈ R
Da notare che il computo di ĉj non è facile: richiede di risolvere un TSP tra i
vertici considerati nella route j
Per ogni route j ∈ R introduciamo la variabile decisionale:
1 se la route j viene scelta nella soluzione
yj =
0 altrimenti
MOLP – Parte I
39 / 89
6. Algoritmi esatti per il VRP
La formulazione Set Partitioning del VRP (SP) è la seguente:
X
z(SP) = min
ĉj yj
(28)
j∈R
s.t.
X
aij yj = 1 ∀i ∈ V ′
(29)
yj = M
(30)
j∈R
X
j∈R
yj ∈ {0, 1}
MOLP – Parte I
∀j ∈ R
(31)
40 / 89
6. Algoritmi esatti per il VRP
La formulazione SP si adatta bene a modellare numerosi vincoli sulle route,
fra i quali, ad esempio, le time windows
Il numero di route è esponenziale, per cui la formulazione SP è di solito
risolta tramite tecniche di generazione di colonne:
1
2
3
4
genera un sottoinsieme di colonne;
risolvi il rilassamento continuo del modello;
determina tramite la dualità se esistono colonne non ancora generate di costo
ridotto negativo; se esistono, aggiungile al rilassamento e reitera dal punto 2;
eventualmente effettua branching per ottenere una soluzione intera.
MOLP – Parte I
41 / 89
6. Algoritmi esatti per il VRP
Formulazione Two-commodity
Consideriamo innanzitutto un grafo Ge = (Ve , Ee) ottenuto dal grafo
simmetrico G = (V , E ) aggiungendo un nodo n + 1
In questa formulazione 0 rappresenta il deposito di partenza e n + 1 il
deposito di arrivo
I depositi possono essere coincidenti (in pratica sono lo stesso deposito) o
distinti
Consideriamo il caso di depositi coincidenti. Abbiamo:
Ve = V ∪ {n + 1}
V ′ = Ve \ {0, n + 1}
Ee = E ∪ {(i, n + 1), i ∈ V ′ },
ci ,n+1 = c0i , ∀i ∈ V ′
c0,n+1 = cn+1,0 = 0
MOLP – Parte I
42 / 89
6. Algoritmi esatti per il VRP
La formulazione 2-commodity usa due variabili di flusso, fij e fji , per
rappresentare flussi su un lato (i, j) ∈ Ee di una soluzione del VRP
Le variabili di flusso definiscono due circuiti distinti
un circuito dal vertice 0 al vertice n + 1 rappresentante il carico del veicolo
un circuito dal vertice n + 1 al vertice 0 rappresentante lo spazio residuo del
veicolo
Alle variabili fij e fji si aggiungono le classiche variabili xij per esprimere il
fatto che un veicolo passi o meno su un dato lato (i, j) ∈ E
MOLP – Parte I
43 / 89
6. Algoritmi esatti per il VRP
Esempio: singola route per 3 clienti con veicolo di capacità Q = 15
q2 = 7
2
11
q8 = 3
4
4
11
8
9
q9 = 4
Pα
Pβ
15
1
0
14
0
n+1
Deposito iniziale
Deposito finale
Circuito P α rappresenta il carico del veicolo, il circuito P β lo spazio residuo
Su ogni lato scelto si ha fij + fji = Q = 15
Si noti che f08 è il carico iniziale (pari alla somma delle domande dei clienti
associati alla route), mentre fn+1,9 è la capacità del veicolo
MOLP – Parte I
44 / 89
6. Algoritmi esatti per il VRP
La formulazione 2-commodity è la seguente
X
z(2C ) = min
cij xij
(32)
(i ,j)∈Ee
s.t.
X
(fji − fij ) = 2qi
∀i ∈ V ′
(33)
e
j∈V
X
f0j = q(V ′ )
(34)
fj0 = MQ − q(V ′ )
(35)
fn+1,j = MQ
(36)
j∈V ′
X
j∈V ′
X
j∈V ′
fij + fji = Qxij
∀(i, j) ∈ Ee
X
X
xhi +
xij = 2 ∀i ∈ V ′
(37)
∀(i, j) ∈ Ee
∀(i, j) ∈ Ee
(39)
e ,h<i
h∈V
(38)
e ,i <j
j∈V
fij , fji ≥ 0
xij ∈ {0, 1}
MOLP – Parte I
(40)
45 / 89
6. Algoritmi esatti per il VRP
Si noti che mentre le formulazioni 2I, 2Is e 2IS’ contengono un numero
esponenziale di vincoli, la formulazione 2C ha un numero polinomiale di
vincoli
Si può notare inoltre come sia stato eliminato il vincolo ridondante:
X
fj,n+1 = 0
j∈V ′
Le formulazioni di tipo one-commodity e multi-commodity viste per il TSP
(nelle slides della parte di laboratorio) possono essere facilmente adattate al
VRP e sono ugualmente utili per la risoluzione del problema
MOLP – Parte I
46 / 89
6. Algoritmi esatti per il VRP
Lower bound continuo basato sulla formulazione 2C
Un valido lower bound al VRP puó essere ottenuto dal rilassamento lineare
della formulazione 2C : 0 ≤ xij ≤ 1 ∀(i, j) ∈ Ee
Il lower bound risultante (LBc ) puó essere riscritto in funzione delle sole
variabili {fij } utilizzando i vincoli (37). Otteniamo in questo modo:
1 X
cij (fij + fji )
(i ,j)∈Ee
Q
X
s.t.
(f − fij ) = 2qi
∀i ∈ V ′
e ji
j∈V
X
f0j = q(V ′ )
j∈V ′
X
fj0 = MQ − q(V ′ )
j∈V ′
X
fn+1j = MQ
j∈V ′
X
(f + fji ) = 2Q
∀i ∈ V ′
e ij
LBc = min
j∈V
fij , fji ≥ 0
MOLP – Parte I
∀(i, j) ∈ Ee
47 / 89
6. Algoritmi esatti per il VRP
Miglioramento del lower bound LBc con piani di taglio
Il lower bound LBc puó essere migliorato aggiungendo alla formulazione dei
vincoli violati (anche detti piani di taglio o cutting planes), utilizzando un
algoritmo di tipo cutting plane generation:
1
2
3
risolvi la formulazione continua LBc , e sia f¯ la soluzione ottenuta
calcola x̄ij = (f¯ij + f¯ji )/Q ∀(i, j) ∈ Ee
determina l’esistenza di vincoli violati da x̄ij (vedi slides successive per
dettagli). Se ne esistono, aggiungili al modello e re-itera dal passo 1.
L’algoritmo di cutting plane generation è l’equivalente del column generation
visto per la formulazione SP, ma genera vincoli invece di colonne
MOLP – Parte I
48 / 89
6. Algoritmi esatti per il VRP
Piani di taglio basati su vincoli di flusso
In ogni soluzione ammissibile, xij = 1 significa che il lato (i, j) appartiene ad
una route ammissibile.
Se il veicolo viaggia da i a j:
1
2
fij è il carico del veicolo, quindi fij ≥ qj ;
fji è la capacità residua del veicolo dopo che il veicolo ha scaricato qi unità in
i, quindi fji ≥ qi .
In ogni soluzione ammissibile si ha perciò:
fij ≥ qj xij
fji ≥ qi xij
∀(i, j) ∈ Ee
∀(i, j) ∈ Ee
(41)
(42)
Usando (41), (42) e (37) (ovvero fij + fji = Qxij , ∀(i, j) ∈ Ee), otteniamo i
seguenti vincoli di flusso:
(Q − qj )fij − qj fji ≥ 0
(Q − qi )fji − qi fij ≥ 0
MOLP – Parte I
∀(i, j) ∈ Ee
∀(i, j) ∈ Ee
(43)
(44)
49 / 89
6. Algoritmi esatti per il VRP
Piani di taglio basati su vincoli di capacità
In una soluzione ammissibile di LBc i vincoli di capacità possono essere violati
in più modi
Vincoli di capacità sui lati: i vincoli più semplici di capacità che possono
essere violati sono i seguenti
fij + fji ≤ Q
∀(i, j) ∈ Ee
Vincoli di capacity cut: consideriamo un generico insieme S e sostituiamo
xij con (fij + fji )/Q in (47). Otteniamo i seguenti vincoli
1 XX
(fij + fji ) ≥ 2⌈q(S)/Q⌉
Q
∀S ∈ Φ
i ∈S j∈S̄
MOLP – Parte I
50 / 89
6. Algoritmi esatti per il VRP
Esempio di miglioramento di LBc
Esempio: n=21 clienti, M =4 veicoli di capacità Q=60
La soluzione ottima di LBc sulla data istanza è la seguente
11
11
2
2
1.70
3
8
14
1
0.07
13
8
0.08
9
10
11
1.22
1.35
0.93
1.22
r
1.30
15
17
21
20
r
13
0.78
16
3
0.70
16
9
21
0.85
9
17
0
0
51.00
32.00
18
25
13
0.37
0.10
0.12
0.53
5
0.15
6
1.10
0.42
21 Demand
0.43
0.48
0.67
12
14
6
1.52
8
1.27
0.37
0.78
7
0.30
0.05
7
4
12
3
0.30
4
5 1.63
0.37
49.00
53.00
7
19
10
0.70
0.38
21
1.47
22
19
9
25
1.15
9
20
18
0.15
7
(a) LBc = 309.97
MOLP – Parte I
(b) Dettagli
51 / 89
6. Algoritmi esatti per il VRP
Il lato (2, 3) non soddisfa i vincoli “semplici” in quanto f23 + f32 > 60
I lati (16, 19) e (17, 20) non soddisfano i vincoli di flusso in quanto f19,16 e
f20,17 sono uguali 0
Dopo l’aggiunta di 16 vincoli “semplici” e 34 vincoli di flusso violati,
otteniamo LBc = 350.32 e la seguente soluzione
11
2
1.00
3
0.50
7
8
0.50
1.00 4
5
14
1.00
0.47
0.03
6 21 Demand
1.00
7
4
0.88
1.00
1
8
8
1.00
0.15
9
10
0.85
12
11
12
5
6
0.23
13
1.00
r
1.00
14
0.63
1.00
15 3
17 1.00
0.63
21
1.00
13
13
1.00
0.25
16
20
0.75
0.50
21
7
22
19
10
0.50
1.00
9
0.25
0.37
18
25
1.00
1.00
1.00
9
S
1.00
18
0.50
MOLP – Parte I
52 / 89
6. Algoritmi esatti per il VRP
Un esempio
di capacità violato è dato da S = {18, 19, 20, 21, 22},
Pdi vincolo
P
in quanto i ∈S j∈S (fij + fji ) = 3.0, mentre ⌈q(S)/Q⌉ = ⌈69/60⌉ = 2.
Dopo l’aggiunta di 142 vincoli di capacità la soluzione diventa:
11
2
3
7
8
4
14
5
6
7
4
8
1
9
10
12
13
11
12
13
15
5
6
r
14
13
3
16
9
19
9
17
21
18
25
21 Demand
8
10
20
7
21
18
22
La soluzione ha costo LBc =375.00, ed essendo intera è anche una soluzione
ottima dell’istanza di VRP
MOLP – Parte I
53 / 89
6. Algoritmi esatti per il VRP
Algoritmo Branch and Cut
Normalmente il cutting plane generation viene usato in algoritmi di tipo
Branch and Cut, che sono algoritmi di tipo Branch and Bound, in cui ad ogni
non il lower bound è calcolato con il cutting plane generation:
1
2
dividi il problema in sottoproblemi in cui una o più variabili hanno valore fissato
per ogni sottoproblema calcola il lower bound attraverso il cutting plane
generation e prendi una delle seguenti decisioni:
1
2
3
taglia il nodo se non promettente (LB(nodo) ≥ UB)
torna indietro (backtracking) se la soluzione del nodo è ammissibile
ramifica ulteriormente.
I problemi di Programmazione Lineare Intera sono risolti da Xpress (e dagli
altri software a disposizione) tramite algoritmi di tipo Branch and Cut
Il modo utilizzato per ramificare è definito strategia di branching
La strategia di branching più comune ramifica su un lato: scelto un lato (i, j)
con x̄ij frazionario, si generano due nodi, uno dove si impone xij = 1, l’altro
dove si impone xij = 0
MOLP – Parte I
54 / 89
7. Algoritmi euristici per il VRP
Algoritmi Euristici per il VRP
MOLP – Parte I
55 / 89
7. Algoritmi euristici per il VRP
Euristici costruttivi per il VRP
Il VRP è un problema complesso in quanto combina assieme due problemi
NP-difficili già affrontati in questo corso: il BPP e il TSP
Gli euristici costruttivi per il VRP cercano di produrre una soluzione
ammissibile di basso costo costruendo route (instradamenti) che portino a
visitare tutti i clienti nel rispetto dei vincoli operativi
Questi euristici possono essere classificati in base a:
1
2
criterio usato per espandere le route
costruzione delle route in modo sequenziale o parallelo
Un criterio è una funzione che permette di definire quale cliente sarà inserito
nelle route in costruzione ed in quale posizione
La costruzione delle route può avvenire fondamentalmente in due modi:
sequenziale (una route dopo l’altra) o parallela (tutte le route
contemporaneamente)
MOLP – Parte I
56 / 89
7. Algoritmi euristici per il VRP
Criteri di espansione delle route
Alcuni criteri (approfonditi nelle slides successive) sono i seguenti:
1
Saving : il saving del cliente i rispetto al cliente j è definito come:
s(i, j) = ci 0 − cij + c0j
2
Extra-mileage: l’extra-mileage del cliente k rispetto a due clienti consecutivi i
e j è definito come:
em(i, k, j) = cik + ckj − cij
3
Criteri composti: funzioni pesate di saving, extra-mileage, importanza del
cliente (quantitativo di merce richiesto, time window stretta o ampia, ecc.),
distanza dal deposito, ecc.
MOLP – Parte I
57 / 89
7. Algoritmi euristici per il VRP
Metodi sequenziali e paralleli
Metodi sequenziali
Le route sono costruite in sequenza, una dopo l’altra. Una nuova route viene
creata quando nessun cliente non servito può far parte della route attualmente
in costruzione
Metodi paralleli
Le route sono costruite in parallelo. La soluzione si compone di più route
emergenti che vengono espanse in parallelo inserendo i clienti non ancora
serviti
Si dividono in:
1
2
metodi nei quali il numero iniziale delle route è fissato ad un valore predefinito
K (l’ultima route può essere inammissibile)
metodi nei quali un certo numero iniziale di piccole route, generalmente una
route per ogni cliente, vengono successivamente fuse per creare route più grandi
(rispetto ad (1) in questo modo non vi è il controllo sul numero di route
prodotte)
MOLP – Parte I
58 / 89
7. Algoritmi euristici per il VRP
Algoritmo di Clarke e Wright (1964)
Esistono varie versioni di quest’algoritmo. Qui presentiamo la piú classica,
che si basa su una costruzione parallela della soluzione
Versione parallela:
Step 1. Si costruiscano n route del tipo (0, i, 0), ∀i ∈ V ′ ;
Step 2. Si calcoli il saving s(i, j), per ogni i, j ∈ V ′ , i 6= j;
Step 3. Si costruisca la lista L = {(i1 , j1 ), (i2 , j2 ), . . .}
tale che s(i1 , j1 ) ≥ s(i2 , j2 ) ≥ . . . ≥ s(in , jn );
Step 4. Data la coppia (i ∗ , j ∗ ) della lista L avente saving massimo,
determina se (i ∗ , j ∗ ) può essere utilizzata per
unire due route della soluzione corrente nelle quali i ∗ e j ∗
sono clienti estremi delle due route
(iniziali o terminali);
Step 5. Unisci le route secondo (i ∗ , j ∗ ), elimina (i ∗ , j ∗ ) da L,
e ripeti dallo Step 4 fino a che la soluzione diventi ammissibile
e/o tutte le coppie della lista siano state esaminate.
MOLP – Parte I
59 / 89
7. Algoritmi euristici per il VRP
Metodi delle due fasi
Questi metodi si suddividono in due tipologie:
1
Cluster-first-route-second
i clienti vengono prima partizionati in sottoinsiemi (clustering) e poi per
ciascun sottoinsieme si determina la sequenza di visita (TSP)
2
Route-first-cluster-second
inizialmente si determina una sequenza di visita di tutti i clienti (TSP) e poi
la si suddivide in route ammissibili (clustering)
MOLP – Parte I
60 / 89
7. Algoritmi euristici per il VRP
3.2 Standard Heuristics for the Travelling Salesman Problem 46
The best-known tour improvement algorithms are edge exchange algorithms.
In the standard case, r edges in the current tour are replaced with r edges that are
not in the tour, as long as the result is a tour and the length of the resulting tour
is reduced. A standard edge exchange algorithm that exchanges r edges at a time
is referred to as an r-opt algorithm. Figure 3.1 illustrates the 3-opt exchange.
An r-opt algorithm tests all exchanges of r edges until there is no exchange
that yields an improvement. The resulting tour is said to be r-optimal. As r
increases the probability of nding the optimal solution increases. Unfortunately,
the computational expense increases rapidly with increasing r. In a number of
empirical studies, 3-opt has been found to give much better results than 2-opt,
while the 4-opt solutions were not suciently better than the 3-opt solutions to
justify the increased computational cost. Lin and Kernighan [LK73] developed
an algorithm which decides at each iteration how many edges to exchange. This
produces very high quality solutions and is used by a number of exact TSP
methods to nd tight upper bounds. It can however take a signicant amount of
computational time in comparison with other edge exchange algorithms.
Or [Or76] proposed a modied 3-opt procedure, now commonly referred to
as Or-opt. Or-opt considers repositioning strings of one, two or three adjacent
cities in-between two other cities. When Or-opt can no longer make any improvements to a tour we say the tour is Or-optimal. Compared with 3-opt the
number of exchanges considered is much less. In an empirical study, Golden and
Stewart [GS85] found that Or-opt found solutions comparable in quality to 3opt, while taking time comparable to 2-opt. An example of an Or-opt exchange
is shown in Figure 3.2. Another advantage of using Or-opt over 2-opt or 3-opt
is that no path | except for possibly the repositioned string | is reversed.
For example in Figure 3.1 paths (k; : : : ; l) and (m; : : : ; n) are reversed while in
3.2 Standard Heuristics for the Travelling Salesman Problem 47
Figure 3.2 only path (m; n; p) is reversed. This is relevant when solving TSPs
with side constraints such as time-windows [Sav90].
An approach which lies somewhere in-between tour construction and tour
improvement is the Generalized Insertion Procedure (GENI) of Gendreau et al.
[GHL92]. GENI constructs a tour vertex by vertex, but when it adds a vertex it
performs a small number of local transformations in order to improve the quality
of the tour.
For each vertex added, GENI considers two types of insertion for each of the
two orientations of the tour. For a given orientation, let vk be a vertex on the
path from vj to vi, and vl be a vertex on the path from vi to vj . For any vertex
vh on the tour, let vh;1 be its predecessor and vh+1 be its successor. The two
types of insertion are shown in Figures 3.3 and 3.4. Note that performing a Type
I Insertion with j = i + 1 and k = j + 1 yields the standard insertion procedure.
Since the number of possible choices for vi, vj , vk and vl is large (O(n4)),
Gendreau et al. limit the choices tested by using p-Neighbourhoods, an approach
also used by them in their VRP algorithm [GHL91]. For any vertex v, Np(v) is
dened as the set of p vertices on the tour that are closest to v. Gendreau et al.
rst select vi; vj 2 Np(v), then vk 2 Np(vi+1) and vl 2 Np(vj+1). They also
consider insertions between vi and vi+1 where vi 2 Np(v). In practice p is a small
number. The GENI algorithm starts with an initial subtour of three arbitrarily
chosen vertices. It then arbitrarily selects vertices not on the current tour and
inserts each selected vertex using the best of the two insertion procedures (both
tour orientations are considered). The overall complexity of the algorithm is
O(np4 + n2).
The reasoning behind p-Neighbourhoods is as follows. In an optimal tour we
expect the edges to be short, so it seems likely that edges in the optimal tour will
be in the p-Neighbourhoods. However Stewart [Ste87] points out that this will
Ricerca locale per il VRP: ottimizzazione intra-route
Le ricerche locali all’interno della stessa
route si basano su quelle viste per il TSP
(vedi slides per il laboratorio)
3-opt (Lin and Kernighan, 1973)
k
l
j
i
l
k
l
n
i
a
m
j
i
i
m
n
p
b
m
a
m
j
n
p
i
k
Or-opt (Or, 1973)
j
j
j
i
k
l
n
2-opt (Lin and Kernighan, 1973)
b
Figure 3.2: Or-opt example
Figure 3.1: 3-opt example
MOLP – Parte I
61 / 89
7. Algoritmi euristici per il VRP
Ricerca locale per il VRP: ottimizzazione inter-route
Rr'
Rr'
vi
vi
Rr"
Rr"
Deposito
Deposito
Scambio (1-0)
vi
vi
Rr'
Rr'
vj
vj
Rr"
Gli algoritmi di ricerca locale
inter-route coinvolgono due o piú
route (nei nostri esempi solo 2)
La complessità degli scambi (1,0) e
(1,1) è O(n2 )
La complessità degli scambi (2,0),
(2,1) e (2,2) rimane O(n2 ) se i due
vertici nella stessa route sono presi
contigui uno all’altro
Deposito
Rr"
Deposito
Scambio (1-1)
vi
vi
Rr'
Rr'
vj
vj
Rr"
Deposito
Rr"
Deposito
Scambio (2-0)
Rr'
vi
Rr"
vk
Rr"
Rr'
vi
vj
vj
Deposito
vk
Deposito
Scambio (2-1)
Rr'
vi
vj
Deposito
Rr'
vk
vl
vi
vj
R r"
vk
vl
Rr"
Deposito
Scambio (2-2)
MOLP – Parte I
62 / 89
7. Algoritmi euristici per il VRP
Algoritmo di Christofides, Mingozzi e Toth (1979)
Usa due fasi successive. La fase I è sequenziale:
Step 1. Si ponga h = 1 e S = ∅
Step 2. Si scelga un cliente non visitato ih per inizializzare una nuova route Rh ;
Per ogni cliente non ancora visitato i si calcoli
δi = c0i + λciih (λ ≥ 1)
Step 3. Sia δi ∗ = min[δi ], dove Sh è l’insieme dei clienti non visitati che possono
i ∈Sh
essere inseriti in Rh rispettando i vincoli. Si inserisca il cliente i ∗ in Rh
scegliendo la posizione di minor costo
Step 4. Si ottimizzi la route Rh con 3-opt e si ripeta lo Step 3 finché
nessun cliente possa essere aggiunto a Rh ;
Step 5. Si ponga S = S ∪ {Rh } e h = h + 1;
Se tutti i clienti sono stati visitati o tutti i veicoli sono stati utilizzati
si termini l’algoritmo; altrimenti si vada allo Step 2.
La Fase II dell’algoritmo (qui non trattata) usa una tecnica di costruzione
paralella della soluzione che coinvolge contemporaneamente m route
MOLP – Parte I
63 / 89
7. Algoritmi euristici per il VRP
Richiami sul Tabu Search
Prima di introdurre il prossimo algoritmo sul VRP richiamiamo velocemente
idea e pseudocodice del Tabu Search di base
Il Tabu Search (Glover, 1986) esce dai minimi locali muovendosi sulla migliore
soluzione dell’intorno ad ogni iterazione, anche se peggiore della corrente
Una struttura di memoria chiamata tabu list cerca di impedire di tornare su
soluzioni già visitate
Step 1. Genera una soluzione iniziale x ∈ X
Poni x∗ = x e inizializza TL = ∅ (TL è la tabu List)
Step 2. Trova x′ ∈ N(x), tale che
f (x′ ) = min{f (x′′ ), ∀x′′ ∈ N(S), x′′ ∈
/ TL}
Step 3. Poni x = x , TL = TL ∪ {x}
if f (x) < f (x∗ ) then x∗ = x
Step 4. if not <condizione di terminazione> goto Step 2
′
MOLP – Parte I
64 / 89
7. Algoritmi euristici per il VRP
Tabu Search per il VRP – Taburoute
Taburoute (Gendreau, Hertz e Laporte, 1994) adatta il Tabu Search al VRP,
introducendo una serie di tecniche non triviali
Sia S = (R1 , R2 , . . . , Rm ) una soluzione ammissibile per il VRP di m route
Ogni route r è del tipo Rr = (0, i1 , . . . , i|Rr |−2 , 0). Usiamo la notazione
(i, j) ∈ Rr se i e j sono due vertici consecutivi in Rr .
Si associano ad ogni soluzione S le seguenti due funzioni obiettivo (funzioni
di fitness):
X X
cij
F1 (S) =
r ∈S (i ,j)∈Rr
F2 (S) = F1 (S) + α
X
r ∈S
"
max 0,
X
i ∈Rr
MOLP – Parte I
qi − Q
#!
, con α ∈ R +
65 / 89
7. Algoritmi euristici per il VRP
Mentre F 1 valuta solo il costo della soluzione, F 2 cerca di tenere in conto il
livello di inammissibilità di una soluzione (in termini di eccesso di carico)
In questo modo l’algoritmo si può muovere all’esterno della regione
ammissibile, e quindi avere maggiore libertà di ricerca
MOLP – Parte I
66 / 89
7. Algoritmi euristici per il VRP
Costruzione della soluzione iniziale
Taburoute costruisce una soluzione iniziale attraverso due algoritmi
Algoritmo 1 (Savings):
si costruiscono n route del tipo Rr = (0, r , 0), r = 1, . . . , n.
Si fondono tra loro le route utilizzando il criterio dei savings fino a quando si
ottengono m route (m=numero dei veicoli)
Nelle ultime iterazioni si accettano anche route non ammissibili pur di
raggiungere m
MOLP – Parte I
67 / 89
7. Algoritmi euristici per il VRP
Algoritmo 2 (Sweep): valido solo per problemi euclidei (i clienti sono punti
nello spazio e i costi sugli archi sono le distanze euclidee tra i punti)
raggio iniziale
Si ordinano i clienti per
angoli crescenti da un
raggio iniziale (casuale)
Si collega la prima route al
primo cliente e via via ai
successivi, fino a quando il
vincolo sulla capacità non è
violato. Si reitera con le
route successive
raggio iniziale
L’ultima route può essere
infeasible
R4
R1
R3
R2
MOLP – Parte I
68 / 89
7. Algoritmi euristici per il VRP
Iterazione principale
Neighborhood: rimuovi il cliente i dalla sua route attuale e inseriscilo in una
nuova route r ; ottimizza le due route con versione ridotta 4-opt
Indichiamo con (i, r ) l’operazione (mossa) di inserimento di i in r
Iterazione t del Tabu Search:
Step 1. if (mod(t, 10)=0) then
if (precedenti 10 soluzioni sono tutte ammissibili) then α = α/2
if (precedenti 10 soluzioni sono tutte non ammissibili) then α = 2α
end if
Step 2. Per ogni cliente i ∈ V ′ :
- Considera tutte le mosse non tabu (i, r ), dove r è una route
di S che contiene almeno uno dei p clienti più vicini ad i
- Sia Φ l’insieme delle soluzioni prodotte
- Determina la soluzione S ′ tale che F2 (S ′ ) = min
{F2 (S ′′ )}
′′
S ∈Φ
Step 2. Sia (i, r ∗ ), con r ∗ ∈ S, la mossa che produce S ′
- if (F2 (S ′ ) < F2 (S ∗ )) then S ∗ = S ′
- if (S ′ ammissibile e F1 (S ′ ) < F1 (S ∗F )) then S ∗F = S ′
- Poni S = S ′ e dichiara tabu per θ iterazioni la mossa (i, r ∗ )
MOLP – Parte I
69 / 89
7. Algoritmi euristici per il VRP
Algoritmo Taburoute
Step 1. Inizializzazione
Sia m il numero di veicoli;
Sia S la soluzione iniziale trovata con algoritmi 1 e 2
Poni S ∗ = S (S ∗ è la miglior soluzione prodotta per F2 )
if (S è ammissibile) then poni S ∗F = S
(S ∗F è la miglior soluzione ammissibile prodotta per F1 )
Inizializza a 0 una matrice D di [n × m] valori
Poni α = 1, t = 0, p = 7 e θ = 10
Step 2. Ciclo principale
for t = 1 to tmax = 50n do
Esegui iterazione t; (vedi slide precedente)
Intensificazione:
if F1 (S ∗F è migliorata) then poni p = 2p per un’iterazione
Diversificazione:
Sia (i, r ) la mossa effettuata, poni D(i, r ) := D(i, r ) + 1
(penalizza le successive mosse (i, r ) di un fattore D(i, r )/t)
Step 3. Restituisci S ∗F
MOLP – Parte I
70 / 89
7. Algoritmi euristici per il VRP
MOLP – Parte I
71 / 89
7. Algoritmi euristici per il VRP
Applicazione di Taburoute al 2L-CVRP
Sia S = (R1 , R2 , . . . , Rk ) una soluzione per il 2L-CVRP, e siano
X X
cij
F1 (S) =
r ∈S (i ,j)∈Rr
F2 (S) = F1 (S) + α
X
r ∈S
"
max 0,
X
qi − Q
i ∈Rr
#!
X
+β
max [0, h(Rr ) − H]
r ∈S
!
dove α ∈ R + , β ∈ R + , H = lunghezza veicolo e h(Rr ) = lunghezza del
carico sul veicolo r (determinata in modo euristico)
Con F 2 si
accettano soluzioni
non ammissibili sia
per il peso che per
il caricamento degli
oggetti
(a)
(b)
y
h(R)
H
I 44
I 43
(c)
y
y
H
H
h(R)
I 41
I 41
h(R)
I 43
I 42
I 53
I 42
I 53
I 52
I 51
0
I 52
I 42
I 53
I 52
I 51
W x
MOLP – Parte I
0
I 44
W x
0
I 41
I 44
I 51
I 43
W x
72 / 89
8. Problemi di localizzazione di servizi
Problemi di Localizzazione di Servizi
(Facility Location Problems)
MOLP – Parte I
73 / 89
8. Problemi di localizzazione di servizi
Facility Location Problems
Dato un insieme di clienti richiedenti una data domanda di merce e dato un
insieme di possibili siti per la costruzione di servizi (depositi), determinare
l’insieme di siti che soddisfi le domande con costo minimo
Sono una classe di problemi molto generale, che raggruppa diversi possibili
sottoproblemi
Sono problemi “strategici”, che, a differenza del VRP, non devono essere
risolto quotidianamente ma solo in determinate occasioni. Si accettano
quindi tempi di esecuzione più elevati
Normalmente si considerano due tipologie di costi:
-) Costi di costruzione del deposito
-) Costi di servizio dai clienti al deposito
Nei problemi reali è necessario tenere in considerazione tutta una serie di
vincoli aggiuntivi:
-) Problematiche territoriali
-) Esigenze aziendali (ad esempio disponibilità di manodopera)
-) . . .
MOLP – Parte I
74 / 89
8. Problemi di localizzazione di servizi
Possibili applicazioni
I problemi di localizzazione possono comparire in due fasi:
-) Quando un’azienda si posiziona in una nuova area geografica.
-) Quando un’azienda vuole valutare il rendimento di una struttura:
Ad esempio, per conoscere il vantaggio dato da un deposito esistente, si
considera la differenza tra le soluzioni ottime del problema con e senza il
deposito
lo stesso avviene per la costruzione di un nuovo deposito
Esempi di possibili applicazioni:
-) Costruzione di depositi intermedi nei processi di trasporto:
Magazzini intermedi per grande distribuzione
Prodotti petroliferi, . . .
-) Costruzione di depositi rivolti a una clientela (nota che in questo caso i costi
di servizio cliente-deposito non sono, solitamente, costi interni all’azienda):
Supermercati
Banche
Stazioni di servizio, . . .
-) Hub per flotte aeree nazionali/internazionali
-) Punti di snodo in reti di telecomunicazioni
-) Discariche o inceneritori, . . .
MOLP – Parte I
75 / 89
8. Problemi di localizzazione di servizi
Principali problemi
Esistono varie tipologie di problemi, derivanti da diverse assunzioni sui costi e
sugli assegnamenti dei clienti ai depositi. Di seguito alcuni esempi
Uncapacitated Facility Location Problem:
I depositi hanno una capacità produttiva supposta infinita
(Anche un solo deposito può soddisfare le richieste di tutti i clienti)
Presenti costi di costruzione e di servizio
Capacitated Facility Location Problem:
Ogni deposito j ha una capacità produttiva massima Qj
La domanda di un cliente deve essere soddisfatta interamente da un deposito
Capacitated Facility Location Problem con integrazione tra depositi:
Ogni deposito j ha una capacità produttiva massima Qj
La domanda di un singolo cliente può essere soddisfatta da più depositi
P-Median Problem:
Tutti i depositi hanno stesso costo di costruzione
Devo scegliere esattamente P siti
MOLP – Parte I
76 / 89
8. Problemi di localizzazione di servizi
Notazione
Nel seguito affrontiamo il Capacitated Facility Location Problem senza
integrazione tra depositi (CFLP)
Definizioni principali:
N = {1, . . . , n} = insieme dei clienti
M = {1, . . . , m} = insieme dei possibili siti di costruzione di un deposito
V = N ∪ M = insieme dei vertici del grafo
qi = domanda associata al cliente i, ∀i ∈ N
Qj = capacità associata al deposito j, ∀j ∈ M
dj = costo attivazione del deposito j, ∀j ∈ M
cij = costo di servizio dal cliente i al deposito j, ∀i ∈ N, ∀j ∈ M
Alcune assunzioni:
Domande e capacità positive: qi > 0, ∀i ∈ N; Qj > 0, ∀j ∈ M
Le domande possono essere soddisfatte: ∃j P
∈ M : Qj ≥P
qi , ∀i ∈ N
La domanda totale può essere soddisfatta:
q
≤
i
i ∈N
j∈M Qj
Tutti i costi sono positivi: dj ≥ 0, ∀j ∈ M; cij ≥ 0, ∀i ∈ N, ∀j ∈ M
MOLP – Parte I
77 / 89
8. Problemi di localizzazione di servizi
Formulazione a due indici
Per ogni sito di possibile costruzione di un deposito, si definisce la variabile
1 se il deposito j è costruito,
yj =
0 altrimenti
Per ogni lato {i, j}, si definisce la variabile:
1 se il cliente i è servito dal deposito j,
xij =
0 altrimenti
La formulazione a due indici per il CFLP risulta essere la seguente:
X
XX
z(TI ) = Min
dj yj +
cij xij
s.t.
X
(45)
j∈M i ∈N
j∈M
xij = 1
∀i ∈ N
(46)
j∈M
X
qi xij ≤ Qj yj
∀j ∈ M
(47)
i ∈N
yj ∈ {0, 1} ∀j ∈ M
(48)
xij ∈ {0, 1} ∀i ∈ N, ∀j ∈ M
(49)
MOLP – Parte I
78 / 89
8. Problemi di localizzazione di servizi
La funzione obiettivo (45) tiene conto sia dei costi di attivazione dei depositi
che dei costi di servizio cliente-deposito
I vincoli (46) impongono che ogni cliente sia assegnato esattamente ad un
deposito
I vincoli (47) impongono che la somma delle domande associate ad un
deposito non ecceda la data capacità
La formulazione deriva strettamente da quella sviluppata per il Bin Packing
Problem (BPP). Si può notare infatti che il Facility Location può essere
trasformato in un BPP semplicemente imponendo:
dj = 1,
∀j ∈ M,
cij = 0,
∀i ∈ N, ∀j ∈ M.
MOLP – Parte I
79 / 89
8. Problemi di localizzazione di servizi
Miglioramento del rilassamento continuo
La formulazione (TI) può essere resa più forte inserendo i seguenti vincoli:
xij ≤ yj
∀i ∈ N, ∀j ∈ M
(50)
Supponiamo ad esempio che per un dato deposito j ∗ si abbia Qj ∗ = 2 e
yj ∗ = 1, e che per una coppia di clienti i1 , i2 si abbia qi1 = qi2 = 1. I vincoli
(46) e (50) risultano essere:
xi2,j*
xi1,j*<=1
xi2,j*<=1
xi1,j*+xi2,j*<=2
xi1,j*
MOLP – Parte I
80 / 89
8. Problemi di localizzazione di servizi
I vincoli (46) sono sufficienti ad esprimere la soluzione ottimale nella
programmazione lineare intera. I vincoli (50) aiutano però nella
programmazione lineare (avvicinando il politopo alla sua chiusura convessa)
Nel caso yj ∗ = 1/2, si ha infatti:
xi2,j*
xi1,j*<=1/2
xi2,j*<=1/2
xi1,j*+xi2,j*<=1
xi1,j*
Il miglioramento del rilassamento lineare è controbilanciato dal numero
elevato (ma pur sempre polinomiale) di vincoli da inserire (ovvero nm)
MOLP – Parte I
81 / 89
8. Problemi di localizzazione di servizi
Formulazione Set Partitioning
Definizioni:
Pj = insieme dei possibili cluster associati al deposito j (insieme di clienti la
cui capacità non eccede Qj ), ∀j ∈ M
R = P1 ∪ P2 ∪ · · · ∪ Pm = insieme di tutti i possibili cluster
Sia [ai ℓ ] una matrice tale che:
1 se il cluster ℓ contiene il cliente i;
ai ℓ =
0 altrimenti
∀ℓ ∈ R, ∀i ∈ N
Sia ĉℓ il costo di un cluster calcolato come:
X
ĉℓ = dj +
ai ℓ cij
i ∈N
∀ℓ ∈ Pj , ∀j ∈ M, ∀i ∈ N
MOLP – Parte I
82 / 89
8. Problemi di localizzazione di servizi
Definiamo la variabile decisionale yℓ come:
1 se il cluster ℓ è scelto;
yℓ =
0 altrimenti
∀ℓ ∈ R
La formulazione di Set Partitioning per il CFLP risulta essere la seguente:
z(SP) = Min
X
(51)
ĉℓ yℓ
ℓ∈R
s.t.
X
ai ℓ yℓ = 1,
∀i ∈ N
(52)
ℓ∈R
X
yℓ ≤ 1,
∀j ∈ M
(53)
yℓ ∈ {0, 1},
∀ℓ ∈ R
(54)
ℓ∈Pj
MOLP – Parte I
83 / 89
8. Problemi di localizzazione di servizi
La formulazione di Set Covering risulta coincidente con la precedente
formulazione di Set Partitioning, ad eccezione dei vincoli (52), sostituiti da:
X
ai ℓ yℓ ≥ 1,
∀i ∈ N
(55)
ℓ∈R
La due formulazioni sono equivalenti (ovvero danno lo stesso valore ottimo)
nel caso in cui:
cij ≥ 0, ∀i ∈ N, ∀j ∈ M.
MOLP – Parte I
84 / 89
8. Problemi di localizzazione di servizi
Algoritmo euristico basato sul GAP
Il seguente algoritmo si basa sul Generalized Assignment Problem (GAP)
0. Inizializzazione: z := ∞
1. for t = 1 to tmax do:
1.1 Seleziona un sottinsieme J ⊆ M di siti e costruisci i rispettivi depositi
1.2 Assegna i clienti ai depositi risolvendo il seguente GAP:
Assegna i clienti in N ai depositi in J usando la formulazione TI e:
sostituendo l’insieme M con J e rimuovendo i vincoli (50) (se inseriti),
ponendo yj = 1 ∀j ∈ J e yj = 0 ∀j ∈
/ J.
La formulazione del GAP risulta essere:
X
X
X
z(TI ) = Min
cij xij (+
dj )
j∈J
i ∈N
j∈J
X
s.t.
xij = 1 ∀i ∈ N
j∈J
X
qi xij ≤ Qj ∀j ∈ J
i ∈N
xij ∈ {0, 1}
∀i ∈ N, ∀j ∈ M
1.3 Applica metodi di ricerca locale
1.4 Sia z(t) la soluzione ottenuta. if z(t) < z then z := z(t).
2. Resituisci z
MOLP – Parte I
85 / 89
8. Problemi di localizzazione di servizi
Il GAP è un problema NP-difficile, e può quindi essere risolto al passo 1.2 o
in modo euristico o in modo esatto con un tempo limite
I criteri per scegliere l’insieme iniziale dei nodi J al passo 1.1 si possono
basare su varie intuizioni, ad esempio:
Random
Ordina i siti j ∈ M per costi dj crescenti e seleziona i primi |J| siti
Per ogni sito j:
Ordina i clienti i per valori crescenti di cij ;
X
e l’insieme massimale dei primi clienti per cui
Sia M
q ≤ Qj ;
e i
i ∈M
X
Sia Cej =
cij ;
e
i ∈M
Ordina i siti j ∈ M per dj + Cej crescenti e seleziona i primi |J| siti
Ordina i siti j ∈ M per αdj + (1 − α)Cej crescenti, e seleziona i primi |J| siti
(con 0 < α < 1)
Al passo 1.3, dato un insieme di partenza J si può creare facilmente una
mossa che porti ad un nuovo insieme J ′ (ad esempio scambiando un j ∈ J
con un h ∈
/ J)
MOLP – Parte I
86 / 89
8. Problemi di localizzazione di servizi
Rilassamenti
Discutiamo solo due semplici rilassamenti basati sulla formulazione TI
Capacitated Facility Location Problem con integrazione tra depositi:
Se nella formulazione TI si rilassano in modo continuo i vincoli di interezza
(49) sulle variabili x si ottiene:
X
X
X
cij xij
dj yj +
z(LB1) = Min
j∈M
i ∈N
j∈M
X
xij = 1, ∀i ∈ N
s.t.
j∈M
X
qi xij ≤ Qj yj , ∀j ∈ M
i ∈N
yj ∈ {0, 1},
∀j ∈ M
0 ≤ xij ≤ 1,
∀i ∈ N, ∀j ∈ M
LB1 rappresenta il Capacitated Facility Location Problem con integrazione tra
depositi (la domanda dei clienti può essere suddivisa tra più depositi)
La risoluzione di LB1 è difficile per la presenza delle variabili y
MOLP – Parte I
87 / 89
8. Problemi di localizzazione di servizi
Uncapacitated Facility Location Problem:
P
se nella formulazione TI si suppone di avere Qj = ∞ (o Qj ≥ i ∈N qi ),
∀j ∈ M, i vincoli di tipo (47) possono essere eliminati. In questo caso si
ottiene:
X
X
X
cij xij
dj yj +
z(LB2) = Min
j∈M
i ∈N
j∈M
X
xij = 1, ∀i ∈ N
s.t.
j∈M
xij ≤ yj ,
∀i ∈ N, ∀j ∈ M
yj ∈ {0, 1},
∀j ∈ M
xij ∈ {0, 1},
∀i ∈ N, ∀j ∈ M
LB2 rappresenta l’Uncapacitated Facility Location Problem
Nota che i vincoli xij ≤ yj sono indispensabili in conseguenza dell’eliminazione
dei vincoli (47)
Nota inoltre che, date le variabili yj , le variabili xij sono facilmente
determinabili: ogni cliente è assegnato al deposito più vicino tra quelli costruiti:
1 se yj = 1 e cij ≤ cih , ∀h ∈ M : yh = 1;
xij =
0 altrimenti
La risoluzione di LB2 è difficile per la presenza delle variabili y
MOLP – Parte I
88 / 89
8. Problemi di localizzazione di servizi
Branch and Bound per CFLP
Sia i rilassamenti che gli euristici per il CFLP possono essere inseriti nei nodi
di un albero decisionale, ottenendo un algoritmo branch and bound:
y1=0
y1=1
Fase 1
Nella prima fase
sono fissati i siti di
costruzione e nella
seconda sono fissati
gli assegnamenti
cliente-deposito
y2=0
x11=0
y2=1
x11=1
Fase 2
MOLP – Parte I
89 / 89