applicazione di Tabu Search e Set Covering a trasporto su bisarca

Transcript

applicazione di Tabu Search e Set Covering a trasporto su bisarca
Università degli Studi di Modena e Reggio Emilia
Ingegneria di Reggio Emilia
Estratto della Tesi di Laurea di Simone Falavigna
Algoritmi euristici per il
caricamento e l’instradamento di
una flotta di bisarche
Argomenti trattati
• Introduzione al problema
• Considerazioni preliminari
• Euristico iniziale e ricerche locali
• Tabu Search
• Conclusioni
• Possibili sviluppi futuri
Il Gruppo Mercurio S.p.A.
• Il Gruppo Mercurio S.p.A. è leader in Europa nel
trasporto di veicoli
I Parchi Mercurio
• Piazzali adibiti allo stoccaggio dei veicoli per un
periodo variabile da pochi giorni fino a qualche mese
Sette Parchi in Italia
• San Polo di Torrile (PR)
• Bologna
• Livorno
• Civitavecchia (RM)
• Salerno
• Palermo
• Catania
La bisarca
• La capacità di carico di una bisarca è variabile e
dipende dalla tipologia
La flotta Mercurio
MERCURIO
PADRONCINI
Forbice
111
113
Pesante
36
---
Motrice
5
12
Centina
5
---
• Forbice: indicato per il trasporto di automobili. Composta da
motrice e rimorchio
• Pesante: indicato per il trasporto dei camion. Composta da
motrice e rimorchio
• Motrice: indicata per il trasporto di automobili. Ha una
capacità di carico ridotta
• Centina: indicata per trasporti speciali. Dotata di copertura
per proteggere i veicoli
Il trasporto
• Il trasporto effettuato con bisarche si realizza:
– Da Punti di prelievo
 Parchi Mercurio oppure stabilimenti del Gruppo Fiat
– A Punti di consegna
 Concessionari oppure Parchi Mercurio
• 1500/2000 veicoli trasportati ogni giorno
Caricamento
• Caricamento: stabilire quanti e quali veicoli caricare
su ogni bisarca disponibile
• Elenco veicoli sbloccati
• Per ogni veicolo è noto:
– Data di sbloccaggio
– Punto di prelievo
– Punto di consegna
• Numero e tipologia delle
bisarche disponibili
• Liste dei carichi
relative ai diversi
punti di prelievo
– Impiego massimo
della capacità delle
bisarche
– Attenzione alle
anzianità
Caricamento
Slot 1
Slot 3
Slot 2
Slot 4
CLASSE
S
L
O
T
1
2
3
4
5
6
7
8
9
10
1
1.000
0.904
0.891
0.897
0.911
1.000
1.000
1.000
1.000
1.000
2
1.000
0.937
0.917
0.858
0.934
0.867
1.000
1.000
1.000
1.000
3
1.000
1.000
0.995
0.945
0.915
0.917
1.000
1.000
1.000
1.000
4
1.000
0.945
0.828
1.000
1.000
1.000
1.000
1.000
1.000
0.973
Instradamento
• Instradamento: determinare il percorso effettuato
dalle bisarche e il loro riposizionamento
Bisarche
disponibili in un
determinato
punto di prelievo
Assegnazione
Lista dei carichi
relativa al punto di
prelievo considerato
• È necessario stabilire:
– L’ordine con cui i concessionari sono visitati
– Il punto di riposizionamento
Step 2
• Introduzione al problema
• Considerazioni preliminari
Ipotesi semplificative applicate
• Considerato solo il Parco di San Polo di Torrile
• Mezzi considerati: forbice e motrice
Media
Totale
%
Forbice
90
2070
91%
Motrice
7
171
7%
Pesante
2
36
2%
Centina
0
6
0%
99
2283
100%
Totale
Ipotesi semplificative applicate
• Considerato solo il Parco di San Polo di Torrile
• Mezzi considerati: forbice e motrice
• I concessionari/clienti sono identificati dalla città
– Costo della tratta tra due concessionari della stessa città
supposto pari a 0
Destinazione
ROMA
ROMA
N° veicoli
Modello
4
AGILA
1
ANTARA
1
ASTRA SW
1
CORSA
1
ZAFIRA
1
107
Ipotesi semplificative applicate
• Considerato solo il Parco di San Polo di Torrile
• Mezzi considerati: forbice e motrice
• I concessionari/clienti sono identificati dalla città
– Costo della tratta tra due concessionari della stessa città
supposto pari a 0
• Distanze tra le città sono approssimate/linea d’aria,
non stradali
Definizione dell’orizzonte temporale
• Istanza considerata
– Intero mese di luglio 2009
• Possibili scenari per la pianificazione delle spedizioni
1 Giorno
Senza riposizionamento
Con riposizionamento

