Evolución diferencial ( ing. evolución diferencial ) - un método de optimización matemática multidimensional , que pertenece a la clase de algoritmos de optimización estocástica (es decir, funciona con números aleatorios) y utiliza algunas ideas de algoritmos genéticos , pero, a diferencia de ellos, no requiere trabajar con variables en código binario.
Este es un método de optimización directa, es decir, solo requiere la capacidad de calcular los valores de la función objetivo, pero no sus derivadas. El método de evolución diferencial está diseñado para encontrar el mínimo (o máximo) global de funciones no diferenciables, no lineales, multimodales (que posiblemente tengan una gran cantidad de extremos locales) de muchas variables. El método es fácil de implementar y usar (contiene pocos parámetros de control que requieren selección) y se paraleliza fácilmente .
El método de evolución diferencial fue desarrollado por Rainer Storn y Kenneth Price, publicado por primera vez por ellos en 1995 [1] y desarrollado aún más en su trabajo posterior. [2] [3]
En su forma básica, el algoritmo se puede describir de la siguiente manera. Inicialmente, se genera un conjunto de vectores, llamado generación. Los vectores son puntos del espacio bidimensional en los que se define la función objetivo , que se quiere minimizar. En cada iteración, el algoritmo genera una nueva generación de vectores mediante la combinación aleatoria de vectores de la generación anterior. El número de vectores en cada generación es el mismo y es uno de los parámetros del método.
La nueva generación de vectores se genera de la siguiente manera. Para cada vector de la generación anterior , se seleccionan tres vectores aleatorios diferentes entre los vectores de la generación anterior, con la excepción del vector en sí , y el llamado vector mutante se genera mediante la fórmula:
donde es uno de los parámetros del método, alguna constante real positiva en el intervalo [0, 2].
Sobre el vector mutante se realiza una operación de cruce , que consiste en reemplazar algunas de sus coordenadas con las coordenadas correspondientes del vector original (cada coordenada se reemplaza con una cierta probabilidad, que también es uno de los parámetros de este método). El vector obtenido después del cruce se denomina vector de prueba. Si resulta ser mejor que el vector (es decir, el valor de la función objetivo se ha vuelto más pequeño), en la nueva generación, el vector se reemplaza por un vector de prueba; de lo contrario, permanece .
El motor de búsqueda Yandex utiliza el método de evolución diferencial para mejorar sus algoritmos de clasificación. [4] [5]
Enlaces externos :
de optimización | Métodos|
---|---|
unidimensional |
|
orden cero | |
Primer orden | |
segundo orden | |
estocástico | |
Métodos de programación lineal | |
Métodos de programación no lineal |
Aprendizaje automático y minería de datos | |
---|---|
Tareas | |
Aprendiendo con un maestro | |
análisis de conglomerados | |
Reducción de dimensionalidad | |
Pronóstico estructural | |
Detección de anomalías | |
Graficar modelos probabilísticos | |
Redes neuronales | |
Aprendizaje reforzado |
|
Teoría | |
revistas y congresos |
|