\section{Chapitre 5: Recherche avec un adversaire} \label{sec:ch4} \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} \item Deux adversaires (\textsc{Max} et \textsc{Min}) \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} \subsection{Algorithme \textsc{MiniMax}} \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} E[\textsc{MiniMax}(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}\\ \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} \caption{\textsc{MiniMax}: propriétés} \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} \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) \end{itemize} Couper dans un noeud \begin{itemize} \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}) \end{itemize} \href{http://inst.eecs.berkeley.edu/~cs61b/fa14/ta-materials/apps/ab_tree_practice/}{Simulation (Berkeley)} \subsection{Negamax} \label{sec:ch5negamax} \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} \caption{$SMA^{\star}$: propriétés} \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} \subsection{Actions aléatoires} \label{sec:ch5actionsaleatoires} \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} %%% Local Variables: %%% mode: latex %%% TeX-master: "notes_de_cours" %%% End: