20.06.2013 Views

1 - Descrizione: Descrizione: Descrizione: Descrizione - Università ...

1 - Descrizione: Descrizione: Descrizione: Descrizione - Università ...

1 - Descrizione: Descrizione: Descrizione: Descrizione - Università ...

SHOW MORE
SHOW LESS

Trasformi i suoi PDF in rivista online e aumenti il suo fatturato!

Ottimizzi le sue riviste online per SEO, utilizza backlink potenti e contenuti multimediali per aumentare la sua visibilità e il suo fatturato.

<strong>Università</strong> degli Studi di Modena e Reggio Emilia<br />

Facoltà di Ingegneria di Reggio Emilia<br />

Corso di Laurea Specialistica in Ingegneria Gestionale<br />

Un approccio Matheuristic per il<br />

caricamento e l’instradamento di<br />

una flotta di bisarche<br />

M. Iori, S. Falavigna, M. Dell’Amico


Argomenti trattati<br />

• Introduzione<br />

• <strong>Descrizione</strong> del problema<br />

• Iterated Local Search<br />

• Risultati computazionali<br />

• Conclusioni


Il Gruppo Mercurio S.p.A.<br />

Il Gruppo Mercurio è leader in Europa nel trasporto di veicoli


Il Gruppo Mercurio S.p.A.<br />

Il Gruppo Mercurio è leader in Europa nel trasporto di veicoli<br />

Principali attività:<br />

• Ricezione dei veicoli solitamente via<br />

treno<br />

• Stoccaggio dei veicoli nei Parchi<br />

• Consegna ai concessionari


I Parchi Mercurio<br />

• Piazzali adibiti allo stoccaggio dei veicoli per un<br />

periodo variabile da pochi giorni fino a qualche mese


Sette Parchi in Italia<br />

• San Polo di Torrile (PR)<br />

• Bologna<br />

• Livorno<br />

• Civitavecchia (RM)<br />

•Salerno<br />

•Palermo<br />

• Catania


Come si trasportano i veicoli?<br />

• La capacità di carico è variabile e dipende dalla tipologia<br />

• Per aumentare la capacità:<br />

– Piccoli pianalini che permettono la rotazione dei veicoli<br />

– Pianali superiori mobili<br />

– Estensioni anteriori e posteriori


La flotta Mercurio<br />

Mercurio Padroncini<br />

Forbice 111 113<br />

Pesante 36 ---<br />

Motrice 5 12<br />

Centina 5 ---<br />

• Forbice: indicata per il trasporto di automobili. Composta da<br />

motrice e rimorchio


La flotta Mercurio<br />

Mercurio Padroncini<br />

Forbice 111 113<br />

Pesante 36 ---<br />

Motrice 5 12<br />

Centina 5 ---<br />

• Pesante: indicata per il trasporto dei camion. Composta da<br />

motrice e rimorchio


La flotta Mercurio<br />

Mercurio Padroncini<br />

Forbice 111 113<br />

Pesante 36 ---<br />

Motrice 5 12<br />

Centina 5 ---<br />

• Motrice: indicata per il trasporto di automobili. Ha una<br />

capacità di carico ridotta


La flotta Mercurio<br />

Mercurio Padroncini<br />

Forbice 111 113<br />

Pesante 36 ---<br />

Motrice 5 12<br />

Centina 5 ---<br />

• Centina: indicata per trasporti speciali. Dotata di copertura<br />

per proteggere i veicoli


Il problema in sintesi<br />

Data una flotta eterogenea di veicoli basati su di un deposito<br />

centrale e un insieme di concessionari che richiedono un determinato<br />

insieme di veicoli, il problema richiede di assegnare i veicoli alle<br />

bisarche e di instradare tali bisarche attraverso la rete stradale al fine di<br />

servire i concessionari con costo minimo. Il problema ammette split<br />

delivery e i carichi devono rispettare il vincolo LIFO.


Il trasporto<br />

• Il trasporto effettuato con bisarche si realizza:<br />

–Da Punti di prelievo<br />

