Add heuritics informations

This commit is contained in:
Yorick Barbanneau 2023-12-20 22:52:05 +01:00
parent ebadd02df7
commit 1e5f87b5af

View file

@ -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