Metaheurystyki — Symulowane Wyżarzanie i Tabu Search


Pojęcia wspólne — sąsiedztwo i przeszukiwanie lokalne

Symbol Znaczenie
ui ∈ UBieżące rozwiązanie dopuszczalne
N: U → 2UOdwzorowanie generujące sąsiedztwo
Ui ⊂ USąsiedztwo rozwiązania ui
RuchDziałanie: ui → uj ∈ Ui

Problem: Czysty Local Search (akceptuj tylko poprawę) utyka w lokalnym optimum, które może być dalekie od globalnego. Metaheurystyki rozwiązują ten problem.


Symulowane Wyżarzanie (Simulated Annealing — SA)

Inspirowane procesem wyżarzania kryształów: podgrzewanie (swobodne poruszanie cząsteczek) → powolne chłodzenie → stan minimalnej energii.

SA vs Hill Climbing

Mechanizm akceptacji — rozkład Boltzmanna

\[ P(\text{akceptacja}) = \begin{cases} 1 & Q(u_j) \leq Q(u_i) \\ e^{-\Delta Q / T_k} & Q(u_j) > Q(u_i) \end{cases} \]

Schemat algorytmu SA

u = u₀             // rozwiązanie startowe
T = T₀             // temperatura początkowa
WHILE nie_stop:
  FOR k = 1 TO L(T):
    u_j = generate_neighbor(u)
    ΔQ = Q(u_j) - Q(u)
    IF ΔQ ≤ 0 OR rand() < exp(-ΔQ/T):
      u = u_j        // akceptuj
  T = α·T           // schładzaj (0.9 ≤ α ≤ 0.99)
RETURN u_best

Parametry SA

Parametr Rola Typowe wartości
T₀Temperatura początkowaP ≈ 0.8 dla typowego ΔQ
αWspółczynnik chłodzenia0.90–0.99 (geometryczne)
L(T)Długość epokiStała lub rosnąca
TminTemperatura końcowaBardzo niska

Przeszukiwanie Tabu (Tabu Search — TS)

Deterministyczne przeszukiwanie sąsiedztwa z listą tabu blokującą ostatnio odwiedzane ruchy.

Kluczowe pojęcia

Pojęcie Opis
Lista tabu (TL)Zbiór zabronionych ruchów z ostatnich t iteracji
KadencjaLiczba iteracji, przez które ruch jest zakazany
Kryterium aspiracjiRuch tabu dozwolony gdy prowadzi do lepszego niż u_best
IntensyfikacjaKoncentracja wokół obiecujących regionów
DywersyfikacjaWymuszanie eksploracji nowych obszarów

Schemat algorytmu TS

u = u₀; TL = []
WHILE nie_stop:
  cand = generate_neighborhood(u)
  FOR u_j IN cand:
    IF move(u→u_j) ∉ TL OR aspiration(u_j):
      allowed.add(u_j)
  u = argmin{Q(u_j) : u_j ∈ allowed}
  TL.add(last_move); IF len(TL)>kadencja: TL.pop()
RETURN u_best

Typy pamięci w TS

Typ Zastosowanie
Short-termLista tabu — unikanie cykli
Intermediate-termCechy obiecujących rozwiązań — intensyfikacja
Long-term (frequency)Częstość wizyt w regionach — dywersyfikacja

Porównanie SA vs TS

Cecha SA TS
PrzeszukiwanieLosoweDeterministyczne
Ucieczka z lok. optimumLosowa akceptacja gorszychLista tabu wymusza nowe obszary
PamięćBrak (tylko T)Short/long-term memory
ImplementacjaProstaBardziej złożona
ZastosowaniaTSP, szeregowanie, ciągłeTSP, szeregowanie, dyskretne
*Na podstawie wykładów prof. J. Józefczyka, PWr.