Estoy tratando de optimizar algunos parámetros del campo de fuerza en un marco molecular para que el resultado de la simulación se acerque lo más posible a la estructura experimental.
En el pasado, he escrito un algoritmo genético donde esencialmente muestro aleatoriamente el espacio de parámetros, selecciono la combinación que funciona mejor, creo conjuntos de parámetros mutados y repito el proceso hasta obtener los mejores parámetros para alguna función objetivo. También realizo una optimización del algoritmo en sí, donde la distribución de los valores mutados se optimiza para favorecer una convergencia más rápida.
Mi asesor no ha oído hablar de algoritmos genéticos, y nunca he oído hablar de los métodos que recomendó: el método de gradiente conjugado y el algoritmo simplex.
En mi situación, la función objetivo es una función de la desviación de cada átomo de su ubicación experimental (por lo que es una optimización estructural). El sistema es de 4-10K átomos. ¿Vale la pena invertir tiempo en aprender CGM o el algoritmo simplex? De los tres, ¿cuál es el mejor para esta situación?
Respuestas:
El método de gradiente conjugado es bueno para encontrar el mínimo de una función estrictamente convexa. Esto es típico cuando reformula una PDE elíptica no lineal como un problema de optimización. Si desea obtener información al respecto, le recomiendo que lea primero sobre el método CG para sistemas lineales, para el cual una Introducción al método de gradiente conjugado sin el dolor agonizante es una buena referencia. Desafortunadamente, muchos libros lo tratan sacando el algoritmo de un sombrero sin la menor preocupación por si lo entiendes a un nivel intuitivo, de ahí el título. A partir de ahí, no es un gran salto para ver cómo se puede diseñar un método de gradiente conjugado no lineal.
Por lo que sé sobre algoritmos genéticos, serían más adecuados para encontrar el mínimo global de un objetivo funcional que tiene muchos mínimos locales, que puede ser el caso de los sistemas moleculares que tienen muchos equilibrios metaestables. En ese caso, la función objetivo no es convexa en todas partes, lo que impide el uso de CG. El costo es la convergencia más lenta de algoritmos aleatorios.
Si vale la pena que aprenda sobre CG depende de:
Mis dos centavos: es una herramienta bastante ordenada, pero la uso todo el tiempo, así que soy parcial.
fuente
También puedes mirar CMAES . Básicamente se reduce a CG para funciones convexas, pero representa un optimizador global y robusto para otros tipos de funciones (incluidas las funciones no convexas con múltiples mínimos). Sin embargo, no he visto su aplicación a algo más grande que un par de cientos de incógnitas.
Tenga en cuenta también que CG se puede aplicar en combinación con la regularización de Tikhonov que, de alguna manera, hace que su función sea más convexa y más fácil de minimizar, aunque a costa de algún sesgo en la solución, que a menudo es una compensación aceptable.
fuente