Evolución — Guía

Algoritmos genéticos y selección natural simulada
Abrir simulación
¿Qué es un algoritmo genético?

Un algoritmo genético simula la evolución por selección natural. Poblaciones de "individuos" (soluciones) evolucionan hacia óptimos mediante selección, cruce y mutación.

Fitness Selección Crossover Mutación Generaciones

John Holland (1975): Formalizó los algoritmos genéticos inspirándose en Darwin. Demostró que la evolución puede "programarse" para resolver problemas.

Mecanismos de Selección

Los individuos con mayor fitness tienen más probabilidad de reproducirse.

  • Ruleta: P(selección) ∝ fitness
  • Torneo: Competencia entre k individuos
  • Ranking: Basado en posición, no valor absoluto
  • Elitismo: Los mejores pasan directamente

Operadores Genéticos

  • Crossover (cruce): Combina genes de dos padres en punto(s) de corte
  • Mutación: Cambio aleatorio de un gen (tasa típica: 1-5%)
  • Inversión: Revierte segmento del cromosoma

Balance: Exploración (mutación alta) vs Explotación (selección fuerte).

Paisaje de Fitness

  • Óptimo global: Mejor solución posible
  • Óptimos locales: Buenos pero no los mejores
  • Valle: Zona de bajo fitness
  • Presión selectiva: Qué tan rápido converge
  • Diversidad: Explorar más del espacio
  • Convergencia prematura: Atascado en óptimo local
Problema: Sin mutación suficiente, la población puede quedar "atrapada" en un óptimo local. Con demasiada mutación, nunca converge.

Experimentos guiados

Experimento 1

Observar la evolución del fitness

Hipótesis

El fitness promedio de la población aumentará con cada generación, siguiendo una curva que se desacelera al acercarse al óptimo.

  1. Inicia con una población aleatoria (fitness bajo y diverso)
  2. Ejecuta 50 generaciones observando la gráfica de fitness
  3. Nota cómo el fitness promedio sube rápido al inicio
  4. Observa la desaceleración cuando se acerca al óptimo (rendimientos decrecientes)
¿Por qué importa? Esta curva de "mejora rápida → meseta" es universal en optimización y aprendizaje.
Experimento 2

Efecto de la tasa de mutación

Hipótesis

Existe una tasa de mutación óptima: muy baja causa convergencia prematura, muy alta impide convergencia.

  1. Ejecuta evolución con mutación = 0% — observa convergencia prematura
  2. Aumenta a mutación = 1% — mejor exploración
  3. Prueba mutación = 50% — el sistema no converge (búsqueda aleatoria)
  4. Encuentra el valor óptimo para tu problema (generalmente 1-5%)
¿Por qué importa? En biología real, las tasas de mutación están optimizadas por la evolución misma (meta-evolución).
Experimento 3

Tamaño de población y diversidad

Hipótesis

Poblaciones más grandes mantienen más diversidad genética y escapan mejor de óptimos locales.

  1. Ejecuta con población N = 10 — observa pérdida rápida de diversidad
  2. Aumenta a N = 100 — más variantes coexisten
  3. Compara cuál encuentra mejores soluciones después de 100 generaciones
  4. Relaciona con la deriva genética: poblaciones pequeñas son más "ruidosas"
¿Por qué importa? Esta es la razón por la cual la conservación de biodiversidad importa: poblaciones grandes son más resilientes.

Conexiones interdisciplinarias

⚠️ Limitaciones de la simulación

  • Fitness definido: En la vida real, el fitness es emergente y cambiante
  • Genoma fijo: No modela duplicación de genes ni cambios estructurales
  • Sin coevolución: El ambiente (fitness landscape) no cambia con la población
  • Generaciones discretas: En realidad hay solapamiento y reproducción continua

🔬 Preguntas de reflexión

  1. ¿Por qué los algoritmos genéticos funcionan bien en problemas donde no conocemos la estructura de la solución?
  2. ¿Qué analogía hay entre "convergencia prematura" en AG y "pérdida de biodiversidad" en conservación?
  3. Si la mutación es dañina en la mayoría de los casos, ¿por qué la evolución la mantiene?
  4. ¿Cómo cambiaría un algoritmo genético si el fitness dependiera de la interacción con otros individuos (coevolución)?