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