Skip to content

Repository files navigation

Learn2Slither 🐍

Ce projet implémente un entraînement et un moteur de jeu pour un serpent (type Snake) contrôlé par un agent d'apprentissage automatique. Le but est de faire évoluer un réseau de neurones capable de jouer au jeu du serpent et d'apprendre à se déplacer sans se heurter aux murs ni à sa propre queue.

Learn2Slither demo


🚀 À propos

Learn2Slither est un projet de Reinforcement Learning appliqués à un jeu simple. L'objectif est la modélisation par réseau de neuronne d'une fonction Q(s, a) qui associe à un environement (s) et à une action (a) un score (Q-value). Plus la Q-value est élevé plus l'action (a) est pertinente dans un environement (s) . Le code contient :

  • Un simulateur de jeu du serpent (game_manager.py, snake.py, map.py, renderer.py).
  • Un agent (agent.py) qui prend des décisions basées sur les entrées du jeu.
  • Un modèle de réseau de neurones (model.py) utilisé pour l'inférence et l'entraînement.
  • Des gestionnaires d'entraînement (training_manager.py) et d'entrée (input_handler.py).
  • Un gestionnaire de configuration (config.py) pour paramétrer les expériences.

Les modèles entraînés sont stockés dans le dossier models/ et des exemples sont fournis.


🛠️ Prérequis

Assurez-vous d'avoir installé :

  • Python 3.8 ou supérieur
  • pip pour gérer les dépendances

Dépendances Python

Installez les paquets requis avec :

pip install -r requirements.txt

Le fichier requirements.txt inclut généralement :

torch
numpy
pygame

(adaptez selon vos besoins)


🔧 Installation

  1. Clonez le dépôt ou copiez les fichiers dans votre dossier local :
git clone <url_du_projet>
cd Learn2Slither
  1. Créez un environnement virtuel (optionnel mais recommandé) :
python -m venv venv
source venv/bin/activate    # sur macOS/Linux
venv\Scripts\activate     # sur Windows
  1. Installez les dépendances (voir section précédente).

▶️ Utilisation

Manuel

Pour démarrer une partie contrôlée manuellement (direction via le clavier) :

python snake.py --manual

Automatique

Vous pouvez charger un modèle et laisser l'agent jouer automatiquement :

python snake.py --auto --model models/best/final_model.pth

Entraîner un modèle

Le script d'entraînement gère les épisodes et sauvegarde le modèle :

python snake.py --train

ou pour surentrainer un model

python snake.py --train --model <path_model>

Consultez config.py pour ajuster les hyperparamètres (taux d'apprentissage, taille du batch, etc.).


📁 Structure du projet

Learn2Slither/
├── agent.py              # boucle principale de l'agent
├── config.py             # paramètres et configurations
├── game_manager.py       # moteur de jeu
├── input_handler.py      # gestion des entrées
├── map.py                # génération de la carte
├── model.py              # définition du réseau de neurones
├── renderer.py           # affichage du jeu
├── snake.py              # logique du serpent
├── training_manager.py   # gestion de l'entraînement
├── requirements.txt
├── README.md             # ce document
└── models/
    ├── amelioration/     # modèles en cours d'amélioration
    └── best/             # modèles finaux
└── assets/
    └── snake.gif         # gif du mode auto

About

un projet de Reinforcement Learning appliqués au jeu Snake

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages