Wie generiere ich Nachbarn im Hill Climbing-Algorithmus?

9

Bergsteigen scheint ein sehr leistungsfähiges Werkzeug zur Optimierung zu sein. Wie man jedoch die "Nachbarn" einer Lösung generiert, ist mir immer ein Rätsel.

Zum Beispiel optimiere ich eine Lösung . Hier liegt x 1 im Bereich ( 0 , 0,1 ) , x 2 im Bereich ( 0 , 100 ) , x 3 im Bereich ( 0 , 1000000 ) . Was ist der beste Weg, um "Nachbarn" zu generieren? Ich kann hier keine "Schrittgröße" auswählen, da eine Schrittgröße von 1 für x 1 sehr groß , für x 3 jedoch sehr gering ist(x1,x2,x3)x1(0,0.1)x2(0,100)x3(0,1000000)x1x3.

Was ist der beste generische Weg, um "Nachbarn" in Bergsteigeralgorithmen zu generieren?

Vendetta
quelle

Antworten:

3

Die Lösung von Vincent wird Sie über die erste Hürde bringen. Möglicherweise fragen Sie sich immer noch, wie Sie die Schrittgröße auswählen sollen, auch wenn alle Abmessungen den gleichen Bereich haben. In diesem Fall ist es hilfreich, das Verhalten Ihrer Funktion zu verstehen, damit Sie einen geeigneten Wert auswählen können. Eine andere Möglichkeit besteht darin, die Schrittgröße basierend auf dem Farbverlauf adaptiv einzustellen (treten Sie leicht vor, wenn sich die Funktion stark ändert).

Dieses Papier könnte auch einige interessante Ideen enthalten: Über einen Hill-Climbing-Algorithmus mit adaptiver Schrittgröße: Auf dem Weg zu einem Black-Box-Optimierungsalgorithmus ohne Steuerparameter

Emre
quelle
2

Am einfachsten (und sichersten) ist es, Ihr Problem so zu parametrisieren, dass alle Parameter einen vergleichbaren Bereich haben, z. B. [0,1].

Alternativ können Sie für jeden Parameter eine andere Schrittgröße verwenden.


quelle