update report

This commit is contained in:
Mylloon 2023-04-07 15:59:12 +02:00
parent 53285b2664
commit 47e7456150
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -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}