update report
This commit is contained in:
parent
53285b2664
commit
47e7456150
1 changed files with 61 additions and 4 deletions
|
@ -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}
|
||||
|
|
Reference in a new issue