Le but de notre projet était de concevoir un algorithme de recherche performant sur un jeu d' \textit{Othello}. Le jeu est le plus abstrait possible, la partie nous intéressant étant la réalisation d'un algorithme de recherche efficace. Il est ainsi impossible de jouer au jeu, on ne peut que regarder le résultat d'une partie entre deux joueurs artificiels.\\
Une fois le jeu et l'algorithme de recherche implémentés, nous serons en mesure d'analyser ce dernier pour définir ses paramètres de fonctionnement optimaux. Nous aborderons dans un premier temps l'implémentation du jeu, puis celle de l'algorithme et enfin la présentation et l'analyse des mesures observées.
Tous les tests incluant un temps ont été fait sur la même machine et en même temps : Raspberry pi 3 avec un processeur Quad Core 1.2GHz 64bit sous Raspbian OS 32 bits sans Bureau.
Le joueur 1 obtient assez vite (tour 5) un avantage (il possède plus de possibilités) qui augmente au fur et à mesure des tours. À son maximum (tour 20) cet avantage est 47\% plus important par rapport au second joueur.\\
Malgré qu’il soit second à jouer, le joueur 2 obtient un avantage au niveau du tour 5 environ. Cet avantage augmente jusqu’au tour 30, avec un pic à 79\% par rapport au joueur 1. Il se réduit ensuite jusqu’à la fin de la partie.\\
Le nombre de tours est largement inférieur par rapport au précédent graphique. La complexité du joueur 1 est deux fois moins importante que sur le graphique précédent, malgré la profondeur plus importante.\\
Être le premier à jouer semble donner un avantage et le nombre de possibilités du joueur 2 plus important n’est pas suffisant pour le résorber. La profondeur ne semble pas forcément augmenter le nombre de possibilités.
Comme pour la profondeur 1, le joueur 1 a tôt, au tour 5 environ, un avantage qui augmente également au fur et à mesure de la partie. Cet avantage atteint un pic au tour 25 avec 60\% par rapport au second joueur.\\
Le premier joueur possède un petit avantage à partir du tour 10 environ. Mais au tour 18, cet avantage se réduit, pour réaugmenter au tour 23 jusqu'à la fin de partie. Il atteint au maximum 28\% par rapport au joueur 2.\\
Le second joueur surpasse des fois le premier joueur, alors qu'il n'a pas de réel avantage. En effet, alors qu'il avait 60\% de possibilité en moins par rapport au premier joueur, le second l'a emporté avec l'algorithme Alphabeta de profondeur 3. Cas similaire avec Alphabeta de profondeur 1.
De plus, le second joueur possède un avantage de 79\% au maximum par rapport au premier joueur avec l'algorithme Alphabeta de profondeur 2. Et malgré cet avantage, c'est le joueur 1 qui remporte la partie.
L’augmentation de la profondeur de l’algorithme AlphaBeta n’augmente pas forcément la complexité de ce dernier. Cependant, l’augmentation de la complexité en fonction du nombre de tours est relativement linéaire.\\
Le temps de résolution des algorithmes pour des petites profondeurs (1, 2, 3) est de quelques secondes, mais augmente drastiquement avec la profondeur, AlphaBeta de profondeur 5 s’exécute durant plusieurs minutes.
Aucun joueur n’a davantage majeur au cours de la partie. Le second joueur a un avantage qui commence au tour 19 jusqu'à la fin de la partie. Cet avantage atteint au maximum 37\% par rapport au joueur 1. \\
La complexité de cet algorithme est 55 fois supérieure au précédent.\\
Le joueur 1 commence à avoir un avantage au tour 10, avantage qui augmente jusqu’à la fin de la partie. Cependant, cet avantage n’est pas suffisant et c’est le second joueur qui gagne.\\
La complexité est environ 10 fois supérieur à Negamax de profondeur 3. Le premier joueur possède un avantage au tour 10 qui augmente jusqu’au tour 22 et se réduit ensuite jusqu’à la fin de la partie.\\
Nous avons décidé de le lancer, mais après 28 heures d’exécution sur le Raspberry Pi celui-ci n’étais pas terminé, de plus la complexité stockée comme attribut de la classe Player est stocké sur un entier signé 32 bits dont la limite positive est $2^{31}-1$ soit inférieur à 8 milliards.
Identiquement au graphique précédent, le premier joueur utilisant l'algorithme Negamax prend un avantage dès le premier tour. Son avantage augmente rapidement et se poursuit jusqu'à la fin de la partie pour enfin la remporter.
\subsubsection{Conclusion de AlphaBeta vs Negamax}
Le flux s'ouvre au lancement du programme et se ferme à sa fermeture ce qui fait que les fichiers de log resteront vides pendant le fonctionnement du programme, ce qui rend impossible la lecture de la complexité durant le fonctionnement du programme notamment pour le negamax de profondeur 5 ou plus qui demande beaucoup de performances et de temps de calcul.