En computación evolutiva , la evolución diferencial ( ED ) es un método que optimiza un problema al intentar iterativamente mejorar una solución candidata con respecto a una medida dada de calidad. Dichos métodos se conocen comúnmente como metaheurísticas , ya que hacen pocas o ninguna suposición sobre el problema optimizado y pueden buscar espacios muy grandes de soluciones candidatas. Sin embargo, las metaheurísticas como la DE no garantizan que se encuentre una solución óptima.
La DE se utiliza para funciones multidimensionales de valor real , pero no utiliza el gradiente del problema que se está optimizando, lo que significa que la DE no requiere que el problema de optimización sea diferenciable , como lo requieren los métodos de optimización clásicos, como el descenso de gradiente y los métodos cuasi-newton . Por lo tanto, la DE también se puede utilizar en problemas de optimización que ni siquiera son continuos, son ruidosos, cambian con el tiempo, etc. [1]
DE optimiza un problema manteniendo una población de soluciones candidatas y creando nuevas soluciones candidatas combinando las existentes según sus fórmulas simples, y luego conservando la solución candidata que tenga la mejor puntuación o aptitud para el problema de optimización en cuestión. De esta manera, el problema de optimización se trata como una caja negra que simplemente proporciona una medida de calidad dada una solución candidata y, por lo tanto, el gradiente no es necesario.
Storn y Price introdujeron la evolución diferencial en 1995. [2] [3] [4] Se han publicado libros sobre aspectos teóricos y prácticos del uso de DE en computación paralela , optimización multiobjetivo , optimización restringida y los libros también contienen encuestas de áreas de aplicación. [5] [6] [7] [8] Se pueden encontrar encuestas sobre los aspectos de investigación multifacéticos de DE en artículos de revistas. [9] [10]
Algoritmo
Una variante básica del algoritmo DE funciona con una población de soluciones candidatas (llamadas agentes). Estos agentes se mueven en el espacio de búsqueda utilizando fórmulas matemáticas simples para combinar las posiciones de los agentes existentes en la población. Si la nueva posición de un agente es una mejora, se acepta y forma parte de la población; de lo contrario, la nueva posición simplemente se descarta. El proceso se repite y, al hacerlo, se espera, aunque no se garantiza, que finalmente se descubra una solución satisfactoria.
Formalmente, sea la función de aptitud que debe minimizarse (nótese que la maximización se puede realizar considerando la función en su lugar). La función toma una solución candidata como argumento en forma de un vector de números reales . Produce un número real como salida que indica la aptitud de la solución candidata dada. El gradiente de no se conoce. El objetivo es encontrar una solución para la cual para todos en el espacio de búsqueda, lo que significa que es el mínimo global.
Designemos una solución candidata (agente) en la población. El algoritmo DE básico puede describirse de la siguiente manera:
Seleccione los parámetros , , y .
es el tamaño de la población, es decir, el número de agentes candidatos o "padres"; una configuración típica es 10 .
El parámetro se denomina probabilidad de cruce y el parámetro se denomina ponderación diferencial . Las configuraciones típicas son y .
El rendimiento de optimización puede verse afectado en gran medida por estas opciones; consulte a continuación.
Inicializar todos los agentes con posiciones aleatorias en el espacio de búsqueda.
Hasta que se cumpla un criterio de terminación (por ejemplo, número de iteraciones realizadas o se alcance la aptitud adecuada), repita lo siguiente:
Para cada agente de la población haga lo siguiente:
Elija tres agentes de la población al azar; deben ser distintos entre sí y del agente ( se denomina vector "base").
Elija un índice aleatorio donde es la dimensionalidad del problema que se está optimizando.
Calcule la posición potencialmente nueva del agente de la siguiente manera:
Para cada , elija un número aleatorio distribuido uniformemente
Si o entonces se establece de otra manera se establece . (La posición del índice se reemplaza con certeza).
Si luego reemplazamos el agente en la población con la solución candidata mejorada o igual .
Seleccione el agente de la población que tenga la mejor aptitud y devuélvalo como la mejor solución candidata encontrada.
Selección de parámetros
La elección de los parámetros de DE puede tener un gran impacto en el rendimiento de la optimización. Por lo tanto, la selección de los parámetros de DE que produzcan un buen rendimiento ha sido objeto de mucha investigación. Storn et al. [4] [5] y Liu y Lampinen [11] idearon reglas generales para la selección de parámetros . Zaharie realizó un análisis de convergencia matemática con respecto a la selección de parámetros. [12]
Manejo de restricciones
La evolución diferencial también se puede utilizar para la optimización restringida. Un método común implica modificar la función objetivo para incluir una penalización por cualquier violación de las restricciones, expresada como: . Aquí, representa una violación de la restricción (una penalización L1) o el cuadrado de una violación de la restricción (una penalización L2).
Sin embargo, este método tiene ciertas desventajas. Un desafío importante es la selección adecuada del coeficiente de penalización . Si se establece demasiado bajo, puede que no aplique las restricciones de manera efectiva. Por el contrario, si es demasiado alto, puede ralentizar en gran medida o incluso detener el proceso de convergencia. A pesar de estos desafíos, este enfoque sigue siendo ampliamente utilizado debido a su simplicidad y porque no requiere alterar el algoritmo de evolución diferencial en sí.
Existen estrategias alternativas, como la proyección sobre un conjunto factible o la reducción de la dimensionalidad, que pueden utilizarse en casos con restricciones lineales o de caja. Sin embargo, en el contexto de restricciones no lineales generales, los métodos más fiables suelen implicar funciones de penalización.
Variantes
Se desarrollan continuamente variantes del algoritmo DE en un esfuerzo por mejorar el rendimiento de la optimización. En el algoritmo básico indicado anteriormente, son posibles muchos esquemas diferentes para realizar el cruce y la mutación de agentes; consulte, por ejemplo, [4].
^ Rocca, P.; Oliveri, G.; Massa, A. (2011). "Evolución diferencial aplicada al electromagnetismo". Revista IEEE Antennas and Propagation . 53 (1): 38–49. doi :10.1109/MAP.2011.5773566. S2CID 27555808.
^ Storn, Rainer; Price, Kenneth (1995). "Evolución diferencial: un esquema simple y eficiente para la optimización global en espacios continuos" (PDF) . Instituto Internacional de Ciencias de la Computación . TR (95). Berkeley: TR-95-012 . Consultado el 3 de abril de 2024 .
^ Storn, R.; Price, K. (1997). "Evolución diferencial: una heurística simple y eficiente para la optimización global en espacios continuos". Journal of Global Optimization . 11 (4): 341–359. doi :10.1023/A:1008202821328. S2CID 5297867.
^ abc Storn, R. (1996). "Sobre el uso de la evolución diferencial para la optimización de funciones". Conferencia bienal de la North American Fuzzy Information Processing Society (NAFIPS) . pp. 519–523. doi :10.1109/NAFIPS.1996.534789. S2CID 16576915.
^ ab Price, K.; Storn, RM; Lampinen, JA (2005). Evolución diferencial: un enfoque práctico para la optimización global. Springer. ISBN978-3-540-20950-8.
^ Feoktistov, V. (2006). Evolución diferencial: en busca de soluciones. Springer. ISBN978-0-387-36895-5.
^ GC Onwubolu y BV Babu, Nuevas técnicas de optimización en ingeniería . Consultado el 17 de septiembre de 2016 .
^ Chakraborty, Reino Unido, ed. (2008), Avances en la evolución diferencial, Springer, ISBN978-3-540-68827-3
^ S. Das y PN Suganthan, "Evolución diferencial: un estudio del estado del arte", IEEE Trans. on Evolutionary Computation, vol. 15, n.º 1, págs. 4-31, febrero de 2011, DOI: 10.1109/TEVC.2010.2059031.
^ S. Das, SS Mullick, PN Suganthan, "Avances recientes en evolución diferencial: un estudio actualizado", Swarm and Evolutionary Computation, doi:10.1016/j.swevo.2016.01.004, 2016.
^ Liu, J.; Lampinen, J. (2002). "Sobre la configuración del parámetro de control del método de evolución diferencial". Actas de la 8.ª Conferencia Internacional sobre Soft Computing (MENDEL) . Brno, República Checa. pp. 11–18.
^ Zaharie, D. (2002). "Valores críticos para los parámetros de control de algoritmos de evolución diferencial". Actas de la 8.ª Conferencia Internacional sobre Soft Computing (MENDEL) . Brno, República Checa. pp. 62–67.