Algoritmi euristici: III – Ricerca Locale Algoritmi di Ricerca

29/04/200
5
Algoritmi euristici:
III – Ricerca Locale
Daniele Vigo
D.E.I.S. - Università di Bologna
[email protected]
rev. 2.0 - aprile 2005
Algoritmi di Ricerca Locale
• partono da una soluzione (generalm. ammissibile)
• cercano iterativamente di migliorarla effettuando
semplici modifiche della soluzione corrente (mosse)
(ad esempio scambi tra elementi in soluzione e non)
• Terminano quando non esistono più modifiche del
tipo scelto in grado di migliorare la soluzione
corrente
• in inglese detti Local Search algorithms
• Si possono applicare anche quando la soluzione non
è ammissibile
D. Vigo
Eurist.2
1
29/04/200
5
Algoritmi di Ricerca Locale (2)
•
Es. KP-01, z = Σ pi xi , e W’ = Σ wi xi
tipi di mosse:
1. Inserzione: Se esiste un oggetto j non in soluzione
che può sessere inserito, inseriscilo nello zaino
2. Scambio 1-1: Se esiste una coppia di oggetti di cui
il primo sia in soluzione ed il secondo no,
scambiali tra loro
3. Scambio 1-2: idem, ma con una terna di oggetti di
cui il primo sia in soluzione e gli altri no
D. Vigo
Eurist.3
Algoritmi di Ricerca Locale (3)
• Si può eseguire:
• il primo scambio migliorante (first improvement)
• il migliore tra quelli ammissibili (best improvement)
• L’insieme delle soluzioni ottenibili dalla soluzione
corrente con un tipo di mossa si chiama intorno
(neighborhood)
D. Vigo
Eurist.4
2
29/04/200
5
Neighborood Function
• Dato un problema di ottimizzazione P = ( f, S )
• S
• f:S→R
• S*
insieme soluzioni ammissibili di P
funzione obiettivo
insieme delle soluzioni ottime
• Neighborhood, (Intorno, Vicinato):
N : S → 2S che ∀ i ∈ S definisce N(i) ⊆ S
insieme delle soluzioni “prossime” ad i
• In generale si assume che i ∈ N(i), ∀ i ∈ S
• Gli algoritmi Local Search cercano di migliorare
una soluzione esplorandone un Neighborhood
D. Vigo
Eurist.5
Iterative Improvement Algorithm
• Algoritmo base Local Search (a discesa semplice)
• Versione “First Improvement”
Procedure FI_Simple_Descent (s) /*s ∈ S sol. iniziale*/
Trovata := TRUE ;
while Trovata = TRUE do
Trovata := FALSE ;
for each s' ∈ N (s) do
if f (s') < f (s) then
s := s' ; Trovata = TRUE ; break;
end while;
return (s);
D. Vigo
Eurist.6
3
29/04/200
5
Iterative Improvement Algorithm (2)
• Converge ad un ottimo locale s rispetto ad N(•)
ossia una soluzione s : f (s) ≤ f (i) ∀ i ∈ N(s)
• versione “Best Improvement”
Procedure BI_Simple_Descent (s)
Trovata := TRUE ;
while Trovata = TRUE do
Trovata := FALSE ; s_best = s;
for each s' ∈ N (s) do
if f (s') < f (s_best) then s_best = s’
if s_best < > s then s := s_best ; Trovata = TRUE ;
end while;
return (s);
D. Vigo
Eurist.7
Iterative Improvement Algorithm (3)
• |N(s)| := cardinalità del Neighborhood
• Ogni iterazione dell’algoritmo richiede tempo:
O(|N(s)| × tempo necessario a valutare f(s) )
• Il numero di iterazioni necessarie a raggiungere
l’ottimo locale può essere molto elevato
D. Vigo
Eurist.8
4
29/04/200
5
Algoritmi Local Search
• Applicabilità molto generale
• Flessibilità rispetto a modifiche del problema
• Richiedono :
•
•
•
•
Valutatore di una soluzione (Funzione obiettivo)
Verifica di ammissibilità di una soluzione
Neighborhood function
Tecnica di esplorazione efficiente del Neighborhood
• Si possono applicare anche quando la soluzione
non è ammissibile
f.ob.LS = f.ob. + penalità * violazione dei vincoli
D. Vigo
Eurist.9
Algoritmi Local Search (2)
• Problema centrale: Definizione del Neighborhood
• Fortemente dipendente dal problema
• Non esistono regole generali
• Obiettivo: costruire Neighborhood Functions che
conducano a soluzioni di elevata qualità
• Dato un problema è possibile definire diversi tipi di
Neighborhood Functions
• Es. KP-01: inserzione, scambio 1-1, scambio 1-2 …
D. Vigo
Eurist.10
5
29/04/200
5
Neighborhood Basati su Scambi
•
•
In inglese: exchange neighborhoods
Classe molto generale: Si applicano quando la
soluzione è una sequenza (TSP) o una partizione
(KP)
• Es. KP-01, z = Σ pi xi , e W’ = Σ wi xi
1. Inserzione: Se esiste un oggetto j:
xj = 0 e W’ + wj≤ K, poni xj = 1 ed aggiorna z e W’
•
•
•
Valutazione della soluzione: tempo costante O(1)
|N (s)| = O(n)
Tempo per una iterazione: O(n)
D. Vigo
Eurist.11
Neighborhood Basati su Scambi (2)
2. Scambio 1-1: Se esiste una coppia (i, j):
xi = 1 e xj = 0 e con pi ≤ pj , wi ≥ wj (con Greedy mai
verificato) poni xi = 0 e xj = 1 ed aggiorna z e W’
• Valutazione della soluzione: tempo costante O(1)
• |N (s)| = O(n2) = Tempo per una iterazione
3. Scambio 1-2: Se esiste una terna (i, j, h):
xi = 1 e xj = xh = 0 e pi < pj + ph , W’ – wi + wj + wh ≤ K
poni xi = 0 e xj = xh = 1 ed aggiorna z e W’
• Valutazione della soluzione: tempo costante O(1)
• |N (s)| = O(n3) = Tempo per una iterazione
D. Vigo
Eurist.12
6
29/04/200
5
Scambi per TSP
• Data una soluzione s questa può essere descritta
mediante il vettore dei successori
• σ(i) := successore vertice i nella soluzione
2
1
3
i
4
6
1 2 3 4 5 6
σ(i) 2 4 1 6 3 5
5
π(i) 3 1 5 2 6 4
• Se la soluzione è orientata si possono definire:
• π (i) := predecessore vertice i nella soluzione
• Si noti che π (σ (i)) = σ (π (i)) = i
D. Vigo
Eurist.13
Scambi per TSP (2)
• si rimuovono k archi da s e si sostituiscono con k
archi precedentemente non in s.
k=2
i
i
j
j
⇒
σ(j)
σ(i)
σ(j)
σ(i)
1. si rimuovono gli archi (i,σ(i)) e (j,σ(j))
2. si inseriscono gli archi (i, j) e (σ(i),σ(j))
• costo nuova sol. γij = ci,j+ cσ(i),σ(j) - cι,σ(i) - cj,σ(j)
• |N(s)| = O(n2), valutazione in O(1)
D. Vigo
Eurist.14
7
29/04/200
5
Scambi per TSP (3)
• Se problema orientato (ATSP)
j
i
j
i
⇒
σ(i)
σ(j)
σ(i)
σ(j)
• per riottenere una soluzione ammissibile vanno
invertiti tutti gli archi tra j e σ(i)
•
γij = ci,j+ cσ(i),σ(j) - cι,σ(i) - cj,σ(j) …
+ cσ(h),h - ch,σ(h) per ogni arco invertito
• valutazione in O(n) (si può fare in tempo costante)
D. Vigo
Eurist.15
Scambi per TSP (3)
• k=3
j
i
σ(i)
σ(h)
h
j
σ(j)
i
σ(i)
σ(h)
h
σ(j)
D. Vigo
• si può ricombinare
in 4 modi diversi
• |N(s)| = O(n3),
• valutazione in O(1)
Eurist.16
8
29/04/200
5
j
Scambi per TSP (4)
j
i
i
σ(i)
σ(i)
σ(h)
σ(h)
h
h
σ(j)
j
σ(j)
j
i
i
σ(i)
σ(i)
σ(h)
σ(h)
h
h
σ(j)
σ(j)
D. Vigo
Eurist.17
Scambi Or-opt
• Caso speciale di 3-opt (proposti da Or)
• si considerano gli scambi in cui un gruppo di vertici
consecutivi (1…3) si inserisce tra 2 vertici adiacenti
• O(n²) scambi per tipo
σ(i)
σ(i)
i
i
j
σ(h)
D. Vigo
h=σ(j)
j
σ(h)
h=σ(j)
Eurist.18
9
29/04/200
5
Miglioramenti
• La qualità dell’ottimo locale raggiunto dipende dalla
soluzione iniziale e dal neighborhood usato
• Tecnica Multi-Start: genera diverse soluzioni iniziali
(ad esempio con tecniche greedy e perturbazioni
random) + ricerca locale per ciascuna di esse
altra soluzione
iniziale
soluzione iniziale
ottimo locale
altro ottimo
locale
D. Vigo
Eurist.19
Miglioramenti (2)
• Tecnica Multi-Start
s_best := + ∞;
repeat
Genera una soluzione s (diversa ad ogni iterazione);
s' = FI_Simple_Descent(s); /* o BI_Simple_Descent(s) */
if f (s') < f (s_best)
then s_best := s';
until (criterio di arresto) /*nº iterazioni, tempo massimo*/
• Variante Multi-Level: si può usare un diverso N(•) ad ogni
iterazione
D. Vigo
Eurist.20
10