SlideShare une entreprise Scribd logo
1
Année universitaire : 2022/2023.
Projet Fondements d’intelligence artificielle :
Réalisation du jeu Mastermind
2
Résumé :
Ce rapport a pour objectif d’explorer l’univers de l’Intelligence Artificielle en
relation avec la théorie des jeux et de la décision, notamment avec les deux fameux
algorithmes : Minimax et élagage alpha-bêta.
On procédera par la définition, le fonctionnement, les applications et les limites de
chacun.
On verra enfin l’intérêt de l’algorithme Minimax dans le contexte du fameux jeu
Mastermind, et plus précisément avec l’algorithme de Knuth.
3
Table des matières
Introduction : ................................................................................................................................
Chapitre 1 : Théorie du Jeu et l’Intelligence artificielle ..............................................
1- Jeu : ........................................................................................................................................ 6
2- Algorithmes Mini- max et Alpha- Beta : ................................................................. 7
2-a Minimax : ...................................................................................................................... 7
2-b AlphaBeta : ................................................................................................................... 9
Chapitre 2 : Mastermind ....................................................................................................... 1
1- Propos de Mastermind: ............................................................................................. 11
1-a Principe : ...................................................................................................................... 11
1-b Règles : .......................................................................................................................... 11
2- Conception de notre Jeu: ........................................................................................... 12
2-a-Human vs AI: .............................................................................................................. 12
2-b-AI vs Human: ............................................................................................................. 12
3- Réalisation de notre jeu :........................................................................................... 13
CONCLUSION : ...........................................................................................................................
BIBLOGRAPHIE .......................................................................................................................
4
Liste des figures :
Figure1 : algorithme MinimaX……………………………………………………………………………9
Figure 2 : Elagage AlphaBeta…………………………………………………………………………...11
Figure 3: Bord du jeu Mastermind ……………………………………………………………………12
Figure 4 : Code du fichier couleurs dans l’éditeur utilisé (vsc)……………………………14
Figure 5 : Code du fichier pion dans l’éditeur utilisé (vsc)………………………………….15
Figure 6 : Code du fichier pion dans l’éditeur utilisé (vsc)………………………………….15
Figure 7 : Suite du code du fichier code dans l’éditeur utilisé (vsc)…………………….16
Figure 8 : Code du fichier estimateurresultatdans l’éditeur utilisé (vsc)……………17
Figure 9: Code du fichier plateudujeu dans l’éditeur utilisé (vsc)………………………17
Figure 10: Suite du code du fichier plateaudujeu dans l’éditeur utilisé (vsc)…… .18
Figure 11: Code du fichier utilité dans l’éditeur utilisé (vsc)……………………………18
Figure 12 : Suite du code du fichier utilité dans l’éditeur utilisé (vsc)……………….19
Figure 13 : Code du fichier AI dans l’éditeur utilisé (vsc)…………………………………20
Figure 14 : Aperçu du jeu………………………………………………………………………………..21
Figure 15 : 1er choix du menu………………………………………………………………………..21
Figure 16 : Deuxième choix du menu…………………………………………………………….22
Figure 17: Première exception………………………………………………………………………22
Figure 18 : Deuxième exception…………………………………………………………………… 22
Figure 19 : 3eme choix du menu…………………………………………………………………… 23
5
Introduction :
Durant ces dernières décennies, l’Intelligence Artificielle était sujette
d’un grand intérêt en tant que branche de l’informatique. À cause des progrès
fulgurants qu’elle accomplit jour après jour, il s’est avéré fort probable, voire
certain, que la machine répliquera - ou dépassera même - les compétences de
l’Homme.
L’IA est un terme générique qui englobe une multitude de concepts
et d’algorithmes, dotant la machine de la capacité d’apprentissage, d’analyse et de
décision. En particulier, les stratégies de recherche présentaient un intérêt
particulier grâce à leur utilisation dans divers domaines allant des jeux vidéo
jusqu’aux plans de vol.
6
Chapitre 1 : Théorie du Jeu et l’Intelligence artificielle
1- Jeu :
La théorie des jeux est un domaine des mathématiques appliquées qui modélise des
scénarios réels en tant que jeux. Elle est ainsi utilisée principalement dans des
situations d’interaction stratégique entre agents. L’IA a adapté la théorie des jeux
afin de résoudre des problèmes en temps réel tout en améliorant la
performance.
Un jeu peut être formellement défini comme un problème de recherche, il
est ainsi traduit en un arbre caractérisé par :
Un jeu peut être défini comme une interaction - coopérative ou compétitive
entre des joueurs ou des objets.
Jeux coopératifs / non coopératifs.
Jeux à somme nulle (gain d’un joueur amène directement à la perte de
Jeux sous forme normale (déroulement modélisé par un tableau) / sous
Jeux à information parfaite (chaque joueur a connaissance de tout le
Jeux finis / infinis.
Jeux stochastiques : déroulés en une séquence d’étapes.
On distingue plusieurs concepts basiques de jeux :
l’autre) / non nulle.
forme extensive (déroulement modélisé par un arbre).
déroulement passé : en général les jeux à mécanisme séquentiel) / à information
imparfaite.
7
E0 : l’état initial, qui spécifie l’état du jeu au début de la partie.
Joueur(E) : définit quel joueur doit jouer dans l’état E.
Action(E) : renvoie l’ensemble d’actions légales dans l’état E.
Résultat (E, A) : fonction de transition, qui définit le résultat
de l’action A dans un état E.
Test-Terminaison(E) : test de terminaison. Vrai si le jeu est fini
dans l’état E, faux sinon. Les états dans lesquels le jeu est
terminé sont appelés états terminaux.
Utilité (E,J) : ou fonction de gain, elle associe une valeur
numérique à chaque état terminal E pour un joueur J.
Définition :
L’algorithme Minimax en IA, est un algorithme de retour en arrière
(backtracking) créé par John von Neumann et utilisé dans la prise de décision, la
théorie des jeux et l’intelligence artificielle. Il vise à trouver le mouvement optimal
pour un joueur, en supposant que l’adversaire joue également de manière
parfaitement rationnelle.
Pour ce faire, on fixe deux valeurs assez éloignées l’une de l’autre, à savoir Min et
Max. Elles serviront à comparer le “poids” final d’une situation. Si ce dernier est
plus proche de Min, le joueur gagne ; sinon, l’IA remporte la victoire.
2-a Minimax :
2- Algorithmes Mini- max et Alpha- Beta :
8
Applications :
Les applications de l’algorithme Minimax se trouvent notamment dans les jeux dits
« de plateau », où on retrouve un système de tours et de coups à jouer, par
exemple, le tic-tac-toe, les échecs, Backgammon, Go... Ils sont généralement à
somme nulle et à information parfaite. Cependant, son utilisation s’étend à divers
autres problèmes.
Fonctionnement :
Dans l’algorithme Minimax de l’IA, il y a deux joueurs, Maximiser et
Minimiser. Ils jouent le jeu de sorte que l’un essaie de maximiser son gain tandis
que l’adversaire essaie d’obtenir le score le plus bas. Chaque plateau de jeu a un
score d’évaluation (fonction d’utilité). Cet algorithme trouve la meilleure action
possible pour un joueur : c’est en choisissant le nœud avec le meilleur score
d’évaluation. Le meilleur choix sera fait après avoir évalué tous les mouvements
potentiels de l’adversaire. L’algorithme regarde tous les états de terminaison et
prend une décision.
Figure1 : algorithme Minimax
10
Figure 2 : Elagage AlphaBeta
Applications :
Puisqu’il n’est que son amélioration, l’élagage alpha-bêta s’applique dans les
mêmes situations que le Minimax.
Limitations :
L’élagage alpha-bêta dépend fortement de l’ordre d’examination des nœuds. On
distingue deux cas extrêmes d’ordre :
➢
Pire commande : n’élague pas, on tombe ainsi dans le même cas que le
Minimax avec une complexité encore plus élevée.
➢
Commande idéale : élague un nombre important de nœuds.
9
Limitations :
La principale limitation de l’algorithme Minimax est qu’il devient vraiment lent
pour les jeux complexes (qui contiennent plusieurs possibilités). Cette limitation
peut être franchie à l’aide de l’élagage alpha-bêta.
2-b AlphaBeta :
Définition :
L’élagage alpha-bêta est une technique d’optimisation de l’algorithme Minimax qui
peut être appliquée à n’importe quelle profondeur d’un arbre. Il n’élimine pas que
des feuilles de l’arbre mais aussi des sous-arbres, optimisant ainsi le temps de
traitement sans changer la décision finale.
Fonctionnement :
L’élagage alpha-bêta est caractérisé par ses deux paramètres, à savoir :
Alpha : Le meilleur choix (de plus grande valeur) trouvé sur le chemin du
Maximiser. Il est initialisé par -∞.
Bêta : Le meilleur choix (de plus faible valeur) trouvé sur le chemin du
Minimiser. Il est initialisé par +∞.
De plus, le Maximiser ne pourra mettre à jour que la valeur d’Alpha et le Minimiser
celle de Bêta.
Afin d’élaguer, la condition suivante doit être réalisée :
α >= β
11
Chapitre 2 : Mastermind
Figure 3: Bord du jeu Mastermind
1- Propos de Mastermind:
1-b Règles :
1-a Principe :
Mastermind se joue à deux : un décodeur et un codificateur.
Le codificateur choisit une combinaison de 4 pions (à savoir un total de
1296 combinaisons).
Mastermind est un jeu de société, de réflexion et de déduction visant à
trouver un code (combinaison ordonnée de pions) en un nombre limité de coups. Il
se présente généralement sous la forme d'un plateau perforé de plusieurs rangées
de 4 ou 5 trous pouvant accueillir des pions colorés. Il comprend également des
petits pions rouges et blancs utilisés pour donner des indications sur l’état
d’avancement du joueur.
➢
➢
12
➢
➢
➢
Dans ce mode, l’IA est le codificateur et on est le décodeur. Il s’agit des jeux
Mastermind classiques qu’on trouve généralement en ligne.
On a conçu notre jeu de telle sorte que les pions et les fiches soient représentés par
des disques colorés. De plus, on a offert deux modes de jeu comme le montrera le
reste de ce paragraphe.
Le but du décodeur est de déduire - sur 10 tentatives - la couleur et la
position correctes des quatre pions choisis par le codificateur.
Si l’un des pions choisis par le décodeur est correctement placé et coloré, le
codificateur place une fiche rouge.
Si l’un des pions choisis par le décodeur est seulement correctement coloré,
le codificateur place une fiche blanche.
Dans ce mode, on est le codificateur et l’IA est le décodeur. Ce dernier n’a que 5
tentatives.
En effet, Donald Knuth a démontré en 1977 que la machine est toujours capable de
trouver la combinaison secrète au bout de 5 tentatives au plus. Pour ce faire, il a
adapté l’algorithme Minimax dans le contexte de ce jeu. L'enchaînement de son
algorithme est comme suit:
➢
On crée une liste S des combinaisons possibles (initialement: card(S)=1296).
➢
On commence par deviner le code 1122.
➢
Si le code est juste, l’IA gagne.
➢
Sinon, on supprime les résultats illogiques de S, c’est-à-dire ceux qui
donneront des résultats différents de ceux déjà obtenus.
2- Conception de notre Jeu:
2-a-Human vs AI:
2-b-AI vs Human:
13
➢
➢
Dans cette partie une dizaine des techniques utilisées pour lier les différents
points du code source .
Pion :
Pion : pion est la fonction des boules colorées ;
Par exemple : get pioncoloré englobe les codes des couleurs utilisées dans le jeu
Couleurs :
Il se compose des différentes couleurs utilisées par notre programme on les
prend comme des valeurs (couleur) bien connues à partir du mot clé ENUM {} ,
ainsi get color{int} donne une couleur et get color {char} affecte à une valeur une
couleur.
On applique le Minimax. On commence par calculer le score (rouge, blanc)
qu’aura chaque combinaison de S, on prendra ensuite le minimum des
maximums de ces poids. On prend une combinaison qui a ce poids.
On revient à l’étape 3.
Figure 4 : Code du fichier couleurs dans l’éditeur utilisé (vsc)
3- Réalisation de notre jeu :
c
14
.
Code :
Au sein de notre programme, la séquence des pions est la composante essentielle
du jeu. Pour la traiter, on a utilisé les utilités des fichiers précédents, à savoir
getCode , ajoutPion code{int} getPion à partir de l'index pour agir conformément
aux règles de MasterMind.
Figure 5 : Code du fichier pion dans l’éditeur utilisé (vsc)
Figure 6 : Code du fichier code dans l’éditeur utilisé (vsc)
15
EstimateurRéultat:
Cette partie exécute techniquement le code donné par un joueur X ,par une
multitude des classes et fonctions { combinaison recherchée} ,parmi cette dernière
on trouve la classe de estimationresultat contient 2 arrays lists
➢
La première stocke toutes les valeurs bien placées et correctes
{totallyCorrect}
➢
La deuxième stocke juste les couleurs correctes {onlyValuesCorrect}
estCorrecte est pour détecter que vous avez saisi la bonne combinaison et le test
de terminaison est achevé.
hashCode() qui digère les données stockées dans une instance de la classe dans
une valeur de hachage dans notre cas on va digérer le code composé par la
combinaison devinée dans la valeur de hachage .
Figure 7 : Suite du code du fichier code dans l’éditeur utilisé (vsc)
16
Figure 9: Code du fichier plateudujeu dans l’éditeur utilisé (vsc)
Figure 8 : Code du fichier estimateurresultatdans l’éditeur utilisé (vsc)
Plateaudujeu :
On fait appel à la classe IOexception pour éliminer toute exception sur la couleur
introuvable
Ce code contient les deux modes à jouer soit AIvsHuman ou HumanvsAI.
Si le cas était la première option le random importé permet d'avoir un code
aléatoire de longueur égale à 4, après, il vérifie le code et retourne le résultat de la
partie jouée.
Sinon, l’utilisateur est amené à choisir une combinaison de 4 couleurs, la machine
sera ainsi amenée à la découvrir en utilisant l’algorithme de Knuth.
17
Utilité :
Cette partie contient toute utilité qui améliore la flexibilité du jeu
{Affichage de la “planche”, de la liste des couleurs, des messages par exemple en
cas de victoire et vice versa( initgame(),print colors menu…) , demande de code (
askforcode(), askforstring () )...}
On a importé bufferedReader inputStreamReader : la première simplifie la lecture
de texte à partir de flux d'entrée de caractères {input stream} et optimise la
performance du programme , la deuxième est un pont permettant de transformer
un Input Stream en un Reader , ensuite la classe IO exception à pour rôle de tirer
les exceptions créees par exemple couleu rintrouvable.
Figure 11: Code du fichier utilité dans l’éditeur utilisé (vsc)
Figure 10: Suite du code du fichier plateaudujeu dans l’éditeur utilisé (vsc)
18
AI :
Sur ce stade on a essayé de projeter le principe de l’algorithme Minimax sur le
mode de AI vs Human , en exploitant les différents besoins pour construire le code
{ avoir combinaisons et ses terminologies afin d’assimiler explicitement dans la
partie Minimax ;
supprimercombinaison(),quijoue(),enrigistrerscore(),cleanconsole()…}
Figure 12 : Suite du code du fichier utilité dans l’éditeur utilisé (vsc)
19
Figure 13 : Code du fichier AI dans l’éditeur utilisé (vsc)
20
Mastermind :
Aperçu
Choix 1 du menu : { human VS AI }
C’est le main il gère tous les aspects du jeu., donc le jeu déroulera de la manière
suivante :
Figure 14 : Aperçu du jeu
Figure 15 : 1er choix du menu
21
*
Choix 2 du menu : { AI VS human }
Figure 17: Première exception
Figure 18 : Deuxième exception
Figure 16 : Deuxième choix du menu
Exception :
22
Choix 3 : EXIT
Figure 19 : 3eme choix de menu
23
Conclusion :
En guise de conclusion, ce rapport a été énormément constructif car il nous a
permis d’explorer davantage Java et ses fonctionnalités avancées, ainsi que de
découvrir l’immense potentiel de l’intelligence artificielle.
24
Bibliographie
https://fr.wikipedia.org/wiki/Mastermind
https://link.springer.com/article/10.1007/s11042-022-12153-2
https://en.wikipedia.org/wiki/Mastermind_(board_game)
https://www.apmep.fr/IMG/pdf/10-Mastermind_C.pdf
https://helios2.mi.parisdescartes.fr/~bouzy/Doc/IAL3/04_IA_jeux_BB.pdf
https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_du_minimax_de_v
on_Neumann
https://wiki.inforostand14.net/doku.php?id=minmax
https://cs.stanford.edu/people/eroberts/courses/soco/projects/2003-
04/intelligent-search/minimax.html
https://www.javatpoint.com/ai-alpha-beta-pruning
https://pageperso.lislab.fr/~liva.ralaivola/teachings20062005/reversi/MinMaxL
2.pdf

