Start Start Random restart Tabu search

Transcript

Start Start Random restart Tabu search
Iteration 2
Iteration 7
Iteration 1
Iteration 4
y area
Low quality
area
Iteration 6
odel
aling
Iteration 5
Iteration 3
Random restart
Start
Start
Tabu search
ALGORITMI METAEURISTICI
1
Classificazione Euristici
Gli algoritmi euristici possono essere classificati come segue:
– Algoritmi costruttivi: sfruttano le proprietà strutturali delle soluzioni ammissibili o i risultati della programmazione matematica
(ad esempio i rilassamenti che definiscono lower bounds)
– Algoritmi di ricerca locale:
∗
∗
∗
∗
Schema di ricerca nello spazio delle soluzioni
Partono da una soluzione euristica iniziale
Cercano possibili miglioramenti nel vicinato (neighborhood)
Iterano fino a quando non esistono ulteriori miglioramenti
– Metaeuristiche:
∗ Estendono la ricerca locale
∗ Diversificazione: ricerca in regioni diverse dello spazio delle
soluzioni
∗ Intensificazione: ricerca delle migliori soluzioni nella regione
corrente
Gli algoritmi costruttivi sono in genere molto legati al problema
specifico che vogliono risolvere.
Le tecniche di ricerca locale, e ancor più i metaeuristici, costituiscono
un framework generale, adatto ad essere utilizzato per la risoluzione
di problemi di tipo diverso.
ALGORITMI METAEURISTICI
2
Esempi
Esempio algoritmo costruttivo: Closest Neighbor per il Travelling
Salesman Problem (TSP):
– Parti dal deposito e collega la route al cliente più vicino non
ancora visitato
– Reitera collegando la route al cliente più vicino non ancora
visitato, fino a quando tutti i clienti sono stati visitati
– Restituisci il valore della soluzione euristica (lunghezza totale del
viaggio)
– In genere produce soluzioni di scarsa qualità
Esempio di ricerca locale per il TSP:
– Parti dalla soluzione del Closest Neighbor
– Seleziona un cliente, eliminalo dalla route, prova a reinserirlo in
una posizione diversa nella route
– Se la mossa provoca un miglioramento, esegui e reitera
– Termina quando non ci sono più miglioramenti possibili
Gli algoritmi di ricerca locale possono funzionare molto bene, ma
possono anche bloccarsi in soluzioni di scarsa qualità.
A partire dagli anni ’60/’70 sono stati presentati nuovi approcci al
fine di guidare gli algoritmi costruttivi e di ricerca locale per superare
situazioni critiche:
– Metaeuristici
ALGORITMI METAEURISTICI
3
Metaeuristici
Diverse tipologie di tecnoche metaeuristiche sono state presentate
in letteratura, fra le quali:
– Simulated Annealing [Kirkpatrik, Gelatt e Vecchi 1983]
– Tabu Search [Glover, 1986]
– Algoritmi Genetici [Rechenberg 1973, Holland 1975]
– Variable Neighborhood Search [Mladenović, Labbé e Hansen
1990s]
– Ant Colony Optimization − ACO [Colorni, Dorigo e Maniezzo
1992]
– Scatter Search [Glover 1965]
– Path Relinking [Glover 1965]
– Greedy Randomized Adaptive Search Procedure − GRASP [Feo
e Resende 1989]
– Guided Local Search − GLS [Voudouris and Tsang 1990s]
– Artificial Neural Networks [Hopfield e Tank 1985, Mc Culloch
and Pitts 1922]
– Memetic Algorithms [Moscato 1989]
– ...
Molte metaeuristiche si basano su ripetute chiamate a metodi di
ricerca locale
ALGORITMI METAEURISTICI
4
Ricerca locale
Neighborhood (Vicinato, Intorno):
– Per ogni soluzione x ∈ X, si definisce N (x) ⊂ X, insieme di
soluzioni vicine ad x
Algoritmo di Ricerca Locale
Comm: Versione per max f (x);
f ∈ X;
Step 1. Genera una soluzione iniziale x
f tale che f (x0 ) > f (x̃), se esiste,
Step 2. Trova x0 ∈ N (x)
altrimenti poni x0 = ∅;
f
(alternativa: trova x0 = arg max{f (x) : x ∈ N (x)});
f = x0 , goto Step 2;
Step 3. If x0 6= ∅ then x
f
Step 4. Restituisci x.
f a x0
L’aggiornamento della soluzione (Step 3) è detto mossa da x
L’algoritmo può facilmente terminare in un ottimo locale (f (x∗ ) ≤
f (x), ∀x ∈ N (x∗ ) per problemi di minimo; f (x∗ ) ≥ f (x), ∀x ∈
N (x∗) per problemi di massimo) ma non globale
ALGORITMI METAEURISTICI
5
Multi Start
Un algoritmo di ricerca può essere migliorato facilmente applicandolo e diverse soluzioni iniziali
Costruzione soluzioni:
– In modo casuale
– In modo guidato
Non si è sicuri di coprire tutto lo spazio delle soluzioni
In figura nessuna soluzione cade nel bacino di attrazione del “picco
più alto” (ottimo globale)
Per alcuni problemi il “picco più alto” è molto stretto oppure esistono numerosissimi picchi
ALGORITMI METAEURISTICI
6
Esempi di neighborhood: TSP
Travelling Salesman Problem: dato un insieme di punti (clienti) ed
un grafo pesato (una rete stradale), visitare tutti i clienti una ed una
sola volta, con costo minimo
Costruzione di una soluzione iniziale:
– Euristico costruttivo
Miglioramento della soluzione iniziale tramire ricerca locale
2-opt (Link and Kernighan 1973):
j
j
i
i
l
k
l
k
Si scelgono due lati/archi (in tutti i modi possibili), li si elimina e si
richiude il circuito
ALGORITMI METAEURISTICI
7
3-opt (Link and Kernighan 1973):
m
j
m
j
n
i
n
i
l
k
l
k
Si scelgono tre lati/archi (in tutti i modi possibili), li si elimina e poi
si richiude il circuito
Or-opt (Or 1976):
i
a
m
j
i
j
n
p
a
m
n
p
b
b
Si sceglie una sequenza di al massimo tre vertici, si prova ad inserirla
in altre posizioni nella route, e poi si chiude il circuito
ALGORITMI METAEURISTICI
8
Esempi di neighborhood: Scheduling
1|rj |C max: dato un insieme di Job Jj di durata pj e tempo di
rilascio rj ed un processore, assegnare i job al processore in ordine,
in modo da minimizzare il makespan
Inserzione (Insert move)
J1
r1
J2
r3
J1
r1
r2
r4
J3
r3
J3
J4
r4
J5
r5
J2
r2
J4
J5
r5
Prova a spostare ogni task in tutte le possibili posizioni
Scambio (Swap move)
J1
r1
J2
r3
r2
J3
r1
r3
J3
r2
r4
J4
r5
J2
J1
r4
J5
J4
J5
r5
Prova a scambiare tra loro ogni coppia di job
ALGORITMI METAEURISTICI
9
Dimensione dei neighborhood
2-Opt: per ogni lato devo tentare tutti i rimanenti n − 1 lati:
n × (n − 1) = O(n2) mosse
3-Opt: per ogni lato devo tentare tutti i rimanenti n − 1 lati, e per
ciascuno di questi tutti i rimanenti n − 2 lati:
n × (n − 1) × (n − 2) = O(n3) mosse
Per un grafo di 100 nodi (piccolo) ogni esplorazione dell’intorno 3Opt richiede ' 1.000.000 di tentativi
Occorre implementare in maniera efficace l’esame dell’intorno
Più il neighborhood è grande più è approfondita la ricerca e più aumenta il tempo di calcolo
k-opt: generalizzazione di 2-opt e 3-opt:
– Se poniamo k = n l’intorno contiene tutti i possibili Circuiti
Hamiltoniani (n!)
– Equivale ad esplorare tutte le soluzioni
Nel trade-off tra accuratezza e tempo di calcolorisulta molto importante scegliere correttamente la dimensione dell’intorno
ALGORITMI METAEURISTICI
10
Trade-off tra accuratezza e tempo di calcolo
Diversificazione:
– Esplorare regioni diverse tra loro
– Ad esempio spendere tempo nell’approccio multi-start per provare
molti punti di partenza
Intensificazione:
– Esplorare a fondo un unica regione
– Ad esempio utilizzare 3-opt invece di 2-opt
La scelta tra una e l’altra dipende dalle performance dell’algoritmo
per il particolare problema affrontato:
– Non esiste una regola di decisione
– Lunghe fasi implementative per il settaggio dei parametri
Scelta della mossa:
– First improvement: appena trovo uno scambio che migliora la
soluzione lo effettuo
– Best improvement: considero tutti i possibili scambi ed effettuo
quello che porta al massimo miglioramento (se esiste)
Anche in questo caso la scelta dipendente dalla performance dell’algoritmo
ALGORITMI METAEURISTICI
11
Equicut
Dato un grafo G = (V, E) con |V | pari, pesato sui lati (a, b) con
pesi w(a, b), si trovi la partizione (A, B) dei vertici tale per cui:
−) |A| = |B|
−) w(δ(A)) =
X
w(i, j) è minima
i∈A,j∈B
Problema con numerose applicazioni (ad esempio in VLSI)
Utile esempio perchè affrontato in letteratura con algoritmi costruttivi, ricerca locale e metaeuristiche
ALGORITMI METAEURISTICI
12
Algoritmo costruttivo per Equicut
Generate-sol:
Comment: n = |V |;
Seleziona due “semi” (vertici) e assegnali uno ad A e uno a B;
for i = 1 to n/2 − 1 do
Seleziona la coppia di vertici a e b non ancora selezionati che
minimizzano l’incremento della funzione obiettivo se aggiunti
ad A e B, rispettivamente;
Assegna a ad A e b a B;
end for
Alcune definizioni:
Ea =
Ia =
X
w(a, j) = somma costi esterni
j∈B
X
j∈a
w(a, j) = somma costi interni
Da = Ea − Ia = variazione se a si sposta da A a B
Analogamente per Eb, Ib e Db
Ea
Ia
a
ALGORITMI METAEURISTICI
13
Ricerca locale per Equicut
Algoritmo 1:
1. Parti da una soluzione euristica;
2. Per ogni coppia di vertici a ∈ A e b ∈ B valuta:
guadagno(a, b) = Da + Db − 2w(a, b);
3. Tra tutte le coppie aventi guadagno positivo (se ve ne sono)
scegli quella che da guadagno massimo;
4. Reitera fino a quando non esistono più guadagni positivi.
Algoritmo KL [Kernighan e Lin 1970]:
1. Indiviuda i vertici a(1) ∈ A e b(1) ∈ B tali che il guadagno
g(1) = Da(1) + Db(1) − 2w(a(1), b(1)) sia massimo;
2. Scambia a(1) e b(1) e aggiorna Ei , Ii, Di, ∀i;
3. Fissa a(1) e b(1) impedendo ulteriori spostamenti;
4. Individua una seconda coppia di vertici a(2) e b(2) diversi dai
precedenti che massimizza g(2), scambiabili e fissali (n/2 − 1
volte);
5. Reitera il procedimento fino a quando non ci sono più vertici
scambiali;
6. Individua il valore k che massimizza G =
k
X
i=1
g(i);
7. Se G > 0 scambia i vertici a(1), . . . , a(k) e b(1), . . . , b(k) nel
grafo originale e torna al passo 1. Se invece G ≤ 0 termina la
procedura.
Algoritmo KL più efficace di Algoritmo 1 (maggior tempo di calcolo)
ALGORITMI METAEURISTICI
14
Esempio di Applicazione dell’Algoritmo KL
1
1
1
1
3
1
2
2
1
5
1
1
4
1
2
6
3
2
7
8
1
E() 3
I() 4
D() -1
2 3
4 0
4 3
0 -3
4
1
1
0
5
3
2
1
6 7 8
3 0 0
1 2 3
2 -2 -3
g(1) = 0 vertici = 2, 4
g(2) = 3 vertici = 1, 7
g(3) = −4 vertici = 3, 5
G = 0 + 3 = 3 ⇒ scambio 2-4 e 1-7
1
4
1
1
1
1
7
5
1
1
2
3
1
2
8
6
2
2
1
3
ALGORITMI METAEURISTICI
15
Threshold Algorithm (Algoritmo a soglia)
Consideriamo problemi in forma di minimo.
Algoritmo Threshold:
Individua una soluzione euristica x;
k = 0;
Repeat
Genera una soluzione x0 ∈ N (x);
if (f (x0 ) − f (x) < tk ) then
x = x0 ;
end if
k = k + 1;
Until criterio di stop.
Ponendo tk > 0 si accettano anche soluzioni (limitatamente) peggiori di x
La soglia tk > 0 è aggiornata secondo diverse tecniche:
– Ricerca locale: tk = 0 (solo soluzioni miglioranti)
Threshold accepting :
– t0 > 0, tk ≥ tk+1, limk→∞tk = 0
– Inizialmente si accettano soluzioni che peggiorano anche di molto
la soluzione attuale. Nel seguito si riduce sempre più la disponibilità a peggiorare.
ALGORITMI METAEURISTICI
16
Simulated Annealing
Simulated Annealing : tk aggiornata probabilisticamente:
P(accettazione x)
1
f(x') - f(x)
La probabiltà di accettazione usata è:





P (accettazione di x0) = 



1
e
f (x0 )−f (x)
tk
se f (x0 ) ≤ f (x)
0
se f (x) > f (x )
(1)
Il parametro di controllo tk cala col tempo:
– Cala anche la probabilità di accettare una soluzione peggiorante
La probabiltà di accettazione dipende solo dalla soluzione corrente
e da quella precedente (Catena di Markov )
Teorema di convergenza: se tk diminuisce “abbastanza lentamente”
al tendere del tempo di esecuzione all’infinito, la probabiltà di individuare l’ottimo globale è pari a 1
ALGORITMI METAEURISTICI
17
Analogia fisica
Procedimento usato dai fisici per ottenere solidi a bassa energia:
– Scaldare il solido fino alla temperatura di fusione
– Abbassare la temperatura lentamente
– Nel liquido le particelle rimangono disposte in modo casuale, nel
solido che si forma si dispongono secondo strutture atomiche
rigide a bassa energia
Questo processo viene normalmente simulato al calcolatore con metodi Monte Carlo
Se lo stato attuale i ha energia Ei, uno stato successivo a energia
Ej :
– Se Ej ≤ Ei è sempre accettato
– Se Ej > Ei è accettato con probabilità:
e
Ei −Ej
kT
B
!
dove:
– T = temperatura iniziale
– kB = costante di Boltzman
Dato un problema di ottimizzazione combinatoria:
– Le soluzioni corrispondono agli stati fisici
– Il valore della funzione obiettivo corrisponde all’energia
ALGORITMI METAEURISTICI
18
Implementazioni pratiche
Per garantire la validità del teorema di convergenza spesso occorre
un numero di iterazioni (k) superiore al numero di soluzioni del
problema:
– Per il TSP occorre:
k = O(nn
2n−1
)
– Le soluzioni ammissibili di TSP sono n! quindi occorre meno
tempo per un’enumerazione completa che per approssimare bene
la soluzione ottima con SA
In pratica si usano implementazioni che riducono il tempo di calcolo,
perdendo però le proprietà teoriche che garantiscono la convergenza
Strategia di raffreddamento (Cooling Scheme): metodo pratico per
calare la temperatura in modo da eseguire l’algoritmo in un tempo
finito.
Occorre definire:
– Valore iniziale parametro di controllo t0
– Una funzione per diminuire tk nel tempo
– Un criterio di arresto (valore finale di tk )
– Il numero di iterazioni senza variare tk
ALGORITMI METAEURISTICI
19
Schema statico
E’ l’implementazione più usuale della strategia di raffreddamento:
1. Valore iniziale di t0: valore abbastanza alto, ad esempio stimato
come la massima differenza tra i valori delle funzioni obiettivo di
due soluzioni nello stesso intorno
2. Funzione per diminuire tk nel tempo:
tk+1 = αtk
con α < 1, tipicamente α ∈ [0.8, 0.99]
3. Criterio di arresto: valore fisso di tk (piccolo), normalmente correlato
alla minima differenza tra i valori delle funzioni obiettivo di due
soluzioni nello stesso intorno
4. Numero di iterazioni senza variare tk : numero fisso, normalmente
correlato alla dimensione dell’intorno
tk
t0
k
ALGORITMI METAEURISTICI
20
Esempio di SA per Equicut
[Johnson, Aragon, Mc Geoch, Schevon 1989]
Neighborhood: si considerano partizioni s = (S, V \ S) anche non
ammissibili (|S| 6= |V \ S|) e si generano le soluzioni vicine muovendo un vertice da un insieme all’altro
Si valuta la soluzione con una funzione di penalità che tiene conto
dell’inammissibilità:
cost(s) = w(δ(S)) + β(|S| − |V \ S|)2, β ≥ 0
Algoritmo SA-Equicut:
Scegli casualmente una soluzione di partenza s;
T := TSTART;
while numero soluzioni accettate > MINNSOL:
for n × SIZE do:
Scegli un vicino s0 ∈ N (s);
if (cost(s0) < cost(s)) then s := s0 ;
0
else set s := s0 con probabilità e(cost(s)−cost(s ))/T ;
end for
T := T × TFACTOR;
end while
Restituisci miglior s.
Parametri:
α = 0.05; TSTART = 0.4; MINNSOL = 2;
SIZE = 16; TFACTOR = 0.95;
ALGORITMI METAEURISTICI
21
Algoritmi genetici
Gli algoritmi genetici (Holland 1975) si ispirano al processo evolutivo degli organismi in natura
Questi algoritmi mantengo ad ogni iterazione un insieme di soluzioni
(o individui), chiamato popolazione, che viene aggiornata durante
le varie iterazioni
L’aggiornamento avviene ricombinando sottoinsiemi della popolazione,
definiti parent set (tipicamente coppie di individui), per ottenere
nuove soluzioni. L’operazione che dato un parent set permette di
generare un nuovo individuo è definita crossover
Un’operazione di mutazione è probabilisticamente effettuata sui nuovi
individui della popolazione al fine di diversificare il processo. Un altro metodo usato per la diversificazione è l’immigrazione
I nuovi individui generati vengono introdotti nella popolazione tramite
opportune modifiche della popolazione stessa
Le soluzioni (codificate come stringhe) sono dette cromosomi
Un testo spesso preso a riferimento è il libro di Goldberg (1989),
che contiene lo schema theorem che giustifica teoricamente il metodo. Successivamente è stato provato che è errato applicare questo
teorema agli algoritmi genetici [Aarts e Lenstra 1997]
ALGORITMI METAEURISTICI
22
Algoritmo Genetico
Step 1. Genera una popolazione P di soluzioni iniziali;
Step 2. Valuta il costo f (x), ∀x ∈ P (f : funzione di fitness);
Step 3. repeat
Selezione dei genitori: in base alla fitness di ogni
individuo, seleziona un sottoinsieme G di coppie di
soluzioni dall’insieme P ;
-
Crossover : costruisci un insieme PG di soluzioni
combinando fra loro i genitori in G;
-
Mutazione: modifica casualmente alcune soluzioni in PG;
-
Sia P̄G il nuovo insieme di soluzioni;
-
Eventualmente applica ricerca locale ad ogni individuo;
-
Valuta la fitness per il nuovo insieme P̄G;
-
Selezione della popolazione: costruisci una nuova
popolazione P̄ sostituendo tutti o alcuni individui
della popolazione P utilizzando l’insieme P̄G;
-
Poni P = P̄ ;
until <condizione di terminazione>.
ALGORITMI METAEURISTICI
23
Operatori di crossover e mutazione
Esempio: Codifica di una soluzione come stringa di bit
Single Crossover
(0 0 0 0 1 1 1)
(0 0 0 0 0 1 0)
⇒
(0 1 0 1 0 1 0)
(0 1 0 1 1 1 1)
Double Crossover
(0 0 0 0 1 1 1)
(0 0 0 1 1 1 1)
⇒
(0 1 0 1 0 1 0)
(0 1 0 0 0 1 0)
Mutazione
(0 1 0 0 0 1 0)
↓
(0 1 1 0 0 1 0)
ALGORITMI METAEURISTICI
24
Filtro (Repair Method)
Mutazione particolare che trasforma una soluzione inammissibile in
una soluzione ammissibile
Esempio per Equicut:
– Codifica:



xi = 

0 se i ∈ A
1 se i ∈ B
(2)
Necessario un metodo per ripristinare l’ammissibilità della soluzione
risultante
ALGORITMI METAEURISTICI
25
Esempio per il TSP:
Codifica = vettore dei successori: si = vertice che segue il vertice i
1 2 3 4 5 6
s1 (2, 3, 4, 5, 6, 1)
2
3
4
1
6
5
1 2 3 4 5 6
s2 (2, 5, 6, 3, 4, 1)
2
3
4
1
6
5
1 2 3 4 5 6
o1 (2, 5, 6, 5, 6, 1)
2
3
4
1
6
5
Occorre un filtro per riottenere una soluzione ammissibile
ALGORITMI METAEURISTICI
26
GA per Equicut
Roland e Pirkul sviluppano due lavori, nel 1992 e nel 1994
Crossover: single
Mutazione bit per bit
1992:
– Fitness: data dal costo della soluzione e da una penalità proporzionale alla differenza di cardinalità (violazione del vincolo)
1994:
– Fitness senza penalità
– Utilizzo di un filtro per rendere tutte le soluzioni ammissibili
– Filtro:
– Greedy-balancing:
while soluzione corrente non bilanciata:
Sia A il sottinsieme di massima cardinalità;
Trova a ∈ A che massimizza Da = Ea − Ia (eventualmente negativo);
Sposta a in B;
end while
ALGORITMI METAEURISTICI
27
Tabu Search
Il Tabu Search (Glover 1986) esce dai minimi locali muovendosi sulla
migliore soluzione dell’intorno ad ogni iterazione, anche se peggiore
della corrente
Una struttura di memoria chiamata tabu list impedisce di tornare
su soluzioni già visitate.
Tabu Search
Step 1. Genera una soluzione iniziale x ∈ X
Poni x∗ = x e inizializza T L = ∅;
(T L é la tabu List);
Step 2. Trova x0 ∈ N (x), tale che
f (x0 ) = min{f (x00 ), ∀x00 ∈ N (x), x00 ∈
/ T L};
Step 3. T L = T L ∪ {x};
Poni x = x0;
if f (x) < f (x∗ ) then x∗ = x
Step 4. if not <condizione di terminazione> goto Step 2.
ALGORITMI METAEURISTICI
28
Ricerca locale vs Tabu Search
Ricerca Locale
Iteration 2
Iteration 7
Iteration 1
bal optimum
Iteration 4
High quality area
Iteration 2
Low quality
area
Iteration 5
Iteration 3
Iteration 7
Iteration 1
bal optimum
Iteration 4
High quality area
uality area
Iteration 6
Low quality
area
Solution space model
Iteration 5
Iteration 3
Random restart
Iteration 6
Tabu Search
uality area
Solution space model
Random restart
Start
Start
Start
Start
Simulated annealing
Tabu search
Simulated annealing
Tabu search
ALGORITMI METAEURISTICI
29
Alcune caratteristiche del Tabu Search
Tabu List:
– Memorizzare soluzioni complete:
∗ Non si ritorna (generalmente) sui propri passi
∗ Tempo computazionale elevato
– Memorizzare solo alcuni attributi:
∗ Possibilità di ritornare sui propri passi
∗ Tempo computazionale limitato
– Memorizzazione:
∗ Lista vera e propria
∗ Vettore o matrice che memorizzano l’iterazione della mossa
∗ Esempio: swap tra job per problema di scheduling
ALGORITMI METAEURISTICI
30
Esempio implementazione Tabu List
Singolo processore: intorno dato dallo scambio di due job
iterazione 1
2
3
4
5
6
job scambiati (2,5) (3,7) (4,6) (1,12) (9,10) (14,15)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 - −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ 4 −∞ −∞ ∞
2 - - −∞ −∞ 1 −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ ∞
3 - - −∞ −∞ −∞ 2 −∞ −∞ −∞ −∞ −∞ −∞ −∞ ∞
4 - - −∞ 3 −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ ∞
5 - - −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ ∞
6 - - −∞ −∞ −∞ −∞ −∞ −∞ −∞ −∞ ∞
7 - - −∞ −∞ −∞ −∞ −∞ −∞ −∞ ∞
8 - - −∞ −∞ −∞ −∞ −∞ −∞ ∞
9 - - 5 −∞ −∞ −∞ −∞ ∞
10 - - −∞ −∞ −∞ −∞ ∞
11 - - −∞ −∞ −∞ ∞
12 - - −∞ ∞
- ∞
13 - 14 - - 6
2,5
start
3,7
4,6
1,12
9,10
14,15
ALGORITMI METAEURISTICI
31
Implementazioni usuali Tabu List
Tabu Tenure:
– Per quante iterazioni una mossa è considerata tabu
– Corta: intensificazione preferita a diversificazione
– Lunga: diversificazione preferita a intensificazione
– Compromesso: Lunghezza dinamica
Short and Long Memory:
– La memoria a breve consiste essenzialmente nella Tabu List
– La memoria a lungo termine (opzionale) tiene conto di informazioni su tutta la ricerca compiuta
Diversificazione:
– Possibilità di usare penalità per attributi troppo ricorrenti
– Possibilità di applicare multi-start per regioni poco visitate
– Si possono usare matrici simili a quelle usate per la tabu list
Criteri di Aspirazione:
– Se una soluzione è tabu ma migliore dell’incumbent la accetto
lo stesso
– Altri possibili criteri
ALGORITMI METAEURISTICI
32
TS per Equicut (1)
(Roland, Pirkul e Glover 1995)
Stesso intorno di SA:
– muovi un solo vertice da un insieme a un altro
Tabu List:
– T LA(j)= iterazione in cui j è stato inserito in A
– T LB (j)= iterazione in cui j è stato inserito in B
– Lo spostamento di j da A a B è tabu se:
T LA(j) + (tabu-tenure) > (iterazione corrente)
– Analogamente per lo spostamento di j da B ad A
Neighborhood ristretto:
– Si considera un certo fattore MAX-UNBALANCE
– Una mossa è presa in considerazione solo se non porta a uno
scostamento delle cardinalità maggiore di MAX-UNBALANCE
– MAX-UNBALANCE è aggiornato dinamicamente
Criterio di stop:
– max(100, 5n) iterazioni
ALGORITMI METAEURISTICI
33
TS per Equicut (2)
(Dell’Amico e Maffioli 1996, Dell’Amico e Trubian 1998)
Neighborhood:
– scambia un vertice di A con uno di B
Tabu List:
– T (i, j)= iterazione in cui i e j sono stati scambiati
– Impedisci scambio di i e j per le prossime tabu-tenure iterazioni
Tabu Tenure:
– cresce nelle fasi di ricerca peggioranti
– cala nelle fasi di ricerca miglioranti
Mossa:
– best improvement (non tabu)
– memorizza seconda best move
Multi-Start:
– se la ricerca non ha dato miglioramenti nelle ultime iterazioni,
riparti con una nuova soluzione