Dépôt pour ressource cours IA sur les jeux
Go to file
2024-09-17 14:13:41 +02:00
2023-24 rm trucs déplacés 2024-09-12 09:38:13 +02:00
README.md ajout instructions troisième cours 2024-09-17 14:13:41 +02:00

BUT3-IA-Jeux-PUBLIC

Dépôt pour ressource cours IA sur les jeux de BUT3. Formellement MATH 5.1 et DEV 5.5

évaluation. MATH 5.1 examen sur table 100% DEV 5.5 TPs filés et éventuel mini projet final. soutenance probable. note différenciée par groupe possible

Des ressources de l'an dernier sont disponibles dans le répertoire 2023-24.

Notes de cours.

Premier cours (5/9/2024)

Au tableau. Réflexion sur la nature d'un jeu. Classification de divers jeux. Focus sur les jeux à 2 joueurs, tour par tour, à information complète, et déterministe. Stratégie gagnante, états, graphe des états, arbre de jeu.

Illustration de méthodes possibles en math débranché avec un cahier (exemple illustratif du jeu de Nim).

Méthode explorant l'arbre de jeu : Minimax, pseudo code avec deux méthodes exploremax et exploremin pour le jeu de Nim.

Exo à faire : reprendre le pseudo code pour permettre de choisir un coup optimal pour la position donnée en paramètre tout au début.

Second cours (en salle TP, le 12/9/2024)

Première chose à faire : implantation de ExploreMax et ExploreMin pour le jeu de Nim. (temps estimé 15 minutes à 60 minutes)

Règles du jeux :

  • Tout doit être sur un repo git mis à jour régulièrement dont le nom est exactement BUT3Jeu partagé avec moi.
  • utiliser un langage objet (à terme il s'agira de refactoriser le code pour permettre de traiter d'autres jeux)
  • Méthode prend en entrée le nombre d'allumettes. En sortie -1 (perdu), 0 (match nul) ou +1 pour victoire.
  • extension possible choix du premier coup optimal.

Il convient de tester de manière extensive acvec des exemples qu'on connaît. Les tests ne sont pas forcément des tests unitaires rejouables mais il faut garder une trace.

Seconde chose à faire. Une fonction qui joue le même rôle que la fonction du premier point ci-dessus mais qui met en oeuvre "la méthode du cahier", i.e. l'approche qui stocke les états en mettant à jour si ils sont gagnants ou perdants. (temps estimé : 30 minutes à 120 minutes).

Troisième chose à faire.

  • Reprendre le code pour le clarifier si nécessaire.
  • Le documenter (javadoc si java).
  • Ajout d'un readme expliquant le rôle de chaque fichier.

Troisième cours (en salle TP, le 17/9/2024)

On revisite notre algorithme pour minimax pour le jeu de Nim pour l'optimiser.

améliorer Minimax

  • idée 0 : dans la boucle dans exploremax, si je trouve un coup après lequel je gagne (exploremin m'indique que je gagne) alors ce n'est pas la peine de chercher un autre coup gagnant, je peux arréter de chercher.
  • idée 0bis : même chose pour une défaite dans exploremin.

Indication. changez votre code pour fabriquer une version optimisée tenant compte de cette idée.

Comparaison avec la version précédente. changez votre code pour compter le nombre d'état du jeu visité (il faut un compteur qui s'incrémente de 1 à chaque appel de exploremax ou exploremin).

  • idée 1 : il peut arriver qu'on descende récursivement dans l'arbre de jeu, alors que au coup suivant je peux gagner.

Indication. changez votre code pour fabriquer une version optimisée qui commence par tester si je peux gagner tout de suite au prochain coup. Si je peux, ceci évite de descendre dans l'arbre. Si je ne peux pas, je descends dans l'arbre.

  • idée 2 : on se rend compte que l'ordre des coups à une influence importante. On pourrait énumérer les coups dans un ordre différent (par exemple au hasard) et étudier si ceci peut avoir un impact.

Indication. changez votre code pour permettre que la boucle qui teste les coups le fasse dans un ordre aléatoire. Testez si ceci améliore l'efficacité du code.