TABU SEARCH PER LA SOLUZIONE DEL TSP ANTONELLI MARCO CORTESI DARIO GANDOLFI GIACOMO INDICE DEI CONTENUTI A. Presentazione TSP (Traveling Salesman Problem) I. Modello matematico. II. Euristico (Closest Neighbor) B. Presentazione TABU SEARCH I. Elaborazione Tabu Search C. Raccolta e analisi dei dati D. Conclusioni ed eventuali alternative migliorative PRESENTAZIONE TSP PRESENTAZIONE TSP • Il problema del commesso viaggiatore (TSP) pone la seguente domanda: dato un elenco di città e le distanze tra ogni coppia di città, qual è il più breve percorso possibile che visita ogni città esattamente una volta e ritorna alla città di origine? PRESENTAZIONE TSP – PROCEDURE • TSP_input Procedura utilizzata per il recupero dai file dati e dei fogli Excel delle coordinate dei vertici e per il calcolo delle distanze (costi). • TSP_grafo_vertici / TSP_grafo_soluzione / TSP_grafo_euristico Procedure per costruire i vertici e la soluzione grafica del modello matematico. • TSP_model / TSP_model_output / TSP_add_subtour Procedure per la generazione del modello matematico, la presentazione del suo output e per l’eliminazione dei subtour. • TSP_euristico / TSP_euristico_output Procedure per la generazione della soluzione euristica (Closest Neighbor) e suo output. PRESENTAZIONE TSP – MODELLO MATEMATICO • X ij = 1 se l’arco (i,j) appartiene al circuito. 0 altrimenti • C ij = costo associato all’arco (i,j) [distanza euclidea] • n = numero di vertici • V = insieme dei vertici • PRESENTAZIONE TSP – CLOSEST NEIGHBOR • L’algoritmo euristico Closest Neighbor, dato un vertice inziale, collega tutti i vertici scegliendo sempre l’arco che porta al vertice più vicino non ancora visitato. PRESENTAZIONE TABU SEARCH PRESENTAZIONE TABU SEARCH • La TABU SEARCH è una tecnica meta-euristica. Tale metodologia classica consiste nel partire da una soluzione iniziale ed eseguire una serie di "mosse" che portano ad una nuova soluzione all'interno del "vicinato" della soluzione corrente, nella quale la funzione obiettivo assume un valore minore del valore attuale. La soluzione ottima individuata risulta quindi associata ad un minimo locale dello spazio delle soluzioni. PRESENTAZIONE TABU SEARCH • La TABU SEARCH consente "mosse peggioranti". Questo permette all’algoritmo di uscire da minimi locali e spaziare tra le altre soluzioni. • Vengono rese "proibite" le ultime mosse eseguite nel cammino di ricerca in modo che l‘algoritmo non possa tornare su soluzioni già visitate e che non rimanga bloccato nell’intorno di un minimo locale. • Caratteristica basilare è quindi l'uso sistematico della memoria: per aumentare l'efficacia del processo di ricerca, viene tenuta traccia non solo delle informazioni locali (valore della funzione obiettivo) ma anche di alcune informazioni relative all'itinerario percorso (mossa effettuata). PRESENTAZIONE TABU SEARCH • La prima idea del gruppo è stata quella di creare una TABU LIST che comprendesse l’intera soluzione ottenuta al fine di non ritrovare nel proseguimento delle iterazioni la medesima soluzione. • Sono state però constatate problematiche a livello Temporale: la soluzione impiegava troppo tempo per essere trovata. Risolutivo: l’algoritmo si bloccava in un intorno della soluzione senza spaziare tra le altre soluzioni possibili. Tecnico: non riuscivamo a trovare alternative migliorative. PRESENTAZIONE TABU SEARCH • Riscontrate queste difficoltà nella evoluzione dell’algoritmo abbiamo deciso di costruire un nuovo programma che rendesse tabù la singola mossa per un determinato numero di cicli (TABU TENURE). • Questa seconda TABU SEARCH è il programma principale del nostro progetto, sulla quale si basano la raccolta dati e le rispettive analisi che andiamo a presentare. • Abbiamo comunque mantenuto nel file .mos il codice della prima TABU SEARCH, non accettabile, in modo da effettuare un confronto con la TABU SEARCH principale. • Nelle slide successive, come nel file .mos, definiremo TABU SEARCH 2 l’algoritmo principale e TABU SEARCH 1 il primo tentativo. ELABORAZIONE TABU SEARCH ELABORAZIONE TABU SEARCH ELABORAZIONE TABU SEARCH STEP 1. La soluzione iniziale assegnata all’algoritmo è il risultato ottenuto dall’algoritmo euristico (Closest Neighbor) L’inizializzazione della TL si differenzia nei due casi perché nel primo algoritmo la prima è una vera e propria lista di array inizializzata al valore 0 per ogni cella, mentre nel secondo caso la TL è una matrice in cui ad ogni cella corrisponde una mossa e ognuna di esse conterrà il numero dell’ultima iterazione in cui la corrispondente mossa è stata eseguita. I valori della matrice sono inizializzati a -∞ TABU SEARCH 1 TABU SEARCH 2 ELABORAZIONE TABU SEARCH STEP 2. • Come intorno di x abbiamo scelto delle soluzioni che si differenziano da questa per un singolo swap tra due vertici. • Per garantire che i membri dell’intorno differiscano dall’originale di un solo swap, alla fine di ogni ciclo applichiamo un reset dello swap che riporta l’array alla sua sequenza originale. RESET INIZIO PROCEDURA FINE PROCEDURA ELABORAZIONE TABU SEARCH STEP 2. – CONFRONTO Per questo step è stata creata la procedura TROVA_X_PRIMO che viene richiamata all’interno delle procedura principale TABU SEARCH. La complessità inferiore permette un significativo aumento della velocità di risoluzione e una conseguente riduzione dei tempi di calcolo. ELABORAZIONE TABU SEARCH STEP 2. SOLUZIONI DIFFERENTI ELABORAZIONE TABU SEARCH STEP 2. – IMPLEMENTAZIONE • Abbiamo inoltre notato che, per una grande mole di dati, a volte si poteva creare un loop nella selezione dei diversi x’, ovvero, dopo un certo numero di iterazioni, medesimi x’ si ripetevano ciclicamente nello stesso ordine, impedendo così all’algoritmo di esplorare nuove soluzioni. • Per ovviare a questo problema sono state aggiunte due implementazioni: Limite sul numero massimo di volte in cui uno swap può essere ripetuto; Elusione della TL e del Limite sulle ripetizioni degli swap nel caso di soluzioni x’ miglioranti la soluzione finale. LIMITE PER SWAP ELUSIONE ELABORAZIONE TABU SEARCH STEP 3. TL SALVATAGGIO Aggiorniamo la TL inserendo, nella cella corrispondente allo swap effettuato, l’iterazione nella quale la mossa viene effettuata. ELABORAZIONE TABU SEARCH STEP 4. Limitazione che blocca il ciclo per una soluzione approssimata all’ottimo in base ad un parametro eps modificabile a piacere (nel file .mos abbiamo scelto eps=1 per permettere all’algoritmo di trovare la soluzione ottima). Limitazione basata sul numero massimo di cicli da effettuare. RACCOLTA E ANALISI DEI DATI RACCOLTA E ANALISI DEI DATI • La raccolta dati è stata effettuata creando casualmente coordinate cartesiane su fogli di calcolo. • Abbiamo utilizzato come base 3 casistiche, rispettivamente di: 40 vertici 80 vertici 120 vertici • In conclusione proporremo i risultati per un caso reale. RACCOLTA E ANALISI DEI DATI • Per l’analisi dei dati abbiamo considerato: zopt / zcn : rapporto tra il risultato ottenuto con il modello matematico e quello con l’algoritmo euristico; zopt / zts : rapporto tra il risultato ottenuto con il modello matematico e quello con la TABU SEARCH; zts / zcn : rapporto tra il risultato ottenuto con la TABU SEARCH e quello con l’algoritmo euristico; Tempi di esecuzione Limitazioni al numero di swap RACCOLTA E ANALISI DEI DATI 507.7499 590.9641 549.6373 546.173 610.97 595.51 639.619 584.915 478.991 508.7 576.868 529.635 zts 462.711 494.226 468.891 zcn 495.265 577.351 524.875 529.081 581.915 550.153 524.246 588.281 558.621 625.22 539.941 513.737 477.515 549.675 531.084 zopt VALORE Z 541.08 665.516 612.748 40 VERTICI 1 2 3 4 5 6 7 INSIEMI DI VERTICI 8 9 10 MEDIA zopt zcn zts 1 541,08 665,516 612,748 2 477,515 549,675 531,084 3 513,737 625,22 539,941 4 524,246 588,281 558,621 5 529,081 581,915 550,153 6 495,265 577,351 524,875 7 462,711 494,226 468,891 8 508,7 576,868 529,635 9 478,991 639,619 584,915 10 546,173 610,97 595,51 RACCOLTA E ANALISI DEI DATI 80 VERTICI 704.8115 893.8852 833.0476 936.337 909.628 699.903 979.894 885.764 699.264 700.067 814.357 774.541 917.256 881.974 zts 739.726 683.602 833.878 805.883 692.104 863.108 771.131 710.069 860.766 805.12 980.513 832.803 711.31 875.323 826.955 700.796 zcn VALORE Z 711.274 877.42 836.677 zopt 1 2 3 4 5 6 7 INSIEMI DI VERTICI 8 9 10 MEDIA zopt zcn zts 1 711,274 877,42 836,677 2 700,796 875,323 826,955 3 711,31 980,513 832,803 4 710,069 860,766 805,12 5 692,104 863,108 771,131 6 683,602 833,878 805,883 7 739,726 917,256 881,974 8 700,067 814,357 774,541 9 699,264 979,894 885,764 10 699,903 936,337 909,628 RACCOLTA E ANALISI DEI DATI 878.041 1080.2167 1030.4448 817.736 983.384 952.361 841.749 1006.88 940.697 1029.16 971.953 829.06 1084.14 1053.14 zts 848.884 zcn 847.768 949.203 941.777 1090.01 1018 845.566 1106.52 1062.64 851.643 1018.77 1165.76 1144.68 1307.09 1200.72 1039.38 zopt VALORE Z 839.854 1080.02 1018.48 120 VERTICI 1 2 3 4 5 6 7 INSIEMI DI VERTICI 8 9 10 MEDIA zopt zcn zts 1 839,854 1080,02 1018,48 2 1039,38 1307,09 1200,72 3 1018,77 1165,76 1144,68 4 851,643 1106,52 1062,64 5 845,566 1090,01 1018 6 847,768 949,203 941,777 7 848,884 1084,14 1053,14 8 829,06 1029,16 971,953 9 841,749 1006,88 940,697 10 817,736 983,384 952,361 RACCOLTA E ANALISI DEI DATI Tendenza • Dal grafico possiamo ricavare l’andamento dei rapporti percentuali tra modello ed euristico (verde) e tra modello e TABU SEARCH (celeste) 100.0 90.0 80.0 70.0 60.0 50.0 40.0 30.0 20.0 10.0 .0 1 2 3 4 5 6 7 % OPT/CN 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 % OPT/TS TENDENZA OPT/CN TENDENZA OPT/TS • Sono state aggiunte le linee di tendenza sia per il primo rapporto (tratteggio viola) che per il secondo (tratteggio rosso) RACCOLTA E ANALISI DEI DATI Tendenza 100.0 90.0 80.0 70.0 60.0 50.0 40.0 30.0 20.0 10.0 .0 1 2 3 4 5 6 7 % OPT/CN 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 % OPT/TS TENDENZA OPT/CN TENDENZA OPT/TS % OPT/CN % OPT/TS 81,30233 86,87224 82,169 89,1149 90,92067 85,78231 93,62336 88,18309 74,88692 89,39441 81,06426 80,06142 72,54468 82,49269 80,18742 81,97866 80,64553 85,96561 71,36119 74,74905 77,76282 79,51863 87,39106 76,96589 77,57415 89,31367 78,30022 80,55696 83,59973 83,15531 88,30384 89,91327 95,14688 93,84645 96,16979 94,35866 98,682 96,04728 81,8907 91,71517 85,01178 84,74415 85,41156 88,19418 89,75181 84,82646 83,87163 90,38476 78,94473 76,94387 82,46151 86,56306 89,00042 80,14408 83,06149 90,01791 80,60505 85,29836 89,48142 85,86408 82,24 % 87,55% RACCOLTA E ANALISI DEI DATI Tendenza 100.0 90.0 80.0 70.0 60.0 Caso di maggiore guadagno TS + 147,71 50.0 40.0 30.0 Caso di minore guadagno TS + 7,426 20.0 10.0 .0 1 2 3 4 5 6 7 % OPT/CN 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 % OPT/TS TENDENZA OPT/CN TENDENZA OPT/TS % OPT/CN % OPT/TS 81,30233 86,87224 82,169 89,1149 90,92067 85,78231 93,62336 88,18309 74,88692 89,39441 81,06426 80,06142 72,54468 82,49269 80,18742 81,97866 80,64553 85,96561 71,36119 74,74905 77,76282 79,51863 87,39106 76,96589 77,57415 89,31367 78,30022 80,55696 83,59973 83,15531 88,30384 89,91327 95,14688 93,84645 96,16979 94,35866 98,682 96,04728 81,8907 91,71517 85,01178 84,74415 85,41156 88,19418 89,75181 84,82646 83,87163 90,38476 78,94473 76,94387 82,46151 86,56306 89,00042 80,14408 83,06149 90,01791 80,60505 85,29836 89,48142 85,86408 82,24 % 87,55% % Miglioramento RACCOLTA E ANALISI DEI DATI Miglioramento TS 1400 16 1200 14 Valore z 10 800 8 600 6 400 4 200 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Insiemi di vertici zcn zts % (CN-TS)/CN 20 21 22 23 24 25 26 27 28 29 30 % Miglioramento 12 1000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 7,928885 3,38218 13,63984 5,041808 5,458185 9,089098 5,126197 8,187835 8,552591 2,530402 4,6435 5,525732 15,06456 6,464707 10,65649 3,357206 3,846473 4,889256 9,606141 2,852499 5,698043 8,137925 1,808262 3,965586 6,606361 0,782341 2,859409 5,558611 6,573077 3,154719 Media 6,032931 RACCOLTA E ANALISI DEI DATI Tempi esecuzione 450 400 350 Tempi (s) 300 250 200 150 100 50 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Insiemi di Vertici t opt t cn t ts 18 19 20 21 22 23 24 25 26 27 28 29 30 RACCOLTA E ANALISI DEI DATI Tempi esecuzione 409,723 sec 450 400 350 Media t ts: 215,96 sec Tempi (s) 300 250 200 Media t ts: 65,26 sec 150 Media t ts: 8,82 sec 100 50 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Insiemi di Vertici t opt t cn t ts 18 19 20 21 22 23 24 25 26 27 28 29 30 RACCOLTA E ANALISI DEI DATI z no lim z lim 1_40 (60) 612,748 585,734 5 7_40 (60) 468,891 464,535 4.5 1_80 (50) 836,677 813,514 4 2_80 (50) 826,955 803,837 3.5 3_80 (50) 832,803 820,975 7_80 (50) 881,974 849,135 1_120 (55) 1018,48 1005,24 2_120 (55) 1200,72 1158,26 1 3_120 (55) 1144,68 1144,17 0.5 4_120 (55) 1062,64 1043,43 0 8_120 (55) 971,953 966,861 % Miglioramento 3 2.5 2 1.5 1_40 7_40 1_80 2_80 3_80 7_80 1_120 2_120 3_120 4_120 8_120 (60) (60) (50) (50) (50) (50) (55) (55) (55) (55) (55) • Nella tabella sono riportati gli unici casi in cui il limite agli swap portano un miglioramento alla funzione obiettivo. • I valori tra parentesi indicano il limite impostato: 60 x 40 vertici 50 x 80 vertici 55 x 120 vertici • I limiti sono stati impostati arbitrariamente, cercando di limitare gli swap più effettuati. RACCOLTA E ANALISI DEI DATI CASO REALE – REGGIO EMILIA (369 vertici) MODELLO MATEMATICO MODELLO z opt 0.16806 t opt (sec) 2105.87 RACCOLTA E ANALISI DEI DATI CASO REALE – REGGIO EMILIA (369 vertici) CLOSEST NEIGHBOR CN z cn 0.199076 t cn (sec) 0.032 RACCOLTA E ANALISI DEI DATI CASO REALE – REGGIO EMILIA (369 vertici) TABU SEARCH – 1000 iterazioni TS z ts 0.193714 t ts (sec) 6300.66 RACCOLTA E ANALISI DEI DATI CASO REALE – REGGIO EMILIA (369 vertici) Confronto CN – TS z TS CN 0.193714 0.199076 0,005362 (2,69%) RACCOLTA E ANALISI DEI DATI CASO REALE – REGGIO EMILIA (369 vertici) Confronto MODELLO – TS z TS CN 0.193714 0.199076 0,005362 (2,69%) z TS MODELLO 0.193714 0.16806 86,75 % RACCOLTA E ANALISI DEI DATI CONCLUSIONI • Come auspicabile, la TABU SEARCH migliora l’euristico Closest Neighbor, in media di circa il 6% su 1000 iterazioni. • La TABU SEARCH, sempre su 1000 mosse effettuate, approssima la soluzione ottima del modello in media di circa 87,5% (40 vertici: 92,6%; 80 vertici: 84,8%; 120 vertici: 85,2%) • I tempi di esecuzione aumentano quasi esponenzialmente all’aumento dei vertici in input. EVENTUALI ALTERNATIVE MIGLIORATIVE • Aggiunta di un limite sul tempo per l’esecuzione della TABU SEARCH. • Applicazione di una Tabù Tenure dinamica. • Penalizzazioni per swap molto frequenti. GRAZIE DELL’ ATTENZIONE