Comment générer des voisins dans l'algorithme d'escalade?

9

L'escalade semble être un outil d'optimisation très puissant. Cependant, comment générer les «voisins» d'une solution me laisse toujours perplexe.

Par exemple, j'optimise une solution . Ici est dans la plage(x1,x2,x3)x1(0,0.1) , est dans la plage ( 0 , 100 ) , x 3 est dans la plage ( 0 , 1000000 ) . Quelle est la meilleure façon de générer des "voisins"? Je ne peux pas vraiment choisir une "taille de pas" ici, car une taille de pas de 1 est énorme à x 1 , mais très mineure à x 3 .x2(0,100)x3(0,1000000)x1x3

Quelle est la meilleure façon générique de générer des "voisins" dans les algorithmes d'escalade?

Vendetta
la source

Réponses:

3

La solution de Vincent vous permettra de surmonter le premier obstacle. Vous vous demandez peut-être encore comment sélectionner la taille de pas même si toutes les dimensions ont la même plage. Dans ce cas, cela aide à comprendre le comportement de votre fonction afin que vous puissiez sélectionner une valeur appropriée. Une autre façon consiste à définir de manière adaptative la taille du pas en fonction du gradient (marchez légèrement si la fonction change beaucoup).

Cet article pourrait aussi avoir des idées intéressantes: Sur un algorithme d'escalade avec une taille de pas adaptative: vers un algorithme d'optimisation de boîte noire sans paramètre de contrôle

Emre
la source
2

Le plus simple (et le plus sûr) est de re-paramétrer votre problème afin que tous les paramètres aient une plage comparable, disons [0,1].

Vous pouvez également utiliser une taille de pas différente pour chaque paramètre.


la source