ift7025-notes-de-cours/chapitre5.tex
2019-02-28 21:48:16 -05:00

177 lines
5.4 KiB
TeX

\section{Chapitre 5: Recherche avec un adversaire}
\label{sec:ch5}
\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: