Un algoritmo genético es un algoritmo que imita el proceso de selección natural. Ayudan a resolver problemas de optimización y búsqueda. Los algoritmos genéticos forman parte de la clase más amplia de los algoritmos evolutivos. Los algoritmos genéticos imitan los procesos biológicos naturales, como la herencia, la mutación, la selección y el cruce.

El concepto de algoritmos genéticos es una técnica de búsqueda que se utiliza a menudo en informática para encontrar soluciones complejas y no evidentes a problemas de optimización y búsqueda algorítmica. Los algoritmos genéticos son heurísticos de búsqueda global.

Cómo funcionan (visión general)

Un algoritmo genético mantiene una población de soluciones candidatas (individuos). Cada individuo representa una solución codificada (por ejemplo, como una cadena binaria, un vector de números reales o una permutación). El algoritmo evalúa cada individuo mediante una función de aptitud (fitness), que mide la calidad de la solución respecto al objetivo. A partir de esa evaluación se seleccionan individuos para producir la siguiente generación mediante operadores inspirados en la biología: selección, cruce (crossover) y mutación. El proceso se repite durante varias generaciones hasta alcanzar un criterio de parada (número de generaciones, tiempo límite o aptitud deseada).

Componentes principales

  • Codificación (representación): forma en que se representa cada solución (cromosoma). Ejemplos: cadenas binarias, arreglos de números reales, permutaciones (útiles en problemas de rutas).
  • Población: conjunto de individuos que evolucionan. Su tamaño influye en la exploración y en el coste computacional.
  • Función de aptitud (fitness): evalúa cuán buena es una solución. Debe reflejar correctamente el objetivo del problema.
  • Operadores evolutivos: mecanismos para generar nueva descendencia:
    • Selección: métodos como ruleta, torneo, selección por rango (determinan qué individuos procrean).
    • Cruce (crossover): mezcla material genético de padres a hijos (uno o dos puntos, uniforme, crossover aritmético para reales, etc.).
    • Mutación: introduce variación aleatoria para evitar estancamientos (bit-flip, perturbación gaussiana, intercambio en permutaciones).
  • Criterio de parada: número máximo de generaciones, convergencia de la población, tiempo límite o calidad mínima alcanzada.

Pasos típicos del algoritmo

  1. Inicializar una población aleatoria.
  2. Evaluar la aptitud de cada individuo.
  3. Repetir hasta el criterio de parada:
    1. Seleccionar padres según su aptitud.
    2. Aplicar cruce para generar descendencia.
    3. Aplicar mutación a los hijos.
    4. Evaluar la aptitud de la nueva descendencia.
    5. Formar la nueva población (reemplazo), manteniendo o no algunos mejores individuos (elitismo).
  4. Devolver la mejor solución encontrada.

Variantes y mejoras

  • Algoritmos genéticos elitistas: preservan los mejores individuos entre generaciones para asegurar que la calidad no empeore.
  • Algoritmos genéticos multiobjetivo (p. ej. NSGA-II): buscan soluciones que optimicen simultáneamente varios objetivos.
  • Híbridos (meméticos): combinan AG con búsquedas locales (por ejemplo, hill climbing) para afinar soluciones rápidamente.
  • Representaciones especializadas: codificaciones específicas para problemas concretos (permutaciones para rutas, grafos, etc.).

Ventajas y limitaciones

  • Ventajas:
    • Buena capacidad de exploración del espacio de búsqueda (evitan quedar atrapados fácilmente en óptimos locales si están bien diseñados).
    • Flexibles: aplicables a problemas donde no hay derivadas o la función objetivo es ruidosa o irregular.
    • Paralelizables: evaluación de individuos puede distribuirse en varios procesadores.
  • Limitaciones:
    • Necesitan ajuste de parámetros (tamaño de población, tasas de cruce y mutación), lo que puede requerir experimentación.
    • Pueden converger prematuramente a soluciones subóptimas si falta diversidad.
    • Coste computacional alto si la evaluación de la aptitud es cara.

Aplicaciones prácticas

Los algoritmos genéticos se usan en multitud de campos, entre ellos:

  • Optimización combinatoria: problemas de enrutamiento, programación de tareas y asignación de recursos.
  • Diseño y ingeniería: optimización de estructuras, parámetros de sistemas y diseño de circuitos.
  • Aprendizaje automático: ajuste de hiperparámetros, selección de características y diseño de arquitecturas.
  • Bioinformática: alineamiento de secuencias, diseño de proteínas y modelado evolutivo.
  • Juegos e inteligencia artificial: generación de comportamientos, estrategias y parámetros de agentes.

Consejos prácticos

  • Elegir una representación adecuada: la codificación condiciona la eficacia de los operadores.
  • Diseñar una función de aptitud clara y escalada para evitar dominancias inadecuadas.
  • Emplear técnicas para mantener diversidad (mutación adaptativa, niching, reintroducción aleatoria).
  • Usar elitismo moderado para no perder buenos individuos, pero evitando sobreexplotación.
  • Probar valores de parámetros mediante experimentos o métodos automáticos (optimización de parámetros).

Resumen

Un algoritmo genético es una técnica heurística inspirada en la evolución natural que busca soluciones óptimas mediante la iteración de selección, cruce y mutación sobre una población de soluciones. Son potentes para problemas complejos y no lineales, pero requieren decisiones de diseño (representación, operadores y parámetros) y cuidado para evitar convergencia prematura o costes computacionales excesivos.