L`intelligence artificielle et les jeux - JEIA
Transcription
L`intelligence artificielle et les jeux - JEIA
Faire jouer l'ordinateur Faire jouer l'ordinateur Jean-Christophe Routier [email protected] Université Lille 1 Faire jouer l'ordinateur que faut-il jouer ? Université Lille 1 2 Faire jouer l'ordinateur quels jeux ? Jeux à 2 joueurs jouant en alternance à information complète les joueurs ont toute l'information les joueurs ont la même information à somme nulle les intérêts des joueurs sont opposés la somme des gains est nulle : ce qui est gagné par l'un est perdu par l'autre les échecs, les dames, le go, awele, puissance 4, othello, tic-tac-toe, etc. Université Lille 1 3 Faire jouer l'ordinateur http://www.jeu.fr/jeu/tic-tac-toe Université Lille 1 4 Faire jouer l'ordinateur question Comment faire jouer l'ordinateur ? Comment programmer l'ordinateur pour jouer ? Université Lille 1 5 Faire jouer l'ordinateur que faut-il jouer ? 9 coups possibles × × × × × × × × º º × × … × º × × º × º º × × 19 683 situations différentes 255 168 parties différentes 131 184 victoires de x 77 904 victoires de o 46 080 égalités comment gérer toutes ces situations ? Université Lille 1 6 Faire jouer l'ordinateur aux échecs : entre 1043 et 1050 situations possibles 10123 parties possibles… 1080 atomes dans l'univers Université Lille 1 7 Faire jouer l'ordinateur c'est à x de jouer º × º × º º × º × º × × º º x peut-il gagner ? quel est le meilleur coup à jouer ? Université Lille 1 8 Faire jouer l'ordinateur activité calculer/développer l'arbre de jeu pour º x º x x Université Lille 1 9 Faire jouer l'ordinateur arbre de jeu 1 partie coup 1 1.1 1.2 1 autre partie coup 3 coup 2 1.3 1.2.1 1.2.2 1.2.3 Université Lille 1 Situation initiale 3.1 3.2 3.3 3.2.1 3.2.2 3.2.3 10 Faire jouer l'ordinateur caractéristiques une situation initiale à chaque tour les règles du jeu déterminent les situations suivantes possibles/atteignables jouer c'est choisir la prochaine situation de jeu une partie = suite de coups de chacun des joueurs = suite des situations choisies par les joueurs Université Lille 1 11 Faire jouer l'ordinateur une branche = déroulement d' une partie problème : choisir une branche qui mène à une victoire ou choisir un coup maintenant pour gagner plus tard ? º x º x x Université Lille 1 12 Faire jouer l'ordinateur solution : calculer des coups « à l'avance » 1) calculer l'arbre de jeu 2) choisir la/les meilleures parmi les situations atteintes Université Lille 1 13 Faire jouer l'ordinateur problèmes : 1) comment comparer les situations atteintes ? 2) combien de « coups à l'avance » ? Université Lille 1 14 Faire jouer l'ordinateur principe : à chaque situation atteinte on attribue une valeur numérique croissante avec la qualité de la situation Université Lille 1 15 Faire jouer l'ordinateur activité attribuer des valeurs aux situations atteintes pour l'arbre de º x º x x quelles valeurs ? P<N<G par exemple P=-1 < N=0 < G=+1 Université Lille 1 16 Faire jouer l'ordinateur principe : bien choisir c'est... viser la situation avec la plus grande valeur maximiser la valeur de la situation atteinte propager les valeurs « vers le haut » Université Lille 1 17 Faire jouer l'ordinateur init -5 coup 1 1.1 1.2 34 -5 Université Lille 1 45 coup 3 coup 2 1.3 3.1 1.2.1 1.2.2 1.2.3 12 7 22 3.2 3.3 3.2.1 3.2.2 3.2.3 34 -10 22 7 4 -3 18 Faire jouer l'ordinateur propager ? la valeur d'une situation dépend des valeurs de ses situations suivantes quelleG valeur ? × valeur º º º … valeur valeur ... valeur × × 2 ×1 n Université Lille 1 19 Faire jouer l'ordinateur maximiser à chaque fois que l'on doit choisir sélectionner parmi les situations suivantes celle avec la plus grande valeur attribuer sa valeur à la situation actuelle G× P<N<G N º Université Lille 1 º × P × … G º × G = max(N,P,G) 20 Faire jouer l'ordinateur comment propager ? init pgme coup 1 advers. pgme 1.1 1.2 1.3 3.1 advers. 1.2.1 1.2.2 1.2.3 pgme coup 3 coup 2 3.2 3.3 3.2.1 3.2.2 3.2.3 valeurs il faut prendre en compte l'adversaire... Université Lille 1 21 Faire jouer l'ordinateur simuler l'adversaire ? hypothèse : l'adversaire joue le mieux possible rappel : les intérêts de l'adversaire sont opposés c'est quoi le « mieux possible » pour le programme ? c'est lui-même... Université Lille 1 22 Faire jouer l'ordinateur mais l'adversaire a un objectif opposé, il doit donc… minimiser donc à chaque fois que l'on doit choisir à la place de l'adversaire sélectionner parmi les situations suivantes celle avec la plus petite valeur attribuer sa valeur à la situation actuelle P Nº Université Lille 1 × P<N<G P = min(N,P,G) º × P … G × º × 23 Faire jouer l'ordinateur l'algorithme min-MAX init MAX pgme min advers. MAX 1.1 pgme coup 1 1.2 1.3 3.1 min advers. 1.2.1 1.2.2 1.2.3 MAX pgme Université Lille 1 coup 3 coup 2 3.2 3.3 3.2.1 3.2.2 3.2.3 valeurs 24 Faire jouer l'ordinateur activité propager les valeurs pour l'arbre de º x º x x quel est le meilleur coup à jouer? que peut-on dire de cette situation ? Université Lille 1 25 Faire jouer l'ordinateur synthèse – algorithme min-MAX 1) développer l'arbre de jeu 2) attribuer des valeurs aux situations atteintes 3) propager les valeurs du bas vers le haut : c'est au tour du programme de jouer : on sélectionne la plus grande des valeurs suivantes on attribue cette valeur à la situation actuelle c'est au tour de l'adversaire de jouer on le simule : on sélectionne la plus petite des valeurs suivantes on attribue cette valeur à la situation actuelle si on n'a pas fini on recommence avec le niveau « au dessus » 4) arrivé « en haut » on choisit la situation qui a obtenu la plus grande valeur Université Lille 1 26 Faire jouer l'ordinateur algorithme min-MAX appel initial : minmax(situation_initiale,profondeur,MAX) minmax(situation, prof, joueur) = si prof = 0 ou situation est une fin de partie retourner eval(situation) sinon situFilles = les situations filles légales de situation si joueur = MAX retourner maxfille∈situFilles{minmax(fille,prof-1,min)} sinon // joueur = min retourner minfille∈situFilles{minmax(fille,prof-1,MAX)} fin si fin si Université Lille 1 27 Faire jouer l'ordinateur le plus souvent il n'est pas possible de calculer l'arbre de jeu complet choisir un nombre de coups calculés à l'avance et définir une fonction d'évaluation Université Lille 1 28 Faire jouer l'ordinateur fonction d'évaluation exemple : othello (max = noir) 1) valeur = nb noirs – nb blancs 2) donnez une valeur aux cases somme des valeurs des cases occupées par les noirs – somme des valeurs des cases occupées par les blancs Université Lille 1 29 Faire jouer l'ordinateur qualité du jeu du programme : 1) nombre de coups calculés 2) pertinence fonction d'évaluation problème : l'effet d'horizon Université Lille 1 30 Faire jouer l'ordinateur exemple : tic-tac-toe × º × º º MAX × º × º × º min MAX min × º × º × º × º × º × º º × º º × º º × º × º × × º º × × º × º × º º × º MAX Université Lille 1 × × º × º º × × × × º × × º × º × º × º º º º º º º º × × º × × º º × × º × º º º × º × × º º × × º º º × × º × º º × × × º ×× × º × º × º º × º º º º º º º × º ×× º º × × º × º × × × × × × º º º º º º º º º º × º × × º º ×× º ×× º º º × º × º × × º º º ×× º ×× º º º º × º 31 Faire jouer l'ordinateur exemple : tic-tac-toe × º × º º MAX min MAX min × × º × º º × º × º × º × º × º × º × º × º × º º × º º × º º × º × º × × º º × × º × º × º º × º MAX × × × × º × × º × º × º × º º º º º º º º × × º × × º º × × º × º º º × º × × º º × × º º º victoire de MAX Université Lille 1 × × × º º º × × × º ×× × º × º × º º × º º º º º º º × º ×× º º × × º × º º ×× º ×× º ×× º º º º º º º × º × × º º ×× º ×× º º º × º × º × × º º º ×× º ×× º º º º × º victoire de min 32 Faire jouer l'ordinateur exemple : tic-tac-toe × º × º º MAX min MAX min MAX =G victoire de MAX =N valeurs : Université Lille 1 =P match nul < perdu victoire de min < 33 Faire jouer l'ordinateur exemple : tic-tac-toe MAX × º × º º min MAX min MAX valeurs : Université Lille 1 < < 34 Faire jouer l'ordinateur c'est à x de jouer º × º × º º × º × º × × º º x peut-il gagner ? quel est le meilleur coup à jouer ? que dit l'algorithme ? à vous de jouer... Université Lille 1 35