Parchi Mercurio oppure stabilimenti del Gruppo Fiat<br />

–A Punti di consegna<br />

Concessionari oppure Parchi Mercurio<br />

• 1500/2000 veicoli trasportati ogni giorno


Caricamento<br />

• Caricamento: stabilire quanti e quali veicoli caricare<br />

su ogni bisarca disponibile<br />

• Elenco veicoli sbloccati<br />

• Per ogni veicolo è noto:<br />

– Data di sbloccaggio<br />

– Data di consegna<br />

– Punto di prelievo<br />

– Punto di consegna<br />

• Numero e tipologia delle<br />

bisarche disponibili<br />

• Liste dei carichi<br />

relative ai diversi<br />

punti di prelievo<br />

– Impiego massimo<br />

della capacità delle<br />

bisarche<br />

– Attenzione alle<br />

anzianità


Instradamento<br />

• Instradamento: determinare il percorso effettuato<br />

dalle bisarche e il loro riposizionamento<br />

Bisarche<br />

disponibili in un<br />

determinato<br />

punto di prelievo<br />

• È necessario stabilire:<br />

Assegnazione<br />

– L’ordine con cui i concessionari sono visitati<br />

– Il punto di riposizionamento<br />

Lista dei carichi<br />

relativa al punto di<br />

prelievo considerato


Ipotesi applicate<br />

• Considerato solo il Parco di San Polo di Torrile<br />

• Considerato l’intero mese di luglio 2009<br />

• Pianificazione delle spedizioni<br />

– Giornaliera<br />

– Non considerati i riposizionamenti<br />

• Mezzi considerati: forbice e motrice<br />

Media Totale %<br />

Forbice 90 2070 91%<br />

Motrice 7 171 7%<br />

Pesante 2 36 2%<br />

Centina 0 6 0%<br />

Totale 99 2283 100%


Sezione 2<br />

• Introduzione<br />

• <strong>Descrizione</strong> del problema


Input del problema<br />

• un grafo completo G = (N,E)<br />

• un insieme N = {0, …, n}di vertici<br />

il vertice 0 corrisponde al deposito<br />

l’insieme {1, …, n} corrisponde all’insieme dei concessionari<br />

• un costo c ij associato all’arco (i,j)<br />

• una matrice simmetrica che soddisfa la disuguaglianza<br />

trinagolare<br />

• una domanda per ogni concessionario i che consiste in<br />

un insieme di m i veicoli


Input del problema: bisarche<br />

E’ data un flotta eterogenea<br />

di bisarche:<br />

• T tipi differenti di bisarca<br />

• Ogni tipo di bisarca t ha:<br />

un numero Kt di bisarche disponibili<br />

Pt pianali di carico<br />

una capacità di carico Wt (in kg)


Input del problema: veicoli<br />

E’ dato un insieme di veicoli:<br />

• Ogni veicolo k richiesto dal concessionario i:<br />

Peso w ik, lunghezza l ik e altezza h ik<br />

Una forma particolare


Auto-Carrier Transportation Problem<br />

Si definisce una route con una tripletta (R, S, t):<br />

• R è una sequenza di concessionari da visitare<br />

• S i è l’insieme dei veicoli da spedire al concessionario i<br />

• t è la tipologia di bisarca<br />

Il problema (A-CTP) richiede la determinazione di un<br />

insieme di route tali che:<br />

• ogni route abbia un carico ammissibile<br />

• la richiesta dei concessionari sia completamente soddisfatta<br />

• al massimo Kt bisarche siano utilizzate<br />

• la distanza percorsa sia minima


Controllo dell’ammissibilità – Step I<br />

Per determinare l’ammissibilità di una route è proposto<br />

un algoritmo in 3 step che restituisce:<br />

• 1 il carico assegnato alla route è ammissibile<br />

• 0 altrimenti<br />

Step 1<br />

Semplice controllo basato sul peso dei veicoli:<br />

• se la somma dei pesi dei veicoli è più alta della capacità di<br />

una bisarca il carico non è ammissibile


Controllo dell’ammissibilità – Step II<br />

