This project is a version of Flappy Bird where an artificial intelligence is trained using genetic algorithms to autonomously learn how to play. The focus is on two key genetic operators: Genetic Crossover and Mutation Operator. After implementing these operators, the results of the agents' learning and behavior are analyzed.
- Crossover Operator: The best birds from each generation are combined, inheriting traits from their "parents" to create more capable new generations.
- Mutation Operator: Small random changes are introduced to some of the genes (neural network weights) of the birds to promote diversity and prevent stagnation.
- Simple Neural Networks: Each bird makes decisions based on environmental data through a neural network that improves over multiple generations.
- Result Analysis: Once the evolutionary process is complete, the results are analyzed to observe how the crossover and mutation operators impact the agent's performance.
- JavaScript: The primary language used for the game logic and genetic algorithm implementation.
- HTML5 Canvas: Used for rendering the game's graphics and interface.
- Node.js (optional): For running server-side logic (if needed).
- Math.js: A library used to handle the mathematical computations related to the neural networks and genetic operators.
- Crossover: The best-performing birds from a generation are selected and combined to create the next generation, mixing their most successful traits.
- Mutation: Random mutations are applied to some genes (neural network weights) to ensure genetic diversity.
- Evolution: Over many generations, the birds improve their ability to avoid obstacles in the game.
- Analysis: The results of each generation are analyzed, showing how the AI evolves as the genetic operators are applied.
-
Clone the repository:
bash
Copiar código
git clone https://github.com/your-username/FlappyBird-AI-GeneticAlgorithm-JS.git
-
Open the
index.html
file in your web browser to run the game locally.Or, to run with a local server:
bash
Copiar código
npm install http-server -g http-server
-
Watch the AI evolve in real-time and analyze the performance of each generation.
Feel free to suggest improvements, report bugs, or contribute to the project.
Este proyecto es una versión de Flappy Bird en la que una inteligencia artificial es entrenada mediante algoritmos genéticos para aprender a jugar de forma autónoma. El enfoque se centra en dos operadores genéticos clave: Operador de Cruce y Operador de Mutación. Tras la implementación de estos operadores, se analizan los resultados del comportamiento y aprendizaje de los agentes.
- Operador de Cruce: Los mejores pájaros de cada generación se combinan, heredando características de sus "padres" para crear nuevas generaciones más capaces.
- Operador de Mutación: Se introducen pequeños cambios aleatorios en algunos genes (pesos de la red neuronal) de los pájaros para promover la diversidad y evitar el estancamiento.
- Redes Neuronales Simples: Cada pájaro toma decisiones basadas en datos del entorno mediante una red neuronal que mejora a lo largo de varias generaciones.
- Análisis de Resultados: Al completar el proceso evolutivo, se analizan los resultados para observar cómo los operadores de cruce y mutación impactan en el rendimiento del agente.
- JavaScript: El lenguaje principal para la lógica del juego y la implementación de los algoritmos genéticos.
- HTML5 Canvas: Utilizado para renderizar los gráficos e interfaz del juego.
- Node.js (opcional): Para ejecutar lógica en el lado del servidor (si es necesario).
- Math.js: Biblioteca utilizada para manejar los cálculos matemáticos relacionados con las redes neuronales y los operadores genéticos.
- Cruce: Los mejores pájaros de una generación se seleccionan y combinan para crear la siguiente generación, mezclando sus rasgos más exitosos.
- Mutación: Se aplican mutaciones aleatorias a algunos genes (pesos de la red neuronal) para asegurar la diversidad genética.
- Evolución: A través de varias generaciones, los pájaros mejoran su habilidad para evitar obstáculos en el juego.
- Análisis: Se analizan los resultados de cada generación, mostrando cómo la IA evoluciona a medida que se aplican los operadores genéticos.
-
Clona el repositorio:
bash
Copiar código
git clone https://github.com/tu-usuario/FlappyBird-AI-GeneticAlgorithm-JS.git
-
Abre el archivo
index.html
en tu navegador web para ejecutar el juego localmente.O, si prefieres ejecutar con un servidor local:
bash
Copiar código
npm install http-server -g http-server
-
Observa cómo la IA evoluciona en tiempo real y analiza el rendimiento de cada generación.
Siéntete libre de sugerir mejoras, reportar errores o contribuir al proyecto.