Tetris
Vous trouverez ci-dessous les instructions et détails sur le jeu du tetris. Le but du jeu étant d’empiler le plus de pièce possibles pour former des lignes complètes afin de les faire disparaitres et gagner des points.
Le jeu présenté ici utilise deux méthodes différentes: le premier est un réseau de neurones artificiels entrainé grâce à un algorithme d’apprentissage par renforcement (reinforcement learning), le deuxième est un controleur simple dont les paramètres sont optimisés grâce à un algorithme génétique.
Installation
Pour installer l’application, commencez par copier le dépot du livre (AI-book sur github), soit en recupérant l’archive zip depuis github, soit à l’aide de l’outil git:
git clone https://github.com/iridia-ulb/AI-book
Puis, accedez au dossier:
cd Tetris
Il y a ensuite deux sous-dossier, TetrisRL
contient le programme fonctionnant avec l’apprentissage par renforcement (RL) et TetrisGA
contient le programme fonctionnant avec l’algorithme génétique. Rendez vous dans un de ces dossier avant de passer à l’étape suivante, par exemple:
cd TetrisGA
Après avoir installé python et poetry, dans ce dossier, installez les dépendances du projet:
poetry install
Utilisation de TetrisRL
Pour lancer le jeu avec un réseau de neurones déjà entrainé:
poetry run python main.py
Vous pouvez ajouter une option pour choisir un modèle pré-entrainé différent de celui par défaut (“weights.h5”) avec l’option -w
.
poetry run python main.py -w weights2.h5
Pour quitter le jeu, appuyez sur n’importe quelle touche dans la fenètre du jeu, ou appuyez sur Ctrl+c dans le terminal.
En résumé:
usage: main.py [-h] [-w WEIGHTS]
The Tetris game
optional arguments:
-h, --help show this help message and exit
-w WEIGHTS, --weights WEIGHTS
Path to weights file to load.
Entrainement
Pour entrainer un nouveau réseau de neurones (Attention pour ce projet, il vous faudra probablement un bon GPU pour espérer entrainer le réseau dans un temps acceptable) vous pouvez utiliser le programme train.py
:
poetry run python train.py -e 1000 -w weights2.h5
Ici l’option -e
représente le nombre d’épisodes pendant lequel le réseau doit être entrainé, 10000 étant la valeur par défaut, et -w
représente le fichier dans lequel les poids synaptiques seront enregistrés à la fin de l’entrainement.
En résumé:
usage: train.py [-h] [-w WEIGHTS] [-e EPISODES]
The Tetris game trainer for RL.
optional arguments:
-h, --help show this help message and exit
-w WEIGHTS, --weights WEIGHTS
Path to weights file to save to (default=weights.h5).
-e EPISODES, --episodes EPISODES
Number of episodes to train on (default=10000).
Utilisation de TetrisGA
Pour lancer le jeu avec uni controleur déjà entrainé:
poetry run python evaluation.py
Vous pouvez ajouter une option pour choisir un modèle pré-entrainé différent de celui par défaut (“le dossier “SavedModel) avec l’option -d
.
poetry run python evaluation.py -w temp_train/
Il est aussi possible de regler le nombre maximum de tetrominos avant l’arrêt du jeu avec l’option -t
.
En résumé:
usage: evaluation.py [-h] [-d DIRECTORY] [-t TETROMINOES_LIMIT]
The Tetris game
optional arguments:
-h, --help show this help message and exit
-d DIRECTORY, --directory DIRECTORY
Path of saved generation on which to evaluate the best
agent
-t TETROMINOES_LIMIT, --tetrominoes_limit TETROMINOES_LIMIT
The maximum number of tetrominoes after which the
evaluation stops
Entrainement
Pour entrainer le modèle avec l’algorithme génétique, il suffit de lancer en utilisant le script training.py
poetry run python training.py
Cette commande lancera l’interface pour configurer l’entrainement, vous pouvez y choisir: les différent termes de l’heuristique à considérer, le nombre de générations de l’entrainement, et la limite de temps pour chaque génération.
Une fois l’entrainement fini (ou annulé en quittant), un graphique s’affiche sur l’écran reprenant les données de la performance du modèle en fonction de la génération.
Les résultats sont sauvegardés dans le dossier temp_train/