From 47e745615016f07ab736a0fc53402c31f3e886b3 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 7 Apr 2023 15:59:12 +0200 Subject: [PATCH] update report --- TP2/Rapport/rapport.tex | 65 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/TP2/Rapport/rapport.tex b/TP2/Rapport/rapport.tex index 7b8370a..738e436 100644 --- a/TP2/Rapport/rapport.tex +++ b/TP2/Rapport/rapport.tex @@ -10,7 +10,20 @@ \usepackage[hidelinks]{hyperref} % liens cliquable dans la table des matières \usepackage{graphicx} % images -% \usepackage{caption} + +% 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 @@ -27,9 +40,53 @@ \section{Particularités} \subsection{Algorithme} -\dots +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. -\subsection{Optimisation·s} -\dots +\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}