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