E’ necessario definire:<br />

• omogeneo, un carico che coinvolge modelli identici<br />

• eterogeneo, un carico che coinvolge modelli differenti<br />

• per ogni veicolo k, richiesto dal concessionario i, che deve essere<br />

caricato su una bisarca del tipo t, l’azienda ha fornito:<br />

indice di carico d ikt: numero massimo di modelli identici che possono<br />

essere caricati su di una bisarca


Controllo dell’ammissibilità – Step II<br />

Step 2<br />

Il controllo è basato sugli indici di carico:<br />

if (il carico è omogeneo)<br />

if (la somma degli indici di carico > 1) non ammissibile<br />

else il carico è ammissibile<br />

else (il carico è eterogeneo)<br />

if (la somma degli indici di carico > 1.2) non ammissibile<br />

else è necessario risolvere un modello ILP


I pianali delle bisarche<br />

Ogni pianale di carico p appartenente alla bisarca di tipo t:<br />

• ha una lunghezza L pt e una possibile estensione massima A pt<br />

• ha un pianale h(p) posto a fianco orizzontalmente<br />

• ha un pianale v(p) posto verticalmente al di sotto/sopra<br />

Matrice delle precedenze B tra i pianali<br />

• b pq = 1 se il pianale p precede q<br />

• b pq = 0 altrimenti


Lunghezze dei veicoli<br />

Ogni veicolo k:<br />

• appartiene ad una classe c(k) a seconda della altezza, lunghezza<br />

e forma


Lunghezze dei veicoli<br />

Ogni veicolo k:<br />

• quando caricato sul pianale p della bisarca t ha una lunghezza<br />

equivalente


Lunghezze dei veicoli<br />

Ogni veicolo k:<br />

• appartiene ad una classe c(k) a seconda della altezza, lunghezza<br />

e forma<br />

• quando caricato sul pianale p della bisarca t ha una lunghezza<br />

equivalente<br />

• quando caricato sul pianale p della bisarca t ha una impatto<br />

verticale equivalente


Controllo dell’ammissibilità – Step III (ILP)


Controllo dell’ammissibilità – Step III (B&B)<br />

• I veicoli sono caricati secondo l’ordine di visita dei<br />

concessionari<br />

• Ad ogni livello k, è creato un nodo assegnando il veicolo k<br />

ad un pianale<br />

• L’albero è esplorato con la tecnica depth-first<br />

• 3 differenti versioni del Branch-and-Bound:<br />

1) senza alcun lower bound, enumerazione completa<br />

2) lower bound aggregato su tutti i concessionari<br />

3) lower bound calcolato per ogni concessionario


Sezione 3<br />

• Introduzione<br />

• <strong>Descrizione</strong> del problema<br />

• Iterated Local Search


ILS – Pseudocodice<br />

input: un’istanza I dell’ACT-P<br />

output: miglior soluzione trovata<br />

x = Randomized Closest Neighbor(I)<br />

x best = x<br />

repeat<br />

x’ = Perturbation Heuristic(x)<br />

x’’ = Local Search(x’)<br />

if f(x’’) < f(x best) then<br />

end-if<br />

x = xbest until time limit<br />

return xbest x best = x’’


Randomized Closest Neighbor<br />

• Costruisce una prima soluzione ammissibile<br />

• Riceve in input<br />

– Ordini di consegna<br />

– Numero di bisarche disponibili<br />

– Matrice delle distanze<br />

• Considerando una bisarca alla volta:<br />

– Assegna casualmente il primo concessionario alla route<br />

– Si basa sul criterio closest neighbor<br />

• Reitera finché gli ordini da assegnare oppure le bisarche<br />

disponibili sono esaurite


Local Search<br />

• Ottimizza la soluzione ottenuta dall’euristico iniziale<br />

• Sono state implementate 8 ricerche locali:<br />

• Move 1-0<br />

•Swap 1-1 concessionari<br />

•Swap 2-1<br />

•Swap 1-1<br />

modelli uguali stesso concessionario<br />

•Swap 2-1<br />

