1/26 CINQUIÈME PARTIE Programmation des jeux de réflexion 2/26 Plan 1. Introduction à l’intelligence artificielle 2. Agents intelligents 3. Algorithmes classiques de recherche en IA 4. Algorithmes et recherches heuristiques 5. Programmation des jeux de réflexion 6. Problèmes de satisfaction de contraintes 7. Agents logiques 8. Logique du premier ordre 9. Inférence en logique du première ordre 10. Introduction à la programmation logique avec Prolog 11. Planification 12. Apprentissage 3/26 En Bref … • L’algorithme Minimiax • Limiter la consommation de ressources • L’élagage α-β • L’algorithme SSS* • Jeux non-déterministes 4/26 Programmation des jeux vs résolution de problèmes • L’adversaire est imprévisible la solution est incertaine • Un temps limite est imposé quand il n’est pas possible d’atteindre le but il faut être capable de l’approximer • Pistes étudiées : 1. algorithme pour joueur parfait (Von Neumann, 1944) 2. horizon fini, évaluation approximative (Zuse, 1945 ; Shannon 1950) 3. Élagage pour réduire le coût de recherche (McCarthy, 1956) 5/26 Programmation des jeux de réflexion • Les différents types de jeux Information Déterministe Hasard Parfaite Échecs, reversi , go, morpion Backgammon, Monopoly Imparfaite Bridge, poker, scrabble 6/26 Programmation des jeux de réflexion Vocabulaire • État initial (initial state): L’état du plateau avant le début du jeu et le • • • • • • joueur qui commence. Fonction de succession (Successor function): Une fonction qui retourne une liste de pairs (action, état) qui indiquent un mouvement permis à partir d’un état et l’état résultant. Test de terminaison (terminal test): Un test qui permet de dire si le jeu est fini. État terminal (terminal state): L’état ou le jeu est fini avec un gagnant ou une égalité. Fonction d’utilité (Utility function): Une fonction qui donne une évaluation numérique de l’état terminal. Fonction d’évaluation (Evaluation function): Est la valeur estimée d’une position. Arbre de jeu (Game tree): Un arbre représentant tous les états atteignables à partir de l’état initial à travers les actions des deux joueurs 7/26 L’arbre de recherche Minimax Arbre de jeu du morpion 8/26 L’algorithme de recherche Minimax • Donne le coup parfait pour un jeu déterministe à information parfaite. • Idée: • Labéliser deux joueurs avec MIN et MAX où MAX est le joueur qui doit gagner et MIN pour son adversaire. • Minimiser la perte maximale: MAX doit choisir le coup qui maximise le minimum de ses gains ou qui minimise le maximum des pertes quand MIN joue. MAX A1 A2 A3 MIN A11 3 A12 12 A13 A21 8 2 A22 4 A23 A31 6 14 A32 5 A33 2 9/26 L’algorithme de recherche Minimax Exemple MAX A1 A2 MIN A12 A11 A22 A23 MAX MIN 20 16 5 8 7 13 1 3 4 11 6 2 15 16 18 10 10/26 L’algorithme de recherche Minimax Algorithme 11/26 L’algorithme de recherche Minimax Propriétés • Minimax s’arrête toujours si l’arbre est fini • Optimal, si l’adversaire est optimal • Si b est le nombre de coups possibles par situation et m la profondeur maximale de l’arbre, minimax a une complexité en • temps de O(bm) • en espace O(bm) • Pour les échecs par exemple : b ≈ 35, m ≈ 100 donc solution exacte impossible • 35000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000 • 1000000 nœuds/ms: 3591s ≈ 3583 années 12/26 L’algorithme de recherche Minimax Ressources limitées • Par exemple, on a 102 secondes et on peut explorer 104 nœuds par secondes. Donc, on peut regarder 106 nœuds par coup. • Approches standard: • Test d’arrêt (cutoff): Par exemple limiter la profondeur • Fonction d’évaluation = valeur estimée d’une position 13/26 L’algorithme de recherche Minimax Fonction d’évaluation • Aux échecs on choisit par exemple une somme linéaire pondérée de caractéristiques. • Eval(s) = w1f1(s)+w2f2(s) + … + wnfn(s) • Ex: w1 = 9 et f1 = (le nombre de reines blanches) - (le nombre de reines noires), etc. 14/26 L’algorithme de recherche Minimax L’effet horizon • Dans cette position Noir peut mettre le roi blanc en échec un certain nombre de fois mais le pion blanc va se transformer inévitablement en reine. On ne s’en aperçoit que très tard. 15/26 L’algorithme de recherche Minimax Arrêter la recherche • On peut facilement modifier l’algorithme MINIMAX en ajoutant un test d’arrêt (remplacer Terminal-Test par Cutoff-Test et en remplaçant Utility par Eval. • En pratique : problèmes de performances, ex., bm = 106 et b = 35. Donc m = 4. • Aux échecs on ne pourrait que regarder 4 demi-coups en avance • Un humain normal ≈ 4 coups d’avance • Un ordinateur classique et un expert humain ≈ 8 coups d’avance • Deep Blue, Kasparov ≈ 12 coups d’avance • Idée : Élaguer des branches inutiles algorithme α-β 16/26 L’algorithme α-β Exemple d’élagage α-β ≥3 3 MAX A1 A2 3 MIN A11 3 A12 12 A3 ≤2 A13 A21 8 2 A31 X X 14 2 ≤14 ≤14 X ≤15 X A32 A33 5 2 17/26 L’algorithme α-β Exemple 2 d’élagage α-β MAX A1 A2 MIN A12 A11 MAX A22 A23 ≥16 16 MIN 20 16 5 8 7 13 1 3 4 11 6 2 15 16 18 10 18/26 L’algorithme α-β Propriétés • L’élagage n’affecte pas le résultat final • Un bon choix améliore l’efficacité de l’élagage • Avec un choix parfait la complexité en temps est O(bm/2) • double la profondeur de recherche par rapport à Minimax • peut facilement atteindre des profondeurs de l’ordre de 8 coups d’avance aux échecs 19/26 L’algorithme α-β Pourquoi ce nom? • α est la meilleure valeur (la plus grande) pour MAX trouvée jusqu’à présent en dehors du chemin actuel • Si V est pire que α, MAX va l’éviter et élaguer la branche • Définir β d’une manière similaire pour MIN : β est la meilleur valeur (la plus petite) pour MIN jusqu’à présent 20/26 L’algorithme α-β Max-Value 21/26 L’algorithme α-β Min-Value 22/26 L’algorithme α-β La valeur exacte des nœuds n’est pas importante • Seulement l’ordre est important • Le comportement est préservé pour chaque transformation monotone de la fonction Eval. MAX 16 MIN 160 16 20 5 16 5 160 8 200 50 160 50 80 23/26 L’algorithme α-β Remarques • L’ordre dans lequel on visite les fils est important • Si on trouve rapidement une bonne valeur, on élague plus de nœuds • On peut trier les fils par leur utilité • Il y a d’autres améliorations • Au mieux, on visite √n nœuds au lieu de n = bm pour minimax • Aux échecs on utilise au début du jeu des bases de données d’ouvertures, au milieu α-β et à la fin des algorithmes spéciaux 24/26 Jeux non-déterministes • Dans le Backgammon par exemple, le lancer des dés détermine les coups corrects. Exemple simplifié avec lancer d’une pièce de monnaie : 25/26 Algorithmes pour les jeux non-déterministes • Expectimax donne le coup parfait comme Minimax • On doit considérer les nœuds CHANCE • On doit ajouter dans l’algorithme : • if state is a chance node then return average of Expectimax-Value of Successors(state) • L’algorithme α-β peut être adapté, si Eval est bornée. 26/26 La valeur exacte des nœuds est importante • Le comportement est préservé seulement pour chaque transformation positive et linéaire de EVAL • Eval doit être proportionnelle au gain attendu