Apprentissage du jeu de morpion Présenté par: Soutenu par: Mme HUCHARD Mme NEBUT Romain ALMES Mohamed-Amine BOUADDI Sandrine BUENDIA Abdelhakim KBIRI-ALAOUI Sébastien LONG Julio-Aziz RUIZ SIMARI
Introduction But du sujet: Créer un programme capable d’apprendre à jouer au morpion
Introduction Plan de la présentation : Analyse du sujet Création d’un jeu de morpion Création d’un automate Sauvegarde de l’apprentissage Comment décider du coup à jouer Problèmes rencontrés Discussion Conclusion
Analyse du sujet Description: Créer un jeu de morpion Créer une intelligence artificielle Créer un système pour sauvegarder l’apprentissage
Analyse du sujet Description: Utiliser un automate pour représenter les parties enregistrées Affecter des « poids » aux transitions des états de l’automate Langage de programmation objet
Analyse du sujet Fonctionnement du programme: Mémoriser les parties déjà vues Décider du meilleur coup à jouer à partir d’une base de connaissances
Analyse du sujet Découpe du sujet en 3 binômes: Le premier travaille sur la partie automate Le second sur la sauvegarde de l’apprentissage Le troisième sur la politique de décision des coups à jouer
Le jeu de morpion Créé avant le découpage des tâches Rapide à programmer Séparé en deux parties: Le jeu de morpion Une interface graphique
Diagramme de classes
Fonctionnement de la classe « morpion »
Interface du jeu
Partie en cours
Apprentissage rapide
Menu « options »
L’automate 10 30 -20 -10 Un état correspond a une grille de jeu Une transition contient un poids et une destination vers le prochain état
Automate Implémentation automate : 3 classes : - Automate - Etat - Transition
Automate Problème rencontré : - Saturation de la mémoire Solution: - Optimiser l’automate pour diminuer les redondances
Automate Deux états qui se rejoignent: Deux grilles équivalentes dans l’automate
Automate Ajout d’une transition pour éviter la redondance d’état
Automate 2 optimisations: Grille miroir Rotation de la grille
Automate Miroir d’une grille
Automate Rotation de la grille:
Gestionnaire de stockage de données Pourquoi stocker les données ? Deux solutions : Gestionnaire de fichiers Base de données
Gestionnaire de fichiers Principe : Sauvegarder les données dans des fichiers. Problèmes : Obligation de réécrire tout le fichier à chaque sauvegarde, Beaucoup de temps pour charger et sauvegarder les états. Solution envisagée : - Créer un fichier par état.
Base de données Schéma de la base : Intérêt : Chargement de l’automate en une requête, Mise à jour des états de façon individuelle.
Décider du meilleur coup Pré-requis : Avoir un automate déjà construit Principe : Décide du meilleur coup à jouer en fonction des connaissances actuelles
Calcul du meilleur coup
Problèmes rencontrés Problème de performance: la taille de l’automate sature la mémoire Problème d’optimisations: mode miroir inachevé
Problèmes rencontrés
Discussion Certaines fonctionnalités à implémenter Comparaison avec l’algorithme Min-Max
Conclusion L’application répond au cahier des charges Evolution possible grâce au code commenté