+ Giorni
Definizione degli ordini
• Sono considerate due tipologie di ordini:
– Ordini di consegna
– Ordini di ritiro
 Possono essere eseguiti solo dopo aver consegnato tutti
gli ordini assegnati ad una bisarca
 Al massimo un ordine di ritiro per ogni bisarca
• Ordini da pianificare per ogni giorno sono stati
estrapolati dalle liste di carico
Creazione degli ordini
Lista di carico MERCURIO
1
ID ordine
Destinazione N° veicoli
Modello
ROMA
4
AGILA
3
ID gg sblocco
1
ANTARA
8
1
ASTRA SW
ID gg consegna
1
CORSA
5
N° linee ordine
1
ZAFIRA
N° riga
N° veicoli
ID modello
1
107
1
4
121
2
1
122
3
1
124
4
1
126
5
1
141
ROMA
2
424
424
ID ordine
ID città
3
ID gg sblocco
8
ID gg consegna
1
N° linee ordine
N° riga
N° veicoli
ID modello
1
1
142
ID città
Parametri del problema
• Ogni veicolo ha un indice di carico monofigura relativo
al forbice ed uno relativo alla motrice
• Ogni ordine ha un indice di carico relativo al forbice ed
uno relativo alla motrice
Forbice
Ordine
Indice di
carico
dell’ordine
Motrice
Parametri del problema
• Ogni veicolo ha un indice di carico monofigura relativo
al forbice ed uno relativo alla motrice
• Ogni ordine ha un indice di carico relativo al forbice ed
uno relativo alla motrice
• Ogni bisarca ha un indice di riempimento
– L’indice di riempimento di una bisarca non può superare il
valore massimo (MAXR)
– Il valore di MAXR è stato fissato pari a 1,15 per tutte le
prossime simulazioni
Step 3
• Introduzione al problema
• Considerazioni preliminari
• Euristico iniziale e ricerche locali
Euristico iniziale
• Assegna tutti gli ordini di consegna e di ritiro della
giornata
• Si basa sul criterio closest neighbor
• Costruisce una prima soluzione
Euristico iniziale
Input: ordini, matrice delle distanze, bisarche disponibili, indici di carico
Output: soluzione migliore e tempi (costi, IR, route, carichi elaborati…)
while il numero di ordini di consegna rimanenti non è nullo
inizializza una bisarca di tipologia casuale
inizializza la route con un ordine casuale
while la bisarca non è satura
scegli un ordine di consegna in base al criterio closest neighbor
assegna l’ordine alla route
end while
end while
while il numero di ordini di ritiro rimanenti non è nullo
scegli l’ordine di ritiro in base al criterio closest neighbor
assegna l’ordine alla route
end while
calcola i costi delle route elaborate
Algoritmi di ricerca locale
• L’obiettivo della ricerca locale è quello di ottimizzare la
soluzione ottenuta dall’euristico iniziale
Euristico
iniziale
Move
Swap
Move&
Swap
Move
Situazione iniziale
i=3
Bisarca j:
Bisarca j2:
1
7
2
8
3
4
9
Situazione iniziale
Situazione finale
1
1
2
i2=2
2
Bisarca j:
Situazione finale
Bisarca j:
3
4
i=3
4
Risparmio  c(i  1, i)  c(i, i  1)  c(i  1, i  1)
1
2
4
7
Bisarca j2:
7
3
8
7
Bisarca j2:
8
i2=2
9
9
9
CostoAgg  c(i 2  1, i)  c(i, i 2  1)  c(i 2  1, i 2  1)
3
8
Situazione iniziale
Swap
Situazione finale
i=3
Bisarca j:
Bisarca j2:
1
2
3
7
8
9
4
1
2
8
7
3
9
4
i2=2
Situazione iniziale
Situazione finale
1
1
2
2
Bisarca j:
Bisarca j:
3
4
8
i=3
Risparmio _ j1  c(i  1, i)  c(i, i  1)
7
Bisarca j2:
4
CostoAgg _ j1  c(i  1, i 2)  c(i 2, i  1)
7
Bisarca j2:
8
3
i2=2
9
Risparmio _ j 2  c(i 2  1, i 2)  c(i 2, i 2  1)
9
CostoAgg _ j 2  c(i 2  1, i)  c(i  1, i 2  1)
Move&Swap
• Implementa le logiche di Move e Swap
• Itera finché la funzione obiettivo diminuisce,
richiamando alternativamente Move e Swap
Move&Swap
Inizia Move&Swap
Move
Prima
iterazione
Swap
no
FO è diminuita?
si
Move
no
FO è diminuita?
Iterazioni
successive
si
Swap
FO è diminuita?
no
Termina Move&Swap
si
Risultati computazionali
980.306
Costo
totale (€)
Euristico+Move
Euristico+Swap
Euristico+M&S
Tempo
medio (s)
Costo
totale (€)
Tempo
medio (s)
Costo
totale (€)
Tempo
medio (s)
Costo
totale (€)
Tempo
medio (s)
0,02
1.023.192
0,07
1.021.376
0,61
980.050
0,60
1.084.398
Costo totale mensile VS tempo di
elaborazione medio
1,100,000
0.7
1,084,398
1,080,000
0.6
1,060,000
0.5
1,040,000
1,023,192
1,020,000
1,000,000
980,000
1,021,376
980,306
0.4
980,050
0.3
0.2
960,000
0.1
940,000
920,000
0
Mercurio
Euristico
iniziale
Move
Swap
Euristici proposti
Move&Swap
Tempo di
elaborazione
medio (sec)
Costo
totale (€)
Euristico iniziale
Costo totale
mensile (€)
Mercurio
(costi fittizi)
Step 4
• Introduzione al problema
• Considerazioni preliminari
• Euristico iniziale e ricerche locali
• Tabu Search
Tabu Search
• L’obiettivo del Tabu Search è quello di estendere la ricerca
locale
Euristico iniziale
Move&Swap
Tabu Search
• Consente cambiamenti peggiorativi
• Blocca le ultime mosse effettuate per un certo numero di
iterazioni
• Permette di esplorare più approfonditamente lo spazio delle
soluzioni rispetto alla ricerca locale
Risultati computazionali
Costo totale mensile (€)
• Parametri del Tabu Search:
(costi fittizi)
Tenure=800
Tabu Search - Andamento di costo totale mensile
al variare del numero di iterazioni
990,000
Soluzione Mercurio
980,000
Miglior soluzione dell’algoritmo Move&Swap
970,000
960,000
950,000
940,000
930,000
0
10
20
30
40
50
60
70
Iterazioni (x1.000)
80
90
100
110
Risultati computazionali
Numero di
iterazioni
Costo
totale
(€)
Tempo
medio
(sec)
0
980.050
0,60
800
957.985
3,68
1.000
955.905
4,43
2.000
949.918
8,24
4.000
943.818
15,47
6.000
941.542
22,68
8.000
940.345
29,84
10.000
939.837
36,91
20.000
937.136
72,25
40.000
935.777
141,78
60.000
934.561
210,74
80.000
934.242
279,70
100.000
933.782
360,15
(costi fittizi)
Step 5
• Introduzione al problema
• Considerazioni preliminari
• Euristico iniziale e ricerche locali
• Tabu Search
• Conclusioni
Conclusioni
• I risultati emersi nella tesi sono incoraggianti:
– Ricerca locale, Tabu Search e modello di Set Covering hanno
ottenuto risultati quantitativamente migliori rispetto alla
soluzione elaborata da Mercurio
• I tempi computazionali sono molto bassi
– Nei casi peggiori si tratta di qualche minuto
Step 6
• Introduzione al problema
• Considerazioni preliminari
• Euristico iniziale e ricerche locali
• Tabu Search
• Conclusioni
• Possibili sviluppi futuri
Possibili sviluppi futuri
• Sviluppare un algoritmo che risolva il problema
Mercurio eliminando le semplificazioni:
– Ottimizzazione di tutti i Parchi Mercurio italiani
– Introduzione delle tipologie di bisarca trascurate
– Inserimento dei riposizionamenti
– Orizzonte temporale delle simulazioni che consideri più giorni
– Flessibilità nella selezione degli ordini giornalieri da pianificare
Ulteriori sviluppi
• Problema di caricamento:
– Implementazione di un modello matematico tipo “Multiple
Knapsack”
– Obiettivo: controllare se un insieme di veicoli possa essere
completamente contenuto negli scompartimenti di una bisarca
• Problema di instradamento:
– Implementazione di un modello matematico tipo “Set
Covering”
– Obiettivo: individuare i cammini minimi in modo tale da
soddisfare gli ordini della giornata
Modello Set Covering – 1 gg (1)
Euristico iniziale
Move&Swap
Tabu Search
Set Covering
• L’obiettivo del modello è quello di definire un
sottoinsieme di pattern a costo minimo, tale che ogni
ordine sia assegnato ad almeno un pattern
Modello Set Covering – 1 gg (2)
• Il problema di caricamento e di instradamento può essere
ricondotto ad un problema di Set Covering
• Si indichi con:
– p un pattern (p=1,…,q)
– i un ordine (i=1,..,m)
– j una tipologia di bisarca (b=1,…,z)
• Si definisca:
– t  t j  vettore del numero di bisarche della tipologia j disponibili
– c  c p  vettore dei costi, dove cp rappresenta il costo del pattern p
1
b

