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?

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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.