diff --git a/README.md b/README.md index 302ecde8d1b81662c728e19692fc2c5f8c835ed2..5c77e8c21c6db4b34380d9f3f37095d3ada1f7ae 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # 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 diff --git a/plot.py b/plot.py index 0873e38f216b3208c22fef117109412d1279ca4d..79d563954a0a648eee6c87904e094c9542d74ad2 100644 --- a/plot.py +++ b/plot.py @@ -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