-
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 Populationpara guardar y restaurar localmente la población actual - Con el interruptor
Surprisese puede apagar y encender el dibujo para acelerar la simulación New Populationreinicia 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 ratees la probabilidad de que cada gen de cada individuo mute a un valor aleatorio cuando nace una nueva generaciónMutation sizees el rango en el que puede mutar cada gen; cuanto menor sea el número, más cerca queda del valor originalElite clonesse refiere a los mejores n autos que serán copiados a la siguiente generaciónView top replaypausa la simulación actual y muestra el auto con mejor rendimiento
- Tiene una función
-
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
Comentarios de Hacker News
En resumen, es lo siguiente:
boxcar2d, similar pero implementado sin Flash)