Commit 715d2791 authored by DUFAIX Clement's avatar DUFAIX Clement
Browse files

Update README.md

parent 8b4f5988
#### Clément Dufaix et Axel Lariviere ####
#### Clément Dufaix et Axel Lariviere ####
Tout ce projet a été développé en python et utilise les librairies matplotlib et numpy. Le jeu oppose un agent doté d'une intelligence artificielle entraîné avec de l'apprentissage par renforcement en utilisant le principe SARSA contre un agent qui joue de manière totalement aléatoire.
Liste des éléments à réaliser :
Simuler le jeu du Mutorere
Pouvoir faire jouer deux joueurs réels
Implémenter un outil graphique (Qt5) pour avoir un visuel de l’application
Ajouter un agent utilisant l’algorithme SARSA
Ajouter un agent random pour entraîner l’algorithme SARSA
Réaliser un compte-rendu des performances de l’algorithme SARSA
Faire affronter un joueur réel avec l’agent SARSA entraîné
Confronter SARSA au Q-learning pour comparer leurs performances
- [x] Simuler le jeu du Mutorere
- [x] Pouvoir faire jouer deux joueurs réels
- [x] Implémenter un outil graphique (Qt5) pour avoir un visuel de l’application
- [x] Ajouter un agent utilisant l’algorithme SARSA
- [x] Ajouter un agent random pour entraîner l’algorithme SARSA
- [x] Réaliser un compte-rendu des performances de l’algorithme SARSA
- [x] Faire affronter un joueur réel avec l’agent SARSA entraîné
- [ ] Confronter SARSA au Q-learning pour comparer leurs performances
#### La classe Game ####
Cette classe est la classe centrale du jeu, elle contient différents attributs et méthodes dont on listera les plus importants :
Le plateau de jeu (boardGame), qui est un tableau de 9 entiers, où l’on peut retrouver 3 valeurs (0 : vide,1 : pion joueur 1 ou 2 : pion joueur 2), par exemple le plateau de base contient : [1,1,1,1,2,2,2,2,0].
Le GameManager qui donne la main à l’un ou l’autre des joueurs, compte le nombre de parties gagnées et réinitialise l’état du jeu après chaque partie.
MovePawn et EmptyPlaceToMove qui autorisent ou les déplacements des pions des joueurs et qui contiennent les règles du jeu.
- Le plateau de jeu (boardGame), qui est un tableau de 9 entiers, où l’on peut retrouver 3 valeurs (0 : vide,1 : pion joueur 1 ou 2 : pion joueur 2), par exemple le plateau de base contient : [1,1,1,1,2,2,2,2,0].
- Le GameManager qui donne la main à l’un ou l’autre des joueurs, compte le nombre de parties gagnées et réinitialise l’état du jeu après chaque partie.
- MovePawn et EmptyPlaceToMove qui autorisent ou les déplacements des pions des joueurs et qui contiennent les règles du jeu.
#### La classe Player ####
La classe Player est une classe abstraite, elle est la classe mère de n’importe quel joueur, qu’il soit humain, ou un agent entraîné ou qui joue aléatoirement
Dans la classe Player on retrouve une méthode abstraite TakeDecision qui est appelée par le GameManager et qui sera ensuite redéfinie spécifiquement dans chaque classe fille.
#### La classe Agent ####
Elle hérite de la classe Player, et possède l’algorithme SARSA qui est utilisé pour entraîner l’agent. Au départ, l’agent ne connaît pas les règles du jeu, et SARSA est un algorithme d’apprentissage par renforcement qui utilise le principe de récompense lorsque l’agent réussit ou échoue un coup ou encore lorsque l’agent gagne ou perd une partie.
IMAGE MARKOV DECISION PROCESS
![Processus de décision Markovien](img/Markov_Decision_Process.png)
Nous utilisons cette équation fournie par SARSA.
IMAGE EQUATION SARSA
![Equation SARSA](img/Equation_SARSA.PNG)
Q est une valeur associée à un couple état/action Alpha et Gamma sont des hyperparamètres compris entre [0,1], respectivement, le « learning rate » et le « discount factor ».
Le premier détermine à quel point il doit mettre de l’importance sur la valeur des nouvelles informations, alpha à 0 signifie que l’algorithme n’apprend rien et à 1 l’agent ne prend en compte que les informations les plus récentes.
Le second l’importance de la future récompense, le gamma fixé à 0 rend l’agent opportuniste en ne considérant que la récompense actuelle, tandis qu’à 1, l’agent adopte une politique basée sur le long terme.
......@@ -42,9 +46,13 @@ La classe RealPlayer donne la main au joueur humain qui choisit un coup à jouer
Cette classe affiche une interface graphique pour voir l’état du jeu, elle sert particulièrement pour faire jouer un humain. Toute l’interface a été développée avec Qt.
![Plateau de jeu](img/mutorere_board.PNG)
#### Résultats ####
IMAGES WINRATE ET EPSILON + WINDOW PLATEAU DE JEU
Sur le premier tableau nous pouvons voir le taux de parties gagnés par l'agent SARSA contre l'agent aléatoire ainsi que la courbe de son Epsilon qui diminue au fur et à mesure que celui-ci apprend à jouer
![Taux de victoire de l'agent et résultat de Epsilon](img/Figure_1.png)
#### Pistes d’amélioration et ambitions ####
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment