Problem z szukaniem glupiakow
Zadanie podróży sprzedawcy pyta o najkrótszy turyn, który odwiedza każdą miasto dokładnie raz i wraca do domu. Jest to problem NP-trudny, więc dla większych instancji nie można sprawdzić wszystkich tur - liczba możliwych ścieżek rośnie silnie wskazującym stopniem. Szukanie lokalne glupiakowe naprawia to, zaczynając od dowolnej trasy i powtarzająco stosując małe zmiany, takie jak 2-opt, który odwraca sekcję ścieżki, zachowując tylko zmianę, która shortenuje turę. Problem polega na tym, że ten rodzaj wzgórza stopniowe zatrzymuje się przy pierwszym lokalnym minimum, które znajdzie i nie ma sposobu wyjścia, nawet gdy krótsza trasa może być siedząca dokładnie nad małym wzgórzem.
Przejęcie zasady fizycznej: kryterium Metropolis
Algorytm optymalizacji zachłannego rozgrzewania, wprowadzony przez Kirkpatricka, Gelatta i Vecchi w 1983 roku, odnosi się do statystycznej mechaniki. Jakość atomów metali osiąga stałe cewki energetyczne przy wolnym ochłodzeniu; za szybkie ochłodzenie spowoduje zamarznięcie w nieuporządkowanej, wysokiej-energetycznej szklance. Zasada Metropolis-Hastings z 1953 roku literatury Monte Carlo opisuje to: zaproponuj losowe zmianę i przyjmij ją, jeśli poprawia ona cel. Jeśli pogarsza sytuację o delta-E, przyjmij ją z prawdopodobieństwem e do potęgi minus delta-E podzielonej przez temperaturę T.
const candidate = perturb(tour); // np. odwróć losowy segment const dE = cost(candidate) - cost(tour); if (dE < 0 || Math.random() < Math.exp(-dE / T)) { tour = candidate; // przyjmij, nawet jeśli pogorszy sytuację } T *= alpha; // ochłodzenie, alpha blisko 1 Na wysokiej początkowej temperaturze delta-E podzielone przez T jest małe, więc wykładnik jest bliski 1 i prawie każda ruch jest przyjmowana - szukanie robi się wolniejsze i eksploruje całą przestrzeń. Gdy temperatura spada, gorsze ruchy stały się wykładniczo mniej prawdopodobne, a do chwili, gdy temperatura jest bliska zeru, proces przyjmuje tylko poprawiające ruchy i zachowuje się jak zwykła górnicza klimbing, ale teraz zaczynając z znacznie lepszej otoczeniu przestrzeni szukania niż pojedyncze run greedy mogłoby znaleźć.
const candidate = perturb(tour); // e.g. reverse a random segment
const dE = cost(candidate) - cost(tour);
if (dE < 0 || Math.random() < Math.exp(-dE / T)) {
tour = candidate; // accept, sometimes even if worse
}
T *= alpha; // cool down, alpha close to 1
Wybór harmonogramu zanurzania
Harmonogram jest całą algorytmem w praktyce. Oryginalny teoretyczny wynik gwarantuje zbieżność do globalnego optymum tylko dla harmonogramu logarytmicznego, T(k) proporcjonalnego do 1 podzielonego przez log(k), który jest zbyt wolny, aby być wykonywalny. W praktyce używane są harmonogramy geometryczne, T(k+1) = alpha razy T(k) z alpha bliskim 0,95 do 0,999, często utrzymując temperaturę stałą dla grup ruchów na każdym poziomie przed dalszym zanurzeniem. Zbyt szybki harmonogram zanurza wyszukiwanie w złym minimum lokalnym, podobnie jak quenching; za wolny zuważyłby obliczenia bez dodatkowego uzyskania efektu. Odnowianie od najlepszego rozwiązania znalezionego do tej pory i zatrzymanie się, gdy stopień akceptacji spadnie blisko zera, to powszechne praktyczne ulepszenia.
Dlaczego to ma zastosowanie poza problemem podróży sprzedawcy
Nie ma niczego w zasadach Metropolis, co jest specyficznym dla tur. Każdy problem optymalizacji z funkcją kosztu i sposobem propozycji małych perturbacji do kandydatów na rozwiązanie można anelidować: umieszczanie układów elektronicznych, minimalizacja energii w przewrotach proteinowych, wyszukiwanie hiperparametrów sieci neuronowych, harmonogramowanie fabryki. To, co sprawia, że jest przydatne, to to, że nie wymaga gradientu ani założenia konwexitetu - tylko funkcji kosztu i struktury sąsiedztwa - co jest powodem, dla którego pozostaje standardowym punktem odniesienia dla problemów optymalizacji kombinatorycznej, do których metody oparte na gradientach nie mogą dosięgnąć.
Często zadawane pytania
Dlaczego przyjmować zamiernie gorszą rozwiązanie?
Szukanie, które akceptuje tylko poprawiające ruchy, jest zbyt głodnym szpiczem i pozostaje w pierwszej lokalnej minimum, jaką znajdzie. Czasem przyjmowanie gorszego ruchu pozwala na przejście przez niewielką górę, aby dotrzeć do lepszej doliny po drugiej stronie. Kluczem jest kontrola częstotliwości takich zdarzeń, co dokładnie robi temperatura.
Jak szybko powinna zchłodzić się temperatura?
Powoli. Klasyczne dowody konwergencji wymagają harmonicznej skali, która jest za wolna do rzeczywistego użytku. W praktyce standardowa skala geometryczna, mnożenie temperatury o stałą taką jak 0,995 po każdym ruchu lub co kilka setek ruchów, stanowi standardowy kompromis między jakością rozwiązania a czasem wykonania.
Czy symulowane ciepło zawsze znajduje optymalny turm?
Nie. Jest to heurystyka, a nie dokładna metoda. Dla niewykonwalnie wolnej skali chłodzenia szukanie konverguje do globalnego optimum z prawdopodobieństwem, ale każda skala szybsza niż potrzebna do wykonania w przyjemnym czasie, daje tylko dobry, zwykle niemal optymalny turm bez gwarancji.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Simulated Annealing — Escaping Local Minima i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Simulated Annealing — Escaping Local Minima