• Customer relocation<br />

• Auto-carrier interchange<br />

• Route addition


Move 1-0 – Concessionari<br />

Situazione<br />

iniziale<br />

Risparmioj<br />

1<br />

Bisarca<br />

j<br />

4<br />

= c(<br />

i −1,<br />

i)<br />

+<br />

+ c(<br />

i,<br />

i + 1)<br />

7<br />

Bisarca<br />

j2<br />

9<br />

Risparmioj2<br />

= c(<br />

i2<br />

−1,<br />

i2)<br />

+<br />

+ c(<br />

i,<br />

i2<br />

+ 1)<br />

2<br />

3<br />

8<br />

i=3<br />

i2=2<br />

Situazione<br />

finale<br />

1<br />

Bisarca<br />

j<br />

4<br />

CostoAggj = c(<br />

i −1,<br />

i + 1)<br />

7<br />

Bisarca<br />

j2<br />

9<br />

CostoAggj 2 = c(<br />

i2<br />

−1,<br />

i)<br />

3<br />

2<br />

8<br />

Se l’inserimento è<br />

vantaggioso:<br />

CostoAggj + CostoAggj2<br />

<<br />

Risparmioj + Risparmioj2<br />

Situazione finale iniziale<br />

Bisarca j<br />

1 2 3 4<br />

i2=2<br />

Bisarca j2 7 8 9<br />

i=3


Swap 1-1 – Concessionari<br />

Situazione<br />

iniziale<br />

1<br />

Bisarca<br />

j<br />

4<br />

2<br />

3<br />

Risparmioj = c(<br />

i −1,<br />

i)<br />

+ CostoAggj = c(<br />

i − 1,<br />

i2)<br />

+<br />

+ c(i,i + 1)<br />

+ c(<br />

i2,<br />

i + 1)<br />

7<br />

Bisarca<br />

j2<br />

9<br />

8<br />

i=3<br />

i2=2<br />

Risparmioj2<br />

= c(<br />

i2<br />

−1,<br />

i2)<br />

+<br />

+ c(<br />

i2,<br />

i2<br />

+ 1)<br />

CostoAggj<br />

Situazione<br />

finale<br />

1<br />

Bisarca<br />

j<br />

4<br />

7<br />

Bisarca<br />

j2<br />

9<br />

2<br />

8<br />

3<br />

2 = c(<br />

i2<br />

− 1,<br />

i)<br />

+<br />

+ c(<br />

i,<br />

i2<br />

+ 1)<br />

Se l’inserimento è<br />

vantaggioso:<br />

CostoAggj + CostoAggj2<br />

<<br />

Risparmioj + Risparmioj2<br />

Situazione finale iniziale<br />

Bisarca j<br />

1 2 3 4<br />

i2=2<br />

Bisarca j2 7 8 9<br />

i=3


Swap 2-1 – Concessionari<br />

Situazione<br />

iniziale<br />

1<br />

Bisarca<br />

j<br />

4<br />

7<br />

Bisarca<br />

j2<br />

9<br />

2<br />

3<br />

8<br />

i=2<br />

i3=3<br />

Risparmioj = c(<br />

i −1,<br />

i)<br />

+<br />

+ c(i,i 3 ) + c(i3,i3<br />

+ 1)<br />

i2=2<br />

Risparmioj2<br />

= c(<br />

i2<br />

−1,<br />

i2)<br />

+<br />

+ c(<br />

i2,<br />

i2<br />

+ 1)<br />

CostoAggj<br />

Situazione<br />

finale<br />

1<br />

Bisarca<br />

j<br />

4<br />

7<br />

Bisarca<br />

j2<br />

9<br />

2<br />

3<br />

8<br />

= c(<br />

i − 1,<br />

i2)<br />

+<br />

+ c(<br />

i2,<br />

i3<br />

+ 1)<br />

CostoAggj 2 = c(<br />

i2<br />

− 1,<br />

i)<br />

+<br />

+ c(<br />

i,<br />

i3)<br />

+ c(<br />

i3,<br />

i2<br />

+ 1)<br />

