2019-02-24 22:26:38 +00:00
\section { Chapitre 5: Recherche avec un adversaire}
2019-03-01 02:48:16 +00:00
\label { sec:ch5}
2019-02-24 22:26:38 +00:00
\subsection { Particularités des jeux avec adversaires}
\label { sec:ch5jeuxadversaires}
\begin { itemize}
\item Plusieurs agents qui modifient l'environnement
\item Imprévisibilité
\item Temps de réaction limité
\item Relation entre les joueurs:
\begin { itemize}
\item Coopératifs: même but
\item Compétitifs: un gain pour un est une perte pour l'autre:
\begin { itemize}
\item Cas particulier: jeux à somme nulle (utilité de +1 ou -1)
\end { itemize}
\item Mixte: alliances
\end { itemize}
\item Jeux à tour de rôle:
\begin { itemize}
\item Joueurs coopératifs ou rivaux
\item Connaissance partielle ou totale de l'état du jeu
\end { itemize}
\end { itemize}
\paragraph { Hypothèses pour le cours}
\begin { enumerate}
2019-02-25 04:30:33 +00:00
\item Deux adversaires (\textsc { Max} et \textsc { Min} )
2019-02-24 22:26:38 +00:00
\item Tour de rôle
\item Somme nulle (Récompense positive ou négative)
\item Complètement observables
\item Déterministes
\end { enumerate}
\subsection { Arbre de recherche}
\label { sec:ch5arbrerecherche}
\begin { itemize}
\item Noeud initial
\item Fonction de transition
\item Test de terminaison
\item Fonction d'utilité
\end { itemize}
2019-02-25 04:30:33 +00:00
\subsection { Algorithme \textsc { MiniMax} }
2019-02-24 22:26:38 +00:00
\label { sec:ch5minimax}
À chaque tout, choisir l'action menant à la plus grande valeur minimax. Meilleure action optimale contre un joueur optimal. C'est un algorithme de recherche en profondeur.
\paragraph { Algorithme}
Programmation récursive jusqu'à la racine de l'arbre
\begin { align}
2019-02-25 04:30:33 +00:00
E[\textsc { MiniMax} (n)] & =
2019-02-24 22:26:38 +00:00
\begin { cases}
U(n)& \text { $ n $ est terminal} \\
2019-02-25 04:30:33 +00:00
max_ { s \in Child(n)} \textsc { MiniMax} (s)& \text { $ n $ est Max} \\
min_ { s \in Child(n)} \textsc { MiniMax} (s)& \text { $ n $ est Min} \\
2019-02-24 22:26:38 +00:00
\end { cases}
\end { align}
\begin { table} [h]
\centering
\begin { tabular} { p{ 4cm} |p{ 3cm} |p{ 4cm} }
Propriété& Valeur& Conditions\\
\hline
Complétude& Oui& Si l'arbre est fini\\
Complexité en temps & $ O ( b ^ m ) $ & \\
Complexité en espace& $ O ( bm ) $ & \\
Optimalité& Oui& Contre un adversaire optimal\\
\end { tabular}
2019-02-25 04:30:33 +00:00
\caption { \textsc { MiniMax} : propriétés}
2019-02-24 22:26:38 +00:00
\end { table}
\subsection { Accélérer la recherche}
\label { sec:ch5accelerer}
Deux approches:
\begin { itemize}
\item Élagage Alpha-Beta: élaguer les chemins explorés inutilement
\item Remplacer la fonction d'utilité par une évaluation heuristique: recherche la plus profonde possible + prédiction du résultat ensuite
\end { itemize}
\subsection { Élagage Alpha-Béta}
\label { sec:ch5alphabeta}
\begin { itemize}
2019-02-25 04:30:33 +00:00
\item $ \alpha $ est la valeur du meilleur choix pour \textsc { Max} (plus grande valeur trouvée jusqu'ici)
\item $ \beta $ et la valeur du meilleur choix pour \textsc { Min} (plus petite valeur trouvée jusqu'ici)
2019-02-24 22:26:38 +00:00
\end { itemize}
Couper dans un noeud
\begin { itemize}
2019-02-25 04:30:33 +00:00
\item \textsc { Min} : Si $ f ( n ) < \alpha $ (pire que $ \alpha $ pour \textsc { Max} )
\item \textsc { Max} : Si $ f ( n ) > \beta $ (pire que $ \beta $ pour \textsc { Min} )
2019-02-24 22:26:38 +00:00
\end { itemize}
\href { http://inst.eecs.berkeley.edu/~cs61b/fa14/ta-materials/apps/ab_ tree_ practice/} { Simulation (Berkeley)}
\subsection { Negamax}
\label { sec:ch5negamax}
2019-02-25 04:30:33 +00:00
\begin { function} [ht]
\Sortie { valeur}
\Deb {
\Si { profondeur=0 $ \lor $ noeud est terminal} {
\Retour { joueur*valeur} \;
}
noeudsEnfants $ \leftarrow $ trierActions(genererActions(noeud))\;
valeur <- $ - \infty $ \;
\PourCh { noeudEnfant $ \in $ noeudsEnfants} {
valeur <- max(valeur, -\textsc { NegaMax} (noeudEnfant, profondeur-1, -$ \beta $ , -$ \alpha $ , -joueur))\;
$ \alpha $ <- max($ \alpha $ ,valeur)\;
\Si { $ \alpha \geq \beta $ } {
Couper(noeudEnfant)\;
}
}
\Retour { valeur}
}
\caption { NegaMax(noeud, profondeur, $ \alpha $ , $ \beta $ , joueur=1)}
\end { function}
\begin { table} [ht]
\centering
\begin { tabular} { p{ 4cm} |p{ 3cm} |p{ 4cm} }
Propriété& Valeur& Conditions\\
\hline
Complétude& Oui& Si solution atteignable\\
Complexité en temps & $ O ( b ^ m ) $ à $ O ( b ^ m ) $ & Du meilleur cas au pire cas\\
Complexité en espace& $ O ( bm ) $ & \\
Optimalité& Oui& Si solution optimale atteignable\\
\end { tabular}
2019-03-02 20:25:04 +00:00
\caption { Negamax: propriétés}
2019-02-25 04:30:33 +00:00
\end { table}
\subsection { Décision en temps réel}
\label { sec:ch5tempsreel}
Approche standard:
\begin { itemize}
\item Limiter la profondeur
\item Modifier l'algorithme \textsc { MiniMax} avec élagage $ \alpha - \beta $ pour utiliser une fonction heuristique au lieu du coût (H-minimax).
\item Modifier la fonction d'évaluation à l'aide d'apprentissage machine (Ex: fonction linéaire avec un poids pour chaque figure du jeu d'échecs)
\item Recherche par faisceau
\end { itemize}
2019-02-24 22:26:38 +00:00
2019-02-25 04:30:33 +00:00
\subsection { Actions aléatoires}
\label { sec:ch5actionsaleatoires}
2019-02-24 22:26:38 +00:00
2019-02-25 04:30:33 +00:00
\begin { itemize}
\item Ajout de noeuds \textsc { Chance} aux noeuds \textsc { Max} et
\textsc { Min} .
\item L'utilité d'un noeud chance est l'utilité espérée, la
moyenne de l'utilité de ses enfants.
\end { itemize}
\subsection { \textsc { Expectimax} }
\label { sec:ch5expectimax}
On modélise le comportement de l'opposant à l'aide d'un modèle probabiliste.
\begin { align}
E[\textsc { ExpectiMax} (n)] & =
\begin { cases}
U(n)& \text { $ n $ est terminal} \\
max_ { s \in Child(n)} \textsc { MiniMax} (s)& \text { $ n $ est Max} \\
min_ { s \in Child(n)} \textsc { MiniMax} (s)& \text { $ n $ est Min} \\
\sum _ { s \in Child(n)} P(s) \times \textsc { ExpectiMax} (s)& \text { $ n $ est Chance} \\
\end { cases}
\end { align}
2019-02-24 22:26:38 +00:00
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "notes_de_cours"
%%% End: