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 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.
Assurez-vous d'avoir installé :
- Python 3.8 ou supérieur
pippour gérer les dépendances
Installez les paquets requis avec :
pip install -r requirements.txtLe fichier requirements.txt inclut généralement :
torch
numpy
pygame
(adaptez selon vos besoins)
- Clonez le dépôt ou copiez les fichiers dans votre dossier local :
git clone <url_du_projet>
cd Learn2Slither- Créez un environnement virtuel (optionnel mais recommandé) :
python -m venv venv
source venv/bin/activate # sur macOS/Linux
venv\Scripts\activate # sur Windows- Installez les dépendances (voir section précédente).
Pour démarrer une partie contrôlée manuellement (direction via le clavier) :
python snake.py --manualVous pouvez charger un modèle et laisser l'agent jouer automatiquement :
python snake.py --auto --model models/best/final_model.pthLe script d'entraînement gère les épisodes et sauvegarde le modèle :
python snake.py --trainou 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.).
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