Se l’inserimento è<br />

vantaggioso:<br />

CostoAggj + CostoAggj2<br />

<<br />

Risparmioj + Risparmioj2<br />

Situazione finale iniziale<br />

Bisarca j<br />

i=2<br />

1 2 3 4<br />

i2=2<br />

Bisarca j2 7 8 9<br />

i3=3


Perturbation Heuristic<br />

E’ stata implementata una procedura formata da 4 step<br />

per perturbare la soluzione:<br />

1. selezione casuale di un<br />

concessionario i<br />

2. selezione di tutti i<br />

concessionari situati entro<br />

un certo raggio da i<br />

3. distruzione completa di tutte<br />

le route in cui tali<br />

concessionari compaiono<br />

4. ricostruzione della soluzione<br />

con il Randomized Closest<br />

Neighbor


Step 4<br />

• Introduzione<br />

• <strong>Descrizione</strong> del problema<br />

• Iterated Local Search<br />

• Risultati computazionali


Dimensione del problema<br />

• Circa 1.000 concessionari<br />

situati in Italia<br />

• Più di 700 modelli<br />

differenti di veicoli<br />

trasportati<br />

• Dimensione media delle<br />

istanze molto grande<br />

800 veicoli<br />

200 concessionari


Istanze ed implementazione<br />

• L’algoritmo è stato testato su 23 istanze fornite<br />

dall’operatore logistico<br />

Luglio 2009<br />

• La matrice delle distanze fa riferimento a distanze<br />

stradali e non in linea d’aria<br />

• Tutte le procedure sono implementate in C++ e testate<br />

su di un Pentium Dual-Core 2.7 Ghz<br />

• Time limit dell’algoritmo = 1500 sec = 25 min


Miglior solutore del problema di caricamento<br />

Sono state comparate le 4 procedure sviluppate per<br />

risolvere il problema di caricamento:<br />

• enumerazione completa (B&B1)<br />

• B&B con lower bound aggregato (B&B2)<br />

• B&B con lower bound per ogni concessionario (B&B3)<br />

• modello matematico risolto con IBM ILOG CPLX


ILS vs Operatore Logistico<br />

•L’approccio ILS migliora attuale in tutte dell’operatore le istanze la logistico: soluzione dell’azienda<br />

• non risolve il problema di caricamento, ma si basa solo sugli<br />

indici di carico<br />

• In media è possibile una riduzione dell’11% del<br />

• clusterizza in concessionari in aree specifiche<br />

numero di km percorsi<br />

• implementa solamente un greedy euristico iniziale


Rimuovendo il problema di caricamento<br />

Si è cercato di imitare l’approccio dell’operatore logistico:<br />

• se la somma degli indici di carico è


ILS vs Multi-Start<br />

• In 20 istanze su 23 la soluzione trovata dall’ILS è<br />

migliore rispetto all’approccio Multi-Start<br />

• In media la riduzione si aggira intorno a 140km per<br />

ogni istanza


Impatto dello split delivery<br />

Lo split delivery è ammesso, ma si è provato ad introdurre una<br />

penalità (in km) ogni volta che un concessionario è visitato<br />

• ↑ numero totale di bisarche<br />

• ↑ distanza percorsa<br />

• ↓ numero di split delivery


Step 5<br />

• Introduzione<br />

• <strong>Descrizione</strong> del problema<br />

• Iterated Local Search<br />

• Risultati computazionali<br />

• Conclusioni


Conclusioni<br />

• Risparmi importanti in un’applicazione reale:<br />

Circa 40km risparmiati per bisarca/giorno<br />

Riduzione delle emissioni CO 2<br />

• Combinazione efficace di algoritmi esatti ed euristici<br />

(matheuristic approach):<br />

modello accurato per la risoluzione del problema di caricamento<br />

buone euristiche per la parte di routing<br />

• A-CTP è molto complesso e lo studio può essere esteso<br />

in molti modi interessanti:<br />

• Multi-deposito con riposizionamenti<br />

• Multi-periodo<br />

• Pickup and delivery

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!