L'une des premières choses que j'ai remarquées, c'est la difficulté d'évaluer rigoureusement les performances de l'algorithme. En particulier, pour déterminer si les modifications apportées entraînent une réelle amélioration. C'est juste difficile d'évaluer l'effet d'un changement donné avec seulement une poignée de parties.
Pour pallier ce problème, j'ai pris du temps pour écrire une batterie de tests empiriques. Le fonctionnement de ces tests étaient relativement simple et consistait à faire s’affronter différentes versions de l’algorithme. Ainsi, quand j'ajoutais une fonctionnalité à l'algorithme, je le testais contre la version inchangée de l'algorithme par le biais d'environ 350 parties.
Avec du recul, je pense que la décision d'accorder du temps pour effectuer des tests automatique est la décision qui a eu le plus grand impact positif dans le tournoi. Ces tests m'ont permis de quantifier chaque changement et de réaliser quand une optimisation heurtait davantage l'algorithme qu'elle ne l'aidait.
Un arbre de jeu qui représente le fonctionnement de l'algorithme
MiniMax.