Algortm eurstc: III Rcerca Locale Danele Vgo D.E.I.S. - Unverstà d Bologna dvgo@des.unbo.t rev. 1.0 - dcembre 2003 Algortm d Rcerca Locale partono da una soluzone (ammssble) cercano teratvamente d mglorarla effettuando semplc modfce della soluzone corrente (mosse) (ad esempo scamb tra element n soluzone e non) Termnano quando non esstono pù modfce del tpo prescelto n grado d mglorare la soluzone corrente n nglese dett Local Searc algortms Eurst.2
Algortm d Rcerca Locale (2) Es. KP-01, z = Σ p x, e W = Σ w x tp d mosse: 1. Inserzone: Se esste un oggetto non n soluzone ce può sessere nserto, nsersclo nello zano 2. Scambo 1-1: Se esste una coppa d oggett d cu l prmo sa n soluzone ed l secondo no, scambal tra loro 3. Scambo 1-2: dem, ma con una terna d oggett d cu l prmo sa n soluzone e gl altr no Eurst.3 Algortm d Rcerca Locale (3) S può esegure: l prmo scambo mglorante (frst mprovement) l mglore tra quell ammssbl (best mprovement) L nseme delle soluzon ottenbl dalla soluzone corrente con un tpo d mossa s cama ntorno (negborood) Eurst.4
Negborood Functon Dato un problema d ottmzzazone P = ( f, S ) S nseme soluzon ammssbl d P f : S R funzone obettvo S* nseme delle soluzon ottme Negborood, (Intorno, Vcnato): N : S 2 S ce S defnsce N() S nseme delle soluzon prossme ad In generale s assume ce N(), S Gl algortm Local Searc cercano d mglorare una soluzone esplorandone un Negborood Eurst.5 Iteratve Improvement Algortm Algortmo base Local Searc (a dscesa semplce) Versone Frst Improvement Procedure FI_Smple_Descent (s) /*s S sol. nzale*/ Trovata := TRUE ; wle Trovata = TRUE do Trovata := FALSE ; for eac s' N (s) do f f (s') < f (s) ten s := s' ; Trovata = TRUE ; break; end wle; return (s); Eurst.6
Iteratve Improvement Algortm (2) Converge ad un ottmo locale s rspetto ad N( ) ossa una soluzone s : f (s) f () N(s) versone Best Improvement Procedure BI_Smple_Descent (s) Trovata := TRUE ; wle Trovata = TRUE do Trovata := FALSE ; s_best = s; for eac s' N (s) do f f (s') < f (s_best) ten s_best = s f s_best < > s ten s := s_best ; Trovata = TRUE ; end wle; return (s); Eurst.7 Iteratve Improvement Algortm (3) N(s) := cardnaltà del Negborood Ogn terazone dell algortmo rcede tempo: O( N(s) * tempo necessaro a valutare f(s) ) Il numero d terazon necessare a raggungere l ottmo locale può essere molto elevato Eurst.8
Algortm Local Searc Applcabltà molto generale Flessbltà rspetto a modfce del problema Rcedono : Valutatore d una soluzone (Funzone obettvo) Verfca d ammssbltà d una soluzone Negborood functon Tecnca d esplorazone effcente del Negborood S possono applcare ance quando la soluzone non è ammssble f.ob. LS = f.ob. + penaltà * volazone de vncol Eurst.9 Algortm Local Searc (2) Problema centrale: Defnzone del Negborood Fortemente dpendente dal problema Non esstono regole general Obettvo: costrure Negborood Functons ce conducano a soluzon d elevata qualtà Dato un problema è possble defnre dvers tp d Negborood Functons Es. KP-01: nserzone, scambo 1-1, scambo 1-2 Eurst.10
Negborood Basat su Scamb (excange negboroods) Classe molto generale: S applcano quando la soluzone è una sequenza (TSP) o una partzone (KP) Es. KP-01, z = Σ p x, e W = Σ w x 1. Inserzone: Se esste un oggetto : x = 0 e W + w K, pon x = 1 ed aggorna z e W Valutazone della soluzone: tempo costante O(1) N (s) = O(n) Tempo per una terazone: O(n) Eurst.11 Negborood Basat su Scamb (2) 2. Scambo 1-1: Se esste una coppa (, ): x = 1 e x = 0 e con p p, w w (con Greedy ma verfcato) pon x = 0 e x = 1 ed aggorna z e W Valutazone della soluzone: tempo costante O(1) N (s) = O(n 2 ) = Tempo per una terazone 3. Scambo 1-2: Se esste una terna (,, ): x = 1 e x = x = 0 e p < p + p, W w + w + w K pon x = 0 e x = x = 1 ed aggorna z e W Valutazone della soluzone: tempo costante O(1) N (s) = O(n 3 ) = Tempo per una terazone Eurst.12
Scamb per TSP Data una soluzone s questa può essere descrtta medante l vettore de successor σ() := successore vertce nella soluzone 1 3 2 4 5 6 1 2 3 4 5 6 σ() 2 4 1 6 3 5 π() 3 1 5 2 6 4 Se la soluzone è orentata s possono defnre: π () := predecessore vertce nella soluzone S not ce π (σ ()) = σ (π ()) = Eurst.13 Scamb per TSP (2) s rmuovono k arc da s e s sosttuscono con k arc precedentemente non n s. k = 2 σ() σ() σ() 1. s rmuovono gl arc (,σ()) e (,σ()) 2. s nserscono gl arc (, ) e (σ(),σ()) σ() costo nuova sol. γ = c, + c σ(),σ() - c ι,σ() - c,σ() N(s) = O(n 2 ), valutazone n O(1) Eurst.14
Scamb per TSP (3) Se problema orentato (ATSP) per rottenere una soluzone ammssble vanno nvertt tutt gl arc tra e σ() σ() σ() γ = c, + c σ(),σ() - c ι,σ() - c,σ() + c, - c, per ogn arco nvertto valutazone n O(n) (s può fare n tempo costante) σ() σ() Eurst.15 Scamb per TSP (3) k = 3 σ() σ() σ() s può rcombnare n 4 mod dvers σ() N(s) = O(n 3 ), valutazone n O(1) Eurst.16
Scamb per TSP (4) σ() σ() σ() σ() σ() σ() σ() σ() Eurst.17 Scamb Or-opt Caso specale d 3-opt s consderano gl scamb n cu un gruppo d vertc consecutv (1 3) s nsersce tra 2 vertc adacent O(n²) scamb per tpo σ() σ() =σ() =σ() Eurst.18
Mglorament La qualtà dell ottmo locale raggunto dpende dalla soluzone nzale e dal negborood usato Tecnca Mult-Start s_best := + ; repeat Genera una soluzone s (dversa ad ogn terazone); s' = Smple_Descent(s); /* o BI_Smple_Descent(s) */ f f (s') < f (s_best) ten s_best := s'; untl (crtero d arresto) /*nº terazon, tempo massmo*/ S può usare un dverso N( ) ad ogn terazone Eurst.19