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