Contenu connexe

Similaire à AI Mastermind f.pdf

Rapport jeu en JAVA
Rapport jeu en JAVARapport jeu en JAVA
Rapport jeu en JAVA
Ahmed WAFDI
 
Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5
SmartnSkilled
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdf
DurelDonfack
 
Projet réalisé par ameny Khedhira & Arij Mekki
Projet réalisé par  ameny Khedhira & Arij MekkiProjet réalisé par  ameny Khedhira & Arij Mekki
Projet réalisé par ameny Khedhira & Arij Mekki
Ameny Khedhira
 
Introduction à MATLAB
Introduction à MATLABIntroduction à MATLAB
Introduction à MATLAB
Mohamed Boudchiche
 
Introduction&composants
Introduction&composantsIntroduction&composants
Introduction&composants
Anissa Teyeb
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
Natasha Grant
 
cahier informatique de la classe 8ème tunisiens.pdf
cahier informatique de la classe 8ème tunisiens.pdfcahier informatique de la classe 8ème tunisiens.pdf
cahier informatique de la classe 8ème tunisiens.pdf
LamissGhoul1
 
Tp python
Tp pythonTp python
Tp python
Slim Moalla
 
Tp python dauphine
Tp python dauphineTp python dauphine
Tp python dauphine
noussa krid
 
