Add heuristic documentation
This commit is contained in:
parent
a64e318c82
commit
e506bcdab9
1 changed files with 38 additions and 3 deletions
41
README.md
41
README.md
|
@ -44,16 +44,21 @@ Voici la liste des options :
|
||||||
* `-wh` | `--black-heuristic-engine`: moteur heuristique utilisé pour
|
* `-wh` | `--black-heuristic-engine`: moteur heuristique utilisé pour
|
||||||
l'exploration de l'arbre de jeu du joueur blanc (valable pour les moteur de
|
l'exploration de l'arbre de jeu du joueur blanc (valable pour les moteur de
|
||||||
jeu `minmax` et `alphabeta`)
|
jeu `minmax` et `alphabeta`)
|
||||||
|
* `--weight`: scores utilisés pour le calcul des heuristiques pour les moteurs
|
||||||
|
`weight` et `full`.
|
||||||
|
|
||||||
L'affichage verbeux est activé avec `-V` et les informations de débogage sont
|
L'affichage verbeux est activé avec `-V` et les informations de débogage sont
|
||||||
affichée avec l'option `-d`.
|
affichée avec l'option `-d`.
|
||||||
|
|
||||||
## Choix d'implémentation
|
## Choix d'implémentation
|
||||||
|
|
||||||
|
J'ai avant tout privilégié la personnalisation des différentes paramètres des
|
||||||
|
différents moteurs composant le jeu.
|
||||||
|
|
||||||
### Classes PlayerEngine
|
### Classes PlayerEngine
|
||||||
|
|
||||||
Définies dans le fichier `./src/classes/Engines.py`, les classes utilisées h
|
Définies dans le fichier `./src/classes/Engines.py`, les classes utilisées
|
||||||
eritent de la classe de base `PlayerEngines` :
|
héritent de la classe de base `PlayerEngines` :
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class PlayerEngine(Object):
|
class PlayerEngine(Object):
|
||||||
|
@ -63,8 +68,38 @@ class PlayerEngine(Object):
|
||||||
class MinmaxPlayerEngine(PlayerEngine):
|
class MinmaxPlayerEngine(PlayerEngine):
|
||||||
def get_move(board):
|
def get_move(board):
|
||||||
|
|
||||||
class RandomPlayerEngnine(PlayerEngine):
|
class RandomPlayerEngine(PlayerEngine):
|
||||||
def get_move(board):
|
def get_move(board):
|
||||||
```
|
```
|
||||||
|
|
||||||
Il est ainsi plus aisé de tester les moteur dans notre programme de base.
|
Il est ainsi plus aisé de tester les moteur dans notre programme de base.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
Trois implementation sond disponibles:
|
||||||
|
|
||||||
|
1. `ScoreHeuristicEngine`: l'heuristique se sert du score (comptage des pièces
|
||||||
|
sur le tableau) via la méthode `Board.heuristique`;
|
||||||
|
2. `WeightHeuristicEngine`: ici on se sert de la place des pièces sur le
|
||||||
|
tableau. Chaque emplacement vaut un nombre de points;
|
||||||
|
3. `FullHeuristicEngine`: c'est la somme de `Board.heuristique()` et du calcul
|
||||||
|
des poids.
|
||||||
|
|
||||||
|
#### Retour sur le calcul des poids.
|
||||||
|
|
||||||
|
Afin de définir le poids, je me suis servi de la page *Stratégie et bases de
|
||||||
|
Reversi* sur le site Cool Math Games ([lien][reversi]). Voici les poids par
|
||||||
|
ordre d'importance :
|
||||||
|
|
||||||
|
1. Les coins représentent les parties les plus importantes;
|
||||||
|
2. Ensuite vient les bords;
|
||||||
|
3. Et enfin les coins.
|
||||||
|
|
||||||
|
Les poids affectés sont personnalisable via l'options `--weight`, par défaut
|
||||||
|
nous avons 2, 10 et 25.
|
||||||
|
|
||||||
|
[reversi]:https://www.coolmathgames.com/blog/how-to-play-reversi-basics-and-best-strategies
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue