2014-09-04 7 views
2

Raison de l'affichage de la question: Mon expérience de programmation se situe quelque part entre amateur et modéré (mais je suis assez rouillé à ce stade). Je vais probablement travailler avec C++, mais je serais prêt à passer en Python. J'ai une certaine expérience avec des algorithmes de tri/recherche de base comme binaire, M, A *, etc. J'ai entendu dire que A * peut être un algorithme de recherche assez efficace, mais que lorsque plusieurs cibles de recherche commencent à être désirées, sur l'efficacité en A * par rapport à d'autres algorithmes. Je suis à la recherche de plusieurs problèmes de recherche/optimisation avec un espace de problèmes multidimensionnel, donc l'efficacité va vraiment commencer à importer.Algorithmes de multi-recherche efficaces

La plupart des algorithmes de recherche multiple que j'ai vus sont appelés algorithmes de recherche de chaîne. Je voulais savoir si ces algorithmes fonctionnaient bien sur d'autres types de problèmes, ou si je devais fournir des recommandations pour d'autres algorithmes plus efficaces pour le scénario que je fournis. Je reconnais que j'ai besoin de faire plus de recherches pour comprendre la différence entre l'optimisation et les algorithmes de multi-recherche, mais les idées actuelles que j'ai semblent bien fonctionner avec les algorithmes de multi-recherche. Je suis en train d'étudier les surfaces d'énergie potentielles et de trouver des approximations grossières des minima locaux. Imaginez quelque chose comme une surface vallonnée. Maintenant remplissons un graphe 3D des énergies potentielles d'un objet à n'importe quelle position x et y en fonction des deux coordonnées de position. Je suis intéressé à trouver tous les minima locaux dans une limite définie de cette surface. J'ai besoin d'algorithme (s) qui me permettent d'échantillonner la surface à une certaine résolution et ensuite commencer à chercher les points les plus bas pour les minima locaux. En substance, je pensais à créer un maillage basse résolution avec une sorte de recherche en largeur d'abord contrainte, puis en utilisant un autre algorithme intelligent pour augmenter la résolution du maillage aux points les plus faibles. Idéalement, les algorithmes seraient utilisés avec plusieurs threads, mais ils doivent être capables de supporter un PES dimensionnel arbitraire. J'ai une fonction d'évaluation en boîte noire qui fournit l'énergie potentielle. Voici une illustration en 2 + 1 dimensions ci-dessous.

enter image description here

Envision la zone rouge est une des dimensions de la maille d'échantillonnage initiale, et il traversait effectivement à proximité des minima locaux. L'algorithme commence alors à augmenter la résolution du maillage autour des vallées pendant quelques étapes avant de sélectionner la valeur la plus faible dans cette région. Il va ensuite passer à un autre point bas.

+0

Je suggère d'utiliser le terme "recherche multidimensionnelle". Si la surface est convexe, il y aura un seul optimum global et vous pouvez utiliser une approche simple d'escalade pour le trouver, mais il semble que ce n'est pas le cas. Si elle est lisse, la méthode de Newton trouvera rapidement un * optimum *; vous pouvez essayer plusieurs redémarrages pour augmenter les chances de trouver le minimum global. Vous pouvez toujours essayer une méthode de recherche générale comme Nelder-Mead, mais encore une fois cela ne garantit pas l'optimalité. –

Répondre

2

Vous essayez de résoudre un problème d'optimisation globale.

http://en.wikipedia.org/wiki/Global_optimization est une bonne référence qui a un certain nombre de liens vers les méthodes utilisées pour résoudre ce problème. J'ai déjà utilisé le recuit simulé avec succès, mais la solution à votre problème va vraiment diminuer la taille et la complexité de votre espace problème.

Questions connexes