Flappy Bird Neat Implémentation étape par étape | par Anirudh Sekar | Mai 2025

 Flappy Bird Neat Implémentation étape par étape | par Anirudh Sekar | Mai 2025


Dans cet article, nous explorons comment construire une IA qui apprend à jouer à Flappy Bird en utilisant l’algorithme soigné (neuroévolution des topologies augmentants) dans Python. Nous présenterons les principes de soigneux, de la configuration du moteur de jeu avec Pygame, de la configuration et de la course neat-pythonet enfin montrer comment s’entraîner et visualiser votre IA. À la fin, vous aurez un projet d’ouverture complet qui démontre la neuroévolution en action. Le référentiel GitHub peut être trouvé ici.

La neuroévolution fait référence à l’évolution des architectures de réseau neuronal aux côtés de leurs poids à l’aide d’algorithmes évolutifs. Neat, développé par Kenneth O. Stanley et Risto Miikkulainen en 2002, est une méthode principale qui commence par un minimum de réseaux et les «complexes» par mutation et spéciation.

La mécanique simple de Flappy Bird – seulement deux actions (volet ou ne faire rien) et un écart vertical étroit pour naviguer – en font une référence idéale pour l’expérimentation de l’IA.

Notre référentiel contient:

  • flappy_bird.py: le moteur de jeu basé sur Pygame
  • train.py: La boucle de formation soignée
  • config.txt: Tous les hyperparamètres soignés
  • play.py: démo en temps réel de l’IA formée
  • models/: Stores Genomes sérialisés

Tout d’abord, installez pygame (pour le rendu) et neat-python (pour l’évolution) via PIP:

pip install pygame neat-python

Pygame est un emballage Python autour de SDL pour le multimédia et les jeux.
neat-python est une implémentation pure-python de Python 3.6+ de soutien pur.

Nous définissons trois classes: Bird, Pipeet Basepuis les résumer dans FlappyGame avec un step(flap) Méthode qui fait progresser une trame, renvoie l’état normalisé, une récompense et un drapeau fait.

Dans eval_genomeschaque génome devient un réseau de neurones via neat.nn.FeedForwardNetwork.create()joue une instance de jeu et gagne la forme physique en survivant et en passant des tuyaux. Nous utilisons des journalistes soignés (stdout, statistiques, point de contrôle) pour suivre les progrès sur 50 générations par défaut.

Notre configuration utilise des réseaux Feed-forward (feed_forward = true), Taux de mutation pour les connexions, les nœuds, les biais et les poids et les paramètres de spéciation pour maintenir la diversité de l’innovation. Les sections clés incluent (DefaultGenome) pour les schémas de mutation et (DefaultReproduction) pour l’élitisme.

Après l’entraînement, models/best_genome.pkl tient le génome champion. play.py charge ce fichier, construit son FeedForwardNetworket exécute le jeu en temps réel avec le rendu de Pygame.

Quand tu cours python train.pyvous verrez les scores de fitness grimper alors que la population apprend à naviguer plus efficacement. En utilisant les outils de visualisation intégrés de Neat (ou le visualize.py Exemple), vous pouvez tracer la meilleure forme physique par génération et inspecter la topologie du réseau final.

Ce projet montre comment la neuroévolution peut découvrir de manière autonome à la fois la structure du réseau et les poids pour les tâches de contrôle.
Étapes suivantes pourrait inclure:

  • Ajout de plus d’entrées (par exemple, distance au centre de tuyaux) pour une représentation de l’état plus riche
  • Expérimenter la taille de la population et les taux de mutation pour une convergence plus rapide
  • Emballage de la démo avec Pyinstaller ou créant une interface utilisateur Web avec Flask

N’hésitez pas à cloner le dépôt, à expérimenter vos propres paramètres et à partager vos résultats! Merci beaucoup d’avoir lu et faites-moi savoir s’il y a des questions!



Source link

Related post