Skip to content
Extraits de code Groupes Projets
Valider e913d99a rédigé par Adrien Payen's avatar Adrien Payen
Parcourir les fichiers

update readme

parent 0700b1cd
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Group 5 - Projet de Machine Learning
Ce projet vise à implémenter un jeu de "Snake and Ladders" ainsi que de l'entrainer afin d'obtenir la meilleure stratégie.
Ce README présente la structure et résume notre projet.
## Python Libraries :
Pour exécuter les différents scripts et notebooks, assurez-vous d'avoir installé les librairies Python suivantes :
```bash
pip install numpy
pip install TransitionMatrixCalculator
......@@ -16,41 +16,41 @@ pip install matplotlib.pyplot
pip install random
pip install MarkovDecisionSolver
```
## Codes Python
Ces codes permettent d'implémenter le jeu du Snake and Ladders, de déterminer différentes stratégies possible ainsi que d'analyser les résultats de celles-ci.
### tmc.py
Ce code définit une **classe TransitionMatrixCalculator** qui calcule les matrices de transitions en fonctions des trois scénarios possible. Les règles de ce jeux diffèrent de celles traditionnellement utilisées, en effet à chaque étape le joueur à le choix entre trois dés : safe, normal ou risqué. Ils ont une influence sur la suite du jeu, effectivement le choix de dé occassione ou non la présence de pièges sur le plateau de jeu.
Ce code définit une **classe TransitionMatrixCalculator** qui calcule les matrices de transitions en fonctions des trois scénarios possible. Les règles de ce jeux diffèrent de celles traditionnellement utilisées, en effet à chaque étape le joueur à le choix entre trois dés : safe, normal ou risqué. Ils ont une influence sur la suite du jeu, effectivement le choix de dé occassione ou non la présence de pièges sur le plateau de jeu.
### markovDecison.py
Ce code contient une **classe MarkovDecisionProcess** qui définit les algorithmes de Value Iteration relatifs aux différentes stratégies. La fonction **solve** permet de calculer la politique optimale. Ensuite, la fonction **markovDecision** faisant appel à la fonction **solve**, permet d'obtenir la stratégie optimale.
Ce code contient une **classe MarkovDecisionProcess** qui définit les algorithmes de Value Iteration relatifs aux différentes stratégies. La fonction **solve** permet de calculer la politique optimale. Ensuite, la fonction **markovDecision** faisant appel à la fonction **solve**, permet d'obtenir la stratégie optimale.
### validation.py
Dans ce code nous définissons une **classe validation** dans laquelle nous créons différentes fonctions de simulation du jeu. Cela va permettre d'obtenir le coût empirique de notre jeu (pour la fonction **simulate_rounds**) et le nombre de tour moyen nécessaire pour atteindre la case finale du jeu (pour la fonction **state_simulation**). Ensuite, nous implémentons des fonctions permettant de comparer les résultats empiriques, des simulations de jeu, aux résultats théoriques attendus, obtenus par value iteration.
Dans ce code nous définissons une **classe validation** dans laquelle nous créons différentes fonctions de simulation du jeu. Cela va permettre d'obtenir le coût empirique de notre jeu (pour la fonction **simulate_rounds**) et le nombre de tour moyen nécessaire pour atteindre la case finale du jeu (pour la fonction **state_simulation**). Ensuite, nous implémentons des fonctions permettant de comparer les résultats empiriques, des simulations de jeu, aux résultats théoriques attendus, obtenus par value iteration.
### plot.py
Ce code permet de réaliser différents graphiques afin de comparer les résultats obtenus des stratégies.
Ce code permet de réaliser différents graphiques afin de comparer les résultats obtenus des stratégies.
## Contact
Pour toute question, suggestion, ou demande de collaboration sur ce projet, n'hésitez pas à nous contacter. Pour des discussions plus approfondies sur notre recherche et notre méthodologie, nous pouvez contacter :
- Audrey Ghilain à audrey.ghilain@student.uclouvain.be
- Nathanaël Kindidi à nathanael.kindidi@student.uclouvain.be
- Adrien Payen à adrien.payen@student.uclouvain.be
- Adrien Payen à adrien.payen@student.uclouvain.be
## Remerciements
Nous tenons à exprimer notre gratitude envers plusieurs parties qui ont jouées un rôle crucial dans la réalisation de ce projet :
- **Professeur Saerens Marco** : Pour son enseignement en Machine Learning. Son soutien et ses conseils ont été essentiels pour l'adaptation et l'amélioration de nos codes dans notre projet.
## Auteurs
## Auteurs
- Audrey Ghilain
- Nathanaël Kindidi
- Adrien Payen
## Références
## Références
\ No newline at end of file
......@@ -102,16 +102,16 @@ if __name__ == '__main__':
layout = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# Indicates whether the board is circular or linear
circle = False
circle = True
# Number of games to simulate
num_games = 100
num_games = 1000000
# Initialize Validation instance with the specified layout and circle type
validation_instance = Val(layout, circle)
##### Launch Plots #####
# Run the defined plotting functions with specified parameters
plot_strategy_comparison(num_games)
#plot_strategy_comparison(num_games)
plot_state_based_turns()
plot_state_based_comparison(num_games_list = [10,100,1000])
plot_state_based_comparison_once(num_games)
\ No newline at end of file
#plot_state_based_comparison(num_games_list = [10,100,1000])
#plot_state_based_comparison_once(num_games)
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter