add tests to report
This commit is contained in:
parent
6302ed8b55
commit
cf4c34df3a
1 changed files with 94 additions and 7 deletions
|
@ -145,7 +145,7 @@ spécifique à un joueur humain.
|
||||||
\-- utils.c
|
\-- utils.c
|
||||||
\end{minted}
|
\end{minted}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\caption{Arborescence du projet sans l'implémentation des IA}
|
\caption{Arborescence du projet sans l'implémentation des IA et tests}
|
||||||
\label{tree:project}
|
\label{tree:project}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ et elle jouera un coup (cf. \autoref{cod:minimax_def}).
|
||||||
\begin{minipage}{0.8\textwidth}
|
\begin{minipage}{0.8\textwidth}
|
||||||
\begin{minted}[autogobble,linenos]{c}
|
\begin{minted}[autogobble,linenos]{c}
|
||||||
/* Joue le tour d'après l'algorithme minimax */
|
/* Joue le tour d'après l'algorithme minimax */
|
||||||
void action_joueur_minimax(Jeu *jeu, const int couleur);
|
void action_joueur_minimax(Jeu *jeu, const int couleur, const int profondeur);
|
||||||
\end{minted}
|
\end{minted}
|
||||||
|
|
||||||
\begin{minted}[autogobble,linenos,firstnumber=last]{c}
|
\begin{minted}[autogobble,linenos,firstnumber=last]{c}
|
||||||
|
@ -202,10 +202,10 @@ du jeu (cf. \autoref{cod:minimax_play}).
|
||||||
// Si le joueur peut jouer
|
// Si le joueur peut jouer
|
||||||
if (tour->couleur == NOIR) {
|
if (tour->couleur == NOIR) {
|
||||||
// Tour du joueur minimax
|
// Tour du joueur minimax
|
||||||
action_joueur_minimax(jeu, tour->couleur);
|
action_joueur_minimax(jeu, tour->couleur, profondeur);
|
||||||
} else {
|
} else {
|
||||||
// Tour du joueur humain
|
// Tour du joueur humain
|
||||||
action_joueur_humain(jeu, tour->couleur);
|
action_joueur_humain(jeu, tour->couleur, profondeur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ du jeu (cf. \autoref{cod:minimax_play}).
|
||||||
}
|
}
|
||||||
\end{minted}
|
\end{minted}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\caption{Extrait modifié de \texttt{jeu.c}, avec minimax jouant les noirs et un humain les blancs}
|
\caption{Extrait simplifié de \texttt{jeu.c}, avec minimax jouant les noirs et un humain les blancs}
|
||||||
\label{cod:minimax_play}
|
\label{cod:minimax_play}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
@ -332,16 +332,103 @@ même technique pour bêta (cf. \autoref{cod:elagage_beta}).
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\section{Comparaison d'efficacité}
|
\section{Comparaison d'efficacité}
|
||||||
TODO!
|
Le fichier \texttt{text.h} déclare une série de fonctions qui permet de tester
|
||||||
|
minimax et alpha-bêta.
|
||||||
|
Je teste 2 facette des IA, la rapidité d'exécution et le taux de victoire des
|
||||||
|
IA (cf. \autoref{txt:tests_res}).
|
||||||
|
\label{sec:comp_eff}
|
||||||
|
|
||||||
\section{Discussion}
|
La partie test de rapidité permet de montrer que l'implémentation d'alpha-bêta
|
||||||
|
fonctionne car a profondeur égale, alpha-bêta est beaucoup plus rapide que
|
||||||
|
minimax. Je n'ai d'ailleurs pas testé minimax sur d'aussi grandes profondeurs
|
||||||
|
qu'alpha-bêta car cela prenait trop de temps. Le temps total des tests dure
|
||||||
|
environ 4 minutes sur ma machine.
|
||||||
|
|
||||||
|
Cette partie montre aussi qu'il n'y a pas grande différence en temps entre
|
||||||
|
minimax et alpha-bêta pour une profondeur inférieur ou égal à 4.
|
||||||
|
|
||||||
|
La partie sur le taux de victoire permet de montrer qu'à profondeur égale,
|
||||||
|
alpha-bêta et minimax ne se démarquent pas, et que c'est bien la différence de
|
||||||
|
profondeur qui donne l'avantage.
|
||||||
|
|
||||||
|
En effet, là où minimax prend beaucoup de temps à partir d'une profondeur de 5,
|
||||||
|
alpha-bêta peut aller jusqu'à une profondeur de 8.
|
||||||
|
|
||||||
|
À noter que lors des tests, je fais jouer l'algorithme contre lui-même donc en
|
||||||
|
réalité, l'algorithme prend 2x moins de temps que le temps indiqué, vu qu'il joue
|
||||||
|
pour les 2 joueurs. En revanche ça ne veut pas dire que l'on peut doubler la
|
||||||
|
profondeur car l'augmentation n'est pas linéaire.
|
||||||
|
|
||||||
|
\section{Conclusion}
|
||||||
Le problème de mon implémentation est la fonction d'évaluation qui regarde juste
|
Le problème de mon implémentation est la fonction d'évaluation qui regarde juste
|
||||||
le nombre de points gagnés/perdus. En ne prenant pas en compte par exemple si le
|
le nombre de points gagnés/perdus. En ne prenant pas en compte par exemple si le
|
||||||
pion placé est sur un coin ou non (le coin étant une position avantageuse).
|
pion placé est sur un coin ou non (le coin étant une position avantageuse).
|
||||||
|
|
||||||
|
Enfin, je ne teste pas la quantité de mémoire utilisés par les algorithmes.
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\appendix
|
\appendix
|
||||||
\section*{Appendix}
|
\section*{Appendix}
|
||||||
\listoffigures
|
\listoffigures
|
||||||
|
|
||||||
|
\vspace{1cm}
|
||||||
|
\begin{figure}[h]
|
||||||
|
\centering
|
||||||
|
\begin{minipage}{1\textwidth}
|
||||||
|
\begin{minted}[autogobble,linenos,fontsize=\footnotesize]{text}
|
||||||
|
$ ./othello -t
|
||||||
|
\end{minted}
|
||||||
|
\begin{minted}[autogobble,linenos,fontsize=\footnotesize,firstnumber=last]{text}
|
||||||
|
Lancement des tests, on va jusqu'à une profondeur de 8 avec une moyenne de 5 répétitions.
|
||||||
|
On fait jouer alpha-bêta contre lui-même puis minimax contre lui-même.
|
||||||
|
Profondeur de 1 (moyenne de 5 tests) -> alpha-bêta = 0.001742s | minimax = 0.001829s | différence (m - a) = 0.000087s
|
||||||
|
Profondeur de 2 (moyenne de 5 tests) -> alpha-bêta = 0.007442s | minimax = 0.011332s | différence (m - a) = 0.003890s avec le précédent = 0.003803s
|
||||||
|
Profondeur de 3 (moyenne de 5 tests) -> alpha-bêta = 0.029347s | minimax = 0.073701s | différence (m - a) = 0.044354s avec le précédent = 0.040464s
|
||||||
|
Profondeur de 4 (moyenne de 5 tests) -> alpha-bêta = 0.117613s | minimax = 0.344193s | différence (m - a) = 0.226580s avec le précédent = 0.182226s
|
||||||
|
Profondeur de 5 (moyenne de 5 tests) -> alpha-bêta = 0.524146s | minimax = 4.843884s | différence (m - a) = 4.319738s avec le précédent = 4.093158s
|
||||||
|
Profondeur de 6 (moyenne de 5 tests) -> alpha-bêta = 1.507593s
|
||||||
|
Profondeur de 7 (moyenne de 5 tests) -> alpha-bêta = 23.077325s
|
||||||
|
Profondeur de 8 (moyenne de 5 tests) -> alpha-bêta = 13.677932s
|
||||||
|
\end{minted}
|
||||||
|
\begin{minted}[autogobble,linenos,fontsize=\footnotesize,firstnumber=last]{text}
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 1 vs 1 = profondeur alphabêta) en tant que blanc
|
||||||
|
Minimax a gagné (profondeur minimax = 2 vs 1 = profondeur alphabêta) en tant que noir
|
||||||
|
Minimax a gagné (profondeur minimax = 3 vs 1 = profondeur alphabêta) en tant que noir
|
||||||
|
Minimax a gagné (profondeur minimax = 4 vs 1 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 1 vs 2 = profondeur alphabêta) en tant que noir
|
||||||
|
Minimax a gagné (profondeur minimax = 2 vs 2 = profondeur alphabêta) en tant que blanc
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 3 vs 2 = profondeur alphabêta) en tant que noir
|
||||||
|
Minimax a gagné (profondeur minimax = 4 vs 2 = profondeur alphabêta) en tant que blanc
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 1 vs 3 = profondeur alphabêta) en tant que blanc
|
||||||
|
Minimax a gagné (profondeur minimax = 2 vs 3 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 3 vs 3 = profondeur alphabêta) en tant que blanc
|
||||||
|
Minimax a gagné (profondeur minimax = 4 vs 3 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 1 vs 4 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 2 vs 4 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 3 vs 4 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 4 vs 4 = profondeur alphabêta) en tant que noir
|
||||||
|
Minimax a gagné (profondeur minimax = 1 vs 5 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 2 vs 5 = profondeur alphabêta) en tant que blanc
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 3 vs 5 = profondeur alphabêta) en tant que blanc
|
||||||
|
Minimax a gagné (profondeur minimax = 4 vs 5 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 1 vs 6 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 2 vs 6 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 3 vs 6 = profondeur alphabêta) en tant que noir
|
||||||
|
Alpha-bêta a gagné (profondeur minimax = 4 vs 6 = profondeur alphabêta) en tant que noir
|
||||||
|
Nombre totale de parties : 24.
|
||||||
|
Alpha-bêta a gagné 15 fois.
|
||||||
|
Minimax a gagné 9 fois.
|
||||||
|
Il y a eu 0 égalités.
|
||||||
|
\end{minted}
|
||||||
|
\begin{minted}[autogobble,linenos,fontsize=\footnotesize,firstnumber=last]{text}
|
||||||
|
________________________________________________________
|
||||||
|
Executed in 234.85 secs fish external
|
||||||
|
usr time 234.83 secs 62.00 micros 234.83 secs
|
||||||
|
sys time 0.02 secs 105.00 micros 0.02 secs
|
||||||
|
\end{minted}
|
||||||
|
\end{minipage}
|
||||||
|
\caption{Résultat des tests, sous commande \texttt{time} (cf. \autoref{sec:comp_eff})}
|
||||||
|
\label{txt:tests_res}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
Reference in a new issue