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