Jak generować sąsiadów w algorytmie wspinaczki górskiej?

9

Wspinaczka pod górę wydaje się być bardzo potężnym narzędziem do optymalizacji. Jednak sposób generowania „sąsiadów” rozwiązania zawsze mnie zastanawia.

Na przykład optymalizuję rozwiązanie (x1,x2),x3)). Tutajx1 jest w zasięgu (0,0,1), x2) jest w zasięgu (0,100), x3) jest w zasięgu (0,1000000). Jaki jest najlepszy sposób na generowanie „sąsiadów”? Naprawdę nie mogę tutaj wybrać „rozmiaru kroku”, ponieważ rozmiar kroku 1 jest ogromnyx1, ale bardzo niewielkie x3).

Jaki jest najlepszy ogólny sposób generowania „sąsiadów” w algorytmach wspinania się na wzgórze?

Wendeta
źródło

Odpowiedzi:

3

Rozwiązanie Vincenta poprowadzi cię przez pierwszą przeszkodę. Być może nadal zastanawiasz się, jak wybrać rozmiar kroku, nawet jeśli wszystkie wymiary mają ten sam zakres. W takim przypadku pomaga zrozumieć zachowanie funkcji, dzięki czemu można wybrać odpowiednią wartość. Innym sposobem jest adaptacyjne ustawienie wielkości kroku na podstawie gradientu (lekko stąpaj, jeśli funkcja bardzo się zmienia).

Ten artykuł może mieć także kilka interesujących pomysłów: na algorytmie wspinaczki z adaptacyjnym rozmiarem kroku: w kierunku algorytmu optymalizacji czarnej skrzynki bez parametrów

Emre
źródło
2

Najłatwiejszym (i najbezpieczniejszym) jest sparametryzowanie problemu, aby wszystkie parametry miały porównywalny zakres, powiedzmy [0,1].

Alternatywnie możesz użyć innego rozmiaru kroku dla każdego parametru.


źródło