From 1e5f87b5afa2e41e3aa0306fe484cdf9430b775a Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Wed, 20 Dec 2023 22:52:05 +0100 Subject: [PATCH] Add heuritics informations --- README.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b4ddc92..7df21bd 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,8 @@ affichée avec l'option `-d`. ## Choix d'implémentation J'ai avant tout privilégié la personnalisation des différentes paramètres des -différents moteurs composant le jeu. +différents moteurs composant le jeu. Il,e st ainsi plus aisé de tester le +fonctionnement des différents moteurs. ### Classes PlayerEngine @@ -85,15 +86,19 @@ Quatre moteur "joueurs" sont implémentés : maximale définie; * `AphaBeta` utilise *AlphaBeta* pour déterminer le coup à jouer avec une profondeur maximale définie; - * `IterativeDeepeningMinmax` utilise Minmax avec un temps maximum autorisé + * `MinmaxDeepeningMinmax` utilise Minmax avec un temps maximum autorisé; + * `AlphaBetaDeepening` utilise AlphaBeta avec un temps maximum autorisé -Le choix de ces moteur se fait en ligne de commande avec +Le choix de ces moteur se fait en ligne de commande avec les options évoquées +plus haut. ### Classes HeuristicsEngine Plusieurs classes impémentent plusieurs méthodes pour le calcul de -l'heuristique. Comme nous l'avons vu, les moteurs peuvent être choisis en ligne -de commande et de façon indépendante pour les joueurs blanc et noir. +l'heuristique. Toutes les implémentations se trouvent dans le fichier +`./src/classes/Heuristic.py` Comme nous l'avons vu, les moteurs peuvent être +choisis en ligne de commande et de façon indépendante pour les joueurs blanc et +noir. Trois implementation sond disponibles: @@ -112,9 +117,43 @@ ordre d'importance : 1. Les coins représentent les parties les plus importantes; 2. Ensuite vient les bords; - 3. Et enfin les coins. + 3. Et enfin le centre. + +Cependant certaines parties du plateau de jeu sont à éviter : + + * Les cases autour des coins, car elle laisserai la possibilité au joueur + adverse de placer un de ses pions dans le coin. La case en diagonale du coin + est particulièrement sensible. + * Les lignes juste avant les bords, placer un pion à cet endroit permettrai à + l'adversaire de placer un pion sur le bord. Ce ion sera alors p[lus + difficilement *"capturable"* Les poids affectés sont personnalisable via l'options `--weight`, par défaut -nous avons 2, 10 et 25. +nous avons -5, 2, 10 et 25. +Voici le tableau des poinds par défaut, il peut être affiché avec l'option +`--show-weights-table`: + +```text +./game.py --show-weights-table +Starting PyReverso... + + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +-------------------------------------------- + 0 |25 |-5 |10 | 8 | 8 | 8 | 8 |10 |-5 |25 | + 1 |-5 |-7 |-3 |-3 |-3 |-3 |-3 |-3 |-7 |-5 | + 2 |10 |-3 | 0 | 0 | 0 | 0 | 0 | 0 |-3 |10 | + 3 | 8 |-3 | 0 | 2 | 2 | 2 | 2 | 0 |-3 | 8 | + 4 | 8 |-3 | 0 | 2 | 2 | 2 | 2 | 0 |-3 | 8 | + 5 | 8 |-3 | 0 | 2 | 2 | 2 | 2 | 0 |-3 | 8 | + 6 | 8 |-3 | 0 | 2 | 2 | 2 | 2 | 0 |-3 | 8 | + 7 |10 |-3 | 0 | 0 | 0 | 0 | 0 | 0 |-3 |10 | + 8 |-5 |-7 |-3 |-3 |-3 |-3 |-3 |-3 |-7 |-5 | + 9 |25 |-5 |10 | 8 | 8 | 8 | 8 |10 |-5 |25 | +``` + + +### À savoir: + +Les pois utilisé pour les heuristiques sont important. [reversi]:https://www.coolmathgames.com/blog/how-to-play-reversi-basics-and-best-strategies