1 puntos por GN⁺ 2024-04-29 | 1 comentarios | Compartir por WhatsApp
  • Programa de simulación de evolución de autos con algoritmos genéticos

    • El objetivo es hacer evolucionar formas aleatorias de 2 ruedas hasta convertirlas en autos a lo largo de múltiples generaciones usando algoritmos genéticos
    • Está basado en BoxCar2D, pero fue escrito desde cero y solo utiliza el mismo motor físico (box2d)
    • Usa la biblioteca seedrandom.js de David Bau
  • Controles y configuración

    • Tiene una función Save/Restore Population para guardar y restaurar localmente la población actual
    • Con el interruptor Surprise se puede apagar y encender el dibujo para acelerar la simulación
    • New Population reinicia solo la población de autos, manteniendo la pista
    • Con la misma semilla siempre se genera la misma pista, lo que permite competir con amigos
    • Mutation rate es la probabilidad de que cada gen de cada individuo mute a un valor aleatorio cuando nace una nueva generación
    • Mutation size es el rango en el que puede mutar cada gen; cuanto menor sea el número, más cerca queda del valor original
    • Elite clones se refiere a los mejores n autos que serán copiados a la siguiente generación
    • View top replay pausa la simulación actual y muestra el auto con mejor rendimiento
  • Gráficas

    • Rojo: la mejor puntuación de cada generación
    • Verde: el promedio de los 10 mejores autos de cada generación
    • Azul: el promedio de toda la generación
  • Composición del genoma

    • Forma (1 por vértice, 8 genes en total)
    • Tamaño de las ruedas (1 por rueda, 2 genes en total)
    • Posición de las ruedas (1 por rueda, 2 genes en total)
    • Densidad de las ruedas (1 por rueda, 2 genes en total) - cuanto más oscuro, mayor densidad
    • Densidad del chasis (1 gen) - cuanto más oscuro, mayor densidad
  • Detalles adicionales

    • La simulación no es determinista, por lo que el mejor auto puede no mostrar un rendimiento consistente
    • La complejidad del terreno aumenta según la distancia
    • Ahora el código está disponible en GitHub junto con contribuciones de la comunidad

1 comentarios

 
GN⁺ 2024-04-29
Comentarios de Hacker News

En resumen, es lo siguiente:

  • Este proyecto fue creado hace 20 años y, gracias a Ruffle, todavía puede ejecutarse en el navegador
  • Debido a la naturaleza de los algoritmos genéticos, una vez que aparece un diseño sobresaliente en cierto punto, tiende a seguir dominando en las generaciones posteriores. Puede valer la pena ajustar la tasa de mutación y la magnitud de la mutación
  • Hay un pequeño bug después de los 280 m: ya no hay camino y los autos caen en un pozo sin fin
  • Se puede pasar rápidamente por varias generaciones presionando el botón "Surprise". Es interesante observar el proceso de evolución a lo largo del tiempo mientras se ajustan la tasa de mutación y la magnitud de la mutación
  • Sería interesante si el vehículo tuviera un gen relacionado con la "compliance" para poder implementar la suspensión. En la mayoría de las ejecuciones, tiende a converger en una forma parecida a la moto de Tron
  • El terreno no cambia aunque cambie la generación
  • También se ha presentado varias veces en discusiones anteriores de HN (boxcar2d, similar pero implementado sin Flash)
  • Me hace recordar las horas que pasaba de niño con Boxcar 2D
  • Me pregunto si algo como esto sería posible también en un entorno de simulación basado en física 3D. Sería interesante saber si los algoritmos genéticos podrían usarse para descubrir nuevas formas aerodinámicas, como drones, dentro de una simulación