– jp 
0
1
– aip  
0
se
p èpassegnato
alla bisarca
di tipo
j
seililpattern
pattern
è assegnato
ad una
bisarca
di tipo j
altrimenti
altrimenti
se
pattern
p contiene
i
se ililpattern
p contiene
l' ordinel’ordine
i
altrimenti
altrimenti
Modello Set Covering – 1 gg (3)
• L’obiettivo del modello è quello di definire un sottoinsieme
di pattern a costo minimo, tale che ogni ordine sia
assegnato ad almeno un pattern
• Il modello matematico proposto:
q
min  c p x p
(1)
p 1
q
a
p 1
ip
xp  1
i=1,…, m
(2)
jp
xp  t j
j=1,…, z
(3)
q
b
p 1
Modello Set Covering – 1 gg (4)
• Costi, bisarche e pattern sono inizializzati con le elaborazioni
degli algoritmi Move&Swap e Tabu Search
Euristico iniziale
Move&Swap
Genera costi, bisarche e pattern relativi alla
soluzione migliore di Move&Swap
Tabu Search
Genera costi, bisarche e pattern diversi per
ogni iterazione del Tabu Search
Set Covering
• Il modello di Set Covering è in grado di ottimizzare
ulteriormente la soluzione ottenuta dal Tabu Search
– Nel peggiore dei casi restituisce una soluzione uguale a
quella migliore ottenuta dal Tabu Search
Risultati preliminari Set Covering
(costi fittizi)
• Istanza dell’8 luglio ‘09
Andamento del costo giornaliero in Tabu Search
e Set Covering
42,000
Miglior soluzione dell’algoritmo Tabu Search – 20.000 Iter.
Costo giornaliero (€)
41,900
41,800
41,700
41,600
2,3 sec
41,500
41,400
31,5 sec
41,300
0
2,500
5,000
7,500
Pattern
10,000
12,500
15,000