Los algoritmos evolutivos son una familia de algoritmos de optimización basados en el principio de la selección natural darwiniana . Como parte de la selección natural, un entorno dado tiene una población de individuos que compiten por la supervivencia y la reproducción. La capacidad de cada individuo para lograr estos objetivos determina su posibilidad de tener hijos, en otras palabras, transmitir sus genes a la próxima generación de individuos, quienes por razones genéticas tendrán una mayor probabilidad de tener éxito, incluso mejor, en la realización de estos Dos objetivos.
Este principio de mejora continua a lo largo de las generaciones lo toman los algoritmos evolutivos para optimizar las soluciones a un problema. En la generación inicial , una población compuesta por diferentes individuos se genera aleatoriamente o por otros métodos. Un individuo es una solución al problema, más o menos buena: la calidad del individuo con respecto al problema se llama aptitud , que refleja la adecuación de la solución al problema a resolver. Cuanto mayor sea la aptitud de un individuo, mayor será la probabilidad de transmitir parte o la totalidad de su genotipo a los individuos de la próxima generación.
Un individuo se codifica como un genotipo , que puede tener cualquier forma, como un vector de ** bits ( algoritmos genéticos ) o un vector real (estrategias de evolución). Cada genotipo se transforma en un fenotipo cuando se evalúa al individuo, es decir, cuando se calcula su aptitud. En algunos casos, el fenotipo es idéntico al genotipo: se llama codificación directa . De lo contrario, la codificación se llama indirecta. Por ejemplo, suponga que desea optimizar el tamaño de un paralelepípedo rectangular definido por su longitud, altura y ancho. Para simplificar el ejemplo, suponga que estas tres cantidades son enteros entre 0 y 15. Luego podemos describir cada una de ellas utilizando un número binario de 4 bits. Un ejemplo de una posible solución puede ser el genotipo 0001 0111 01010. El fenotipo correspondiente es un paralelepípedo de longitud 1, altura 7 y ancho 10.
Durante la transición de la generación anterior a la nueva se denominan operadores de variación , cuyo propósito es manipular individuos. Hay dos tipos distintos de operadores de variación:
- los operadores de mutación , que se utilizan para introducir variaciones dentro del mismo individuo, como mutaciones genéticas;
- los operadores cruzados , que se utilizan para cruzar al menos dos genotipos diferentes, como cruces genéticos de la reproducción.
Los algoritmos evolutivos han demostrado su eficacia en diversos campos, como la investigación de operaciones, la robótica, la biología, los matices o la criptografía. Además, pueden optimizar múltiples objetivos simultáneamente y pueden usarse como cajas negras porque no asumen ninguna propiedad en el modelo matemático para optimizar. Su única limitación real es la complejidad computacional.