This repository has been archived on 2023-04-18. You can view files and clone it, but cannot push or open issues or pull requests.
iaj/TP2/Rapport/rapport.tex
2023-04-07 15:59:12 +02:00

92 lines
3.4 KiB
TeX

\documentclass{article}
\usepackage[T1]{fontenc} % encodage
\renewcommand{\familydefault}{\sfdefault} % police en sans-serif
\usepackage[french]{babel} % langue
\frenchsetup{SmallCapsFigTabCaptions=false}
\usepackage[hidelinks]{hyperref} % liens cliquable dans la table des matières
\usepackage{graphicx} % images
% Replace oe
\usepackage{luacode}
\begin{luacode}
function fn_oe(s)
s = s:gsub("oe", "\\oe{}")
return s
end
\end{luacode}
\AtBeginDocument{
\directlua{
luatexbase.add_to_callback("process_input_buffer", fn_oe, "fn_oe")
}
}
\usepackage[a4paper, left=20mm, top=20mm]{geometry} % dimensions de la page
\title{\textbf{TP2 - Breakthrough}}
\author{Groupe 4\thanks{César PICHON, Florian POSEZ, Omar ANOUAR, Anri KENNEL}\\
\\Intelligence artificielle pour les jeux $\cdot$ Université Paris 8}
\date{Année universitaire 2022-2023}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\section{Particularités}
\subsection{Algorithme}
L'algorithme Monte Carlo est une méthode de simulation basée sur l'évaluation
de résultats aléatoires. Dans le contexte du jeu Breakthrough, l'algorithme
est utilisé pour simuler plusieurs parties à partir de chaque état du jeu,
afin de déterminer quelle est la meilleure action à jouer à partir de cet état.
\vspace{1em}
L'algorithme Monte Carlo utilise les étapes suivantes :
\begin{enumerate}
\item \textbf{Sélection} : on sélectionne un noeud dans l'arbre de recherche
en suivant une stratégie de sélection. Dans notre implémentation,
la fonction \texttt{mcts\_selection} est utilisée pour choisir un noeud.
\item \textbf{Expansion} : on étend l'arbre de recherche en ajoutant des noeuds
correspondant aux actions possibles à partir du noeud sélectionné. Dans
notre implémentation, la fonction \texttt{mcts\_expansion} est utilisée
pour ajouter les noeuds.
\item \textbf{Simulation} : on simule un grand nombre de parties à partir du
nouveau noeud pour estimer la qualité de l'action associée. Dans notre
implémentation, la fonction \texttt{mcts\_simulation} est utilisée pour
simuler les parties.
\item \textbf{Rétropropagation} : on met à jour les valeurs des noeuds parents
en fonction des résultats de la simulation. Dans notre implémentation,
la fonction \texttt{mcts\_back\_propagation} est utilisée pour mettre
à jour les noeuds parents.
\end{enumerate}
\subsection{Optimisation}
Aucune optimisation particulière n'a été ajoutée à cette implémentation
de l'algorithme Monte Carlo.
\section{Implémentation}
Le joueur \texttt{mcts\_player.cpp} est identique au joueur aléatoire au détail
près que le joueur MCTS appelle la fonction \texttt{get\_mcts\_move}.
\vspace{1em}
Cette méthode de la classe \texttt{bt\_t} initialise un noeud et l'algorithme en
appellant l'expansion sur ce noeud. On boucle ensuite $x$ fois en :
\begin{enumerate}
\item copiant le plateau actuel
\item selectionne un noeud de l'arbre
\item étend l'arbre depuis le noeud selectionné
\item simule le jeu en jouant aléatoirement
\item propage le résultat à travers tout l'arbre
\end{enumerate}
\vspace{1em}
Une fois ce travail effectué, on selectionne la meilleur coup parmis les enfants
du noeud racine en fonction du nombre de simulation jouée.
\end{document}