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