Rapport de Soutenance 1
Rapport de Soutenance 1Rapport de Soutenance 1
Rapport de Soutenance 1
BartOunay
 
Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
Wael Ismail
 
Chiffrement des terminaux : comment ça marche ?
Chiffrement des terminaux : comment ça marche ?Chiffrement des terminaux : comment ça marche ?
Chiffrement des terminaux : comment ça marche ?
Symantec
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdf
LamissGhoul1
 
Raccourcis mac os x 10.4
Raccourcis mac os x 10.4Raccourcis mac os x 10.4
Raccourcis mac os x 10.4
Nicolas Martello
 
Notion_De_Base_En_Informatique.pdf
Notion_De_Base_En_Informatique.pdfNotion_De_Base_En_Informatique.pdf
Notion_De_Base_En_Informatique.pdf
harizi riadh
 
Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...
Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...
Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...
Achraf Frouja
 

Similaire à AI Mastermind f.pdf (20)

Rapport jeu en JAVA
Rapport jeu en JAVARapport jeu en JAVA
Rapport jeu en JAVA
 
Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdf
 
Projet réalisé par ameny Khedhira & Arij Mekki
Projet réalisé par  ameny Khedhira & Arij MekkiProjet réalisé par  ameny Khedhira & Arij Mekki
Projet réalisé par ameny Khedhira & Arij Mekki
 
Introduction à MATLAB
Introduction à MATLABIntroduction à MATLAB
Introduction à MATLAB
 
Introduction&composants
Introduction&composantsIntroduction&composants
Introduction&composants
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
 
T ps dsp
T ps dspT ps dsp
T ps dsp
 
cahier informatique de la classe 8ème tunisiens.pdf
cahier informatique de la classe 8ème tunisiens.pdfcahier informatique de la classe 8ème tunisiens.pdf
cahier informatique de la classe 8ème tunisiens.pdf
 
Tp python
Tp pythonTp python
Tp python
 
Tp python dauphine
Tp python dauphineTp python dauphine
Tp python dauphine
 
Rapport de Soutenance 1
Rapport de Soutenance 1Rapport de Soutenance 1
Rapport de Soutenance 1
 
Ds1
Ds1Ds1
Ds1
 
Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
 
Chiffrement des terminaux : comment ça marche ?
Chiffrement des terminaux : comment ça marche ?Chiffrement des terminaux : comment ça marche ?
Chiffrement des terminaux : comment ça marche ?
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdf
 
Raccourcis mac os x 10.4
Raccourcis mac os x 10.4Raccourcis mac os x 10.4
Raccourcis mac os x 10.4
 
QQCOQP-Document_animateur_Tome2
QQCOQP-Document_animateur_Tome2QQCOQP-Document_animateur_Tome2
QQCOQP-Document_animateur_Tome2
 
Notion_De_Base_En_Informatique.pdf
Notion_De_Base_En_Informatique.pdfNotion_De_Base_En_Informatique.pdf
Notion_De_Base_En_Informatique.pdf
 
Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...
Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...
Présentation : Projet de Fin d'etude ' PFE ' 2018 : Conception et Réalisation...
 

AI Mastermind f.pdf

  • 1. 1 Année universitaire : 2022/2023. Projet Fondements d’intelligence artificielle : Réalisation du jeu Mastermind
  • 2. 2 Résumé : Ce rapport a pour objectif d’explorer l’univers de l’Intelligence Artificielle en relation avec la théorie des jeux et de la décision, notamment avec les deux fameux algorithmes : Minimax et élagage alpha-bêta. On procédera par la définition, le fonctionnement, les applications et les limites de chacun. On verra enfin l’intérêt de l’algorithme Minimax dans le contexte du fameux jeu Mastermind, et plus précisément avec l’algorithme de Knuth.
  • 3. 3 Table des matières Introduction : ................................................................................................................................ Chapitre 1 : Théorie du Jeu et l’Intelligence artificielle .............................................. 1- Jeu : ........................................................................................................................................ 6 2- Algorithmes Mini- max et Alpha- Beta : ................................................................. 7 2-a Minimax : ...................................................................................................................... 7 2-b AlphaBeta : ................................................................................................................... 9 Chapitre 2 : Mastermind ....................................................................................................... 1 1- Propos de Mastermind: ............................................................................................. 11 1-a Principe : ...................................................................................................................... 11 1-b Règles : .......................................................................................................................... 11 2- Conception de notre Jeu: ........................................................................................... 12 2-a-Human vs AI: .............................................................................................................. 12 2-b-AI vs Human: ............................................................................................................. 12 3- Réalisation de notre jeu :........................................................................................... 13 CONCLUSION : ........................................................................................................................... BIBLOGRAPHIE .......................................................................................................................
  • 4. 4 Liste des figures : Figure1 : algorithme MinimaX……………………………………………………………………………9 Figure 2 : Elagage AlphaBeta…………………………………………………………………………...11 Figure 3: Bord du jeu Mastermind ……………………………………………………………………12 Figure 4 : Code du fichier couleurs dans l’éditeur utilisé (vsc)……………………………14 Figure 5 : Code du fichier pion dans l’éditeur utilisé (vsc)………………………………….15 Figure 6 : Code du fichier pion dans l’éditeur utilisé (vsc)………………………………….15 Figure 7 : Suite du code du fichier code dans l’éditeur utilisé (vsc)…………………….16 Figure 8 : Code du fichier estimateurresultatdans l’éditeur utilisé (vsc)……………17 Figure 9: Code du fichier plateudujeu dans l’éditeur utilisé (vsc)………………………17 Figure 10: Suite du code du fichier plateaudujeu dans l’éditeur utilisé (vsc)…… .18 Figure 11: Code du fichier utilité dans l’éditeur utilisé (vsc)……………………………18 Figure 12 : Suite du code du fichier utilité dans l’éditeur utilisé (vsc)……………….19 Figure 13 : Code du fichier AI dans l’éditeur utilisé (vsc)…………………………………20 Figure 14 : Aperçu du jeu………………………………………………………………………………..21 Figure 15 : 1er choix du menu………………………………………………………………………..21 Figure 16 : Deuxième choix du menu…………………………………………………………….22 Figure 17: Première exception………………………………………………………………………22 Figure 18 : Deuxième exception…………………………………………………………………… 22 Figure 19 : 3eme choix du menu…………………………………………………………………… 23
  • 5. 5 Introduction : Durant ces dernières décennies, l’Intelligence Artificielle était sujette d’un grand intérêt en tant que branche de l’informatique. À cause des progrès fulgurants qu’elle accomplit jour après jour, il s’est avéré fort probable, voire certain, que la machine répliquera - ou dépassera même - les compétences de l’Homme. L’IA est un terme générique qui englobe une multitude de concepts et d’algorithmes, dotant la machine de la capacité d’apprentissage, d’analyse et de décision. En particulier, les stratégies de recherche présentaient un intérêt particulier grâce à leur utilisation dans divers domaines allant des jeux vidéo jusqu’aux plans de vol.
  • 6. 6 Chapitre 1 : Théorie du Jeu et l’Intelligence artificielle 1- Jeu : La théorie des jeux est un domaine des mathématiques appliquées qui modélise des scénarios réels en tant que jeux. Elle est ainsi utilisée principalement dans des situations d’interaction stratégique entre agents. L’IA a adapté la théorie des jeux afin de résoudre des problèmes en temps réel tout en améliorant la performance. Un jeu peut être formellement défini comme un problème de recherche, il est ainsi traduit en un arbre caractérisé par : Un jeu peut être défini comme une interaction - coopérative ou compétitive entre des joueurs ou des objets. Jeux coopératifs / non coopératifs. Jeux à somme nulle (gain d’un joueur amène directement à la perte de Jeux sous forme normale (déroulement modélisé par un tableau) / sous Jeux à information parfaite (chaque joueur a connaissance de tout le Jeux finis / infinis. Jeux stochastiques : déroulés en une séquence d’étapes. On distingue plusieurs concepts basiques de jeux : l’autre) / non nulle. forme extensive (déroulement modélisé par un arbre). déroulement passé : en général les jeux à mécanisme séquentiel) / à information imparfaite.
  • 7. 7 E0 : l’état initial, qui spécifie l’état du jeu au début de la partie. Joueur(E) : définit quel joueur doit jouer dans l’état E. Action(E) : renvoie l’ensemble d’actions légales dans l’état E. Résultat (E, A) : fonction de transition, qui définit le résultat de l’action A dans un état E. Test-Terminaison(E) : test de terminaison. Vrai si le jeu est fini dans l’état E, faux sinon. Les états dans lesquels le jeu est terminé sont appelés états terminaux. Utilité (E,J) : ou fonction de gain, elle associe une valeur numérique à chaque état terminal E pour un joueur J. Définition : L’algorithme Minimax en IA, est un algorithme de retour en arrière (backtracking) créé par John von Neumann et utilisé dans la prise de décision, la théorie des jeux et l’intelligence artificielle. Il vise à trouver le mouvement optimal pour un joueur, en supposant que l’adversaire joue également de manière parfaitement rationnelle. Pour ce faire, on fixe deux valeurs assez éloignées l’une de l’autre, à savoir Min et Max. Elles serviront à comparer le “poids” final d’une situation. Si ce dernier est plus proche de Min, le joueur gagne ; sinon, l’IA remporte la victoire. 2-a Minimax : 2- Algorithmes Mini- max et Alpha- Beta :
  • 8. 8 Applications : Les applications de l’algorithme Minimax se trouvent notamment dans les jeux dits « de plateau », où on retrouve un système de tours et de coups à jouer, par exemple, le tic-tac-toe, les échecs, Backgammon, Go... Ils sont généralement à somme nulle et à information parfaite. Cependant, son utilisation s’étend à divers autres problèmes. Fonctionnement : Dans l’algorithme Minimax de l’IA, il y a deux joueurs, Maximiser et Minimiser. Ils jouent le jeu de sorte que l’un essaie de maximiser son gain tandis que l’adversaire essaie d’obtenir le score le plus bas. Chaque plateau de jeu a un score d’évaluation (fonction d’utilité). Cet algorithme trouve la meilleure action possible pour un joueur : c’est en choisissant le nœud avec le meilleur score d’évaluation. Le meilleur choix sera fait après avoir évalué tous les mouvements potentiels de l’adversaire. L’algorithme regarde tous les états de terminaison et prend une décision. Figure1 : algorithme Minimax
  • 9. 10 Figure 2 : Elagage AlphaBeta Applications : Puisqu’il n’est que son amélioration, l’élagage alpha-bêta s’applique dans les mêmes situations que le Minimax. Limitations : L’élagage alpha-bêta dépend fortement de l’ordre d’examination des nœuds. On distingue deux cas extrêmes d’ordre : ➢ Pire commande : n’élague pas, on tombe ainsi dans le même cas que le Minimax avec une complexité encore plus élevée. ➢ Commande idéale : élague un nombre important de nœuds.
  • 10. 9 Limitations : La principale limitation de l’algorithme Minimax est qu’il devient vraiment lent pour les jeux complexes (qui contiennent plusieurs possibilités). Cette limitation peut être franchie à l’aide de l’élagage alpha-bêta. 2-b AlphaBeta : Définition : L’élagage alpha-bêta est une technique d’optimisation de l’algorithme Minimax qui peut être appliquée à n’importe quelle profondeur d’un arbre. Il n’élimine pas que des feuilles de l’arbre mais aussi des sous-arbres, optimisant ainsi le temps de traitement sans changer la décision finale. Fonctionnement : L’élagage alpha-bêta est caractérisé par ses deux paramètres, à savoir : Alpha : Le meilleur choix (de plus grande valeur) trouvé sur le chemin du Maximiser. Il est initialisé par -∞. Bêta : Le meilleur choix (de plus faible valeur) trouvé sur le chemin du Minimiser. Il est initialisé par +∞. De plus, le Maximiser ne pourra mettre à jour que la valeur d’Alpha et le Minimiser celle de Bêta. Afin d’élaguer, la condition suivante doit être réalisée : α >= β
  • 11. 11 Chapitre 2 : Mastermind Figure 3: Bord du jeu Mastermind 1- Propos de Mastermind: 1-b Règles : 1-a Principe : Mastermind se joue à deux : un décodeur et un codificateur. Le codificateur choisit une combinaison de 4 pions (à savoir un total de 1296 combinaisons). Mastermind est un jeu de société, de réflexion et de déduction visant à trouver un code (combinaison ordonnée de pions) en un nombre limité de coups. Il se présente généralement sous la forme d'un plateau perforé de plusieurs rangées de 4 ou 5 trous pouvant accueillir des pions colorés. Il comprend également des petits pions rouges et blancs utilisés pour donner des indications sur l’état d’avancement du joueur. ➢ ➢
  • 12. 12 ➢ ➢ ➢ Dans ce mode, l’IA est le codificateur et on est le décodeur. Il s’agit des jeux Mastermind classiques qu’on trouve généralement en ligne. On a conçu notre jeu de telle sorte que les pions et les fiches soient représentés par des disques colorés. De plus, on a offert deux modes de jeu comme le montrera le reste de ce paragraphe. Le but du décodeur est de déduire - sur 10 tentatives - la couleur et la position correctes des quatre pions choisis par le codificateur. Si l’un des pions choisis par le décodeur est correctement placé et coloré, le codificateur place une fiche rouge. Si l’un des pions choisis par le décodeur est seulement correctement coloré, le codificateur place une fiche blanche. Dans ce mode, on est le codificateur et l’IA est le décodeur. Ce dernier n’a que 5 tentatives. En effet, Donald Knuth a démontré en 1977 que la machine est toujours capable de trouver la combinaison secrète au bout de 5 tentatives au plus. Pour ce faire, il a adapté l’algorithme Minimax dans le contexte de ce jeu. L'enchaînement de son algorithme est comme suit: ➢ On crée une liste S des combinaisons possibles (initialement: card(S)=1296). ➢ On commence par deviner le code 1122. ➢ Si le code est juste, l’IA gagne. ➢ Sinon, on supprime les résultats illogiques de S, c’est-à-dire ceux qui donneront des résultats différents de ceux déjà obtenus. 2- Conception de notre Jeu: 2-a-Human vs AI: 2-b-AI vs Human:
  • 13. 13 ➢ ➢ Dans cette partie une dizaine des techniques utilisées pour lier les différents points du code source . Pion : Pion : pion est la fonction des boules colorées ; Par exemple : get pioncoloré englobe les codes des couleurs utilisées dans le jeu Couleurs : Il se compose des différentes couleurs utilisées par notre programme on les prend comme des valeurs (couleur) bien connues à partir du mot clé ENUM {} , ainsi get color{int} donne une couleur et get color {char} affecte à une valeur une couleur. On applique le Minimax. On commence par calculer le score (rouge, blanc) qu’aura chaque combinaison de S, on prendra ensuite le minimum des maximums de ces poids. On prend une combinaison qui a ce poids. On revient à l’étape 3. Figure 4 : Code du fichier couleurs dans l’éditeur utilisé (vsc) 3- Réalisation de notre jeu :
  • 14. c 14 . Code : Au sein de notre programme, la séquence des pions est la composante essentielle du jeu. Pour la traiter, on a utilisé les utilités des fichiers précédents, à savoir getCode , ajoutPion code{int} getPion à partir de l'index pour agir conformément aux règles de MasterMind. Figure 5 : Code du fichier pion dans l’éditeur utilisé (vsc) Figure 6 : Code du fichier code dans l’éditeur utilisé (vsc)
  • 15. 15 EstimateurRéultat: Cette partie exécute techniquement le code donné par un joueur X ,par une multitude des classes et fonctions { combinaison recherchée} ,parmi cette dernière on trouve la classe de estimationresultat contient 2 arrays lists ➢ La première stocke toutes les valeurs bien placées et correctes {totallyCorrect} ➢ La deuxième stocke juste les couleurs correctes {onlyValuesCorrect} estCorrecte est pour détecter que vous avez saisi la bonne combinaison et le test de terminaison est achevé. hashCode() qui digère les données stockées dans une instance de la classe dans une valeur de hachage dans notre cas on va digérer le code composé par la combinaison devinée dans la valeur de hachage . Figure 7 : Suite du code du fichier code dans l’éditeur utilisé (vsc)
  • 16. 16 Figure 9: Code du fichier plateudujeu dans l’éditeur utilisé (vsc) Figure 8 : Code du fichier estimateurresultatdans l’éditeur utilisé (vsc) Plateaudujeu : On fait appel à la classe IOexception pour éliminer toute exception sur la couleur introuvable Ce code contient les deux modes à jouer soit AIvsHuman ou HumanvsAI. Si le cas était la première option le random importé permet d'avoir un code aléatoire de longueur égale à 4, après, il vérifie le code et retourne le résultat de la partie jouée. Sinon, l’utilisateur est amené à choisir une combinaison de 4 couleurs, la machine sera ainsi amenée à la découvrir en utilisant l’algorithme de Knuth.
  • 17. 17 Utilité : Cette partie contient toute utilité qui améliore la flexibilité du jeu {Affichage de la “planche”, de la liste des couleurs, des messages par exemple en cas de victoire et vice versa( initgame(),print colors menu…) , demande de code ( askforcode(), askforstring () )...} On a importé bufferedReader inputStreamReader : la première simplifie la lecture de texte à partir de flux d'entrée de caractères {input stream} et optimise la performance du programme , la deuxième est un pont permettant de transformer un Input Stream en un Reader , ensuite la classe IO exception à pour rôle de tirer les exceptions créees par exemple couleu rintrouvable. Figure 11: Code du fichier utilité dans l’éditeur utilisé (vsc) Figure 10: Suite du code du fichier plateaudujeu dans l’éditeur utilisé (vsc)
  • 18. 18 AI : Sur ce stade on a essayé de projeter le principe de l’algorithme Minimax sur le mode de AI vs Human , en exploitant les différents besoins pour construire le code { avoir combinaisons et ses terminologies afin d’assimiler explicitement dans la partie Minimax ; supprimercombinaison(),quijoue(),enrigistrerscore(),cleanconsole()…} Figure 12 : Suite du code du fichier utilité dans l’éditeur utilisé (vsc)
  • 19. 19 Figure 13 : Code du fichier AI dans l’éditeur utilisé (vsc)
  • 20. 20 Mastermind : Aperçu Choix 1 du menu : { human VS AI } C’est le main il gère tous les aspects du jeu., donc le jeu déroulera de la manière suivante : Figure 14 : Aperçu du jeu Figure 15 : 1er choix du menu
  • 21. 21 * Choix 2 du menu : { AI VS human } Figure 17: Première exception Figure 18 : Deuxième exception Figure 16 : Deuxième choix du menu Exception :
  • 22. 22 Choix 3 : EXIT Figure 19 : 3eme choix de menu
  • 23. 23 Conclusion : En guise de conclusion, ce rapport a été énormément constructif car il nous a permis d’explorer davantage Java et ses fonctionnalités avancées, ainsi que de découvrir l’immense potentiel de l’intelligence artificielle.