El término Algoritmo Genético (AG) se originó en los 70, gracias a John Henry Holland, para referirse a principios de la evolución biológica aplicados con inteligencia artificial, donde se simula la teoría de Charles Darwin sobre la supervivencia del más fuerte o apto.
En términos sencillos, recordemos que un algoritmo es un proceso que enumera una serie de pasos para encontrar una solución a determinado problema, mientras que un algoritmo genético emplea mecanismos que imitan la evolución de las especies de la biología para descubrir la respuesta más acertada a una problemática específica.
Cabe aclarar que el conjunto de soluciones que se emplean son aleatorias, ya que analizar cada uno de los posibles resultados sería una labor complicada y larga en algunos tipos de problemas. Al partir de un grupo de soluciones aleatorias se logra el resultado óptimo en poco tiempo.
Lo anterior se refiere a que cada solución a un problema se debe convertir en un vector matemático. Los algoritmos genéticos toman un conjunto de soluciones (vectores matemáticos) de forma aleatoria, plantean el problema y buscan la solución más adecuada, mientras las otras soluciones se van descartando, hasta llegar a la función objetivo o la que ofrece el mejor resultado.
Cuando las soluciones ya están ordenadas según sus resultados, con los algoritmos genéticos se busca reproducir las mejores soluciones, aquí se involucran tres mecanismos: la reproducción, el cruzamiento (combinar soluciones) y la mutación. Conforme las mejores soluciones se simulan y combinan se mutan (de forma matemática) y las peores van desapareciendo.
El paso siguiente es volver a calcular la función objetivo, con lo que se hace una nueva evaluación de las mejores soluciones, las cuales son las que más se reproducen, al implementar el cruzamiento y las mutaciones.
Las fases en las que funciona un algoritmo genético a grandes rasgos son:
- Se crea un grupo de soluciones aleatorias (población).
- Se ponen a prueba para detectar las que tienen mejores resultados.
- Se combinan las mejores respuestas.
- Mutan las respuestas para encontrar los mejores resultados.
- Se crea un nuevo grupo de respuestas más óptimas.
Este tipo de algoritmos se puede usar para buscar solución a todo tipo de función, pero se recomienda en funciones no derivables.