vendredi 10 décembre 2010

L'évaluateur

L'évaluateur est un peu comme la personnalité de votre moteur. C'est cette partie qui déterminera comment va réellement jouer votre moteur. Je parle du style pas nécessairement de sa force. Biensûr, si vous n'avez presque pas de connaissance du jeu d'échecs, il vous sera difficile de faire un moteur potable. Pour l'écrire, il faut un minimum de connaissance du jeu.


L'évaluateur à la base se divise en deux parties.

  1. L'évaluation matérielle;
  2. L'évaluation positionnelle.


L'évaluation matérielle

L'évaluation du matériel peut sembler facile à première vue. Ne suffit-il pas de donner une valeur pour chaque type de pièce des deux cotés et en faire le total? Et bien, cela ne prendrait pas en compte la variabilité de la valeur des pièces. La tour, le cavalier ou même le pion que vous avez de plus devient beaucoup plus important lorsque la majorité des autres pièces ont disparues. L'évaluateur doit donc prendre en compte ce fait et doit donc amener le moteur à échanger des pièces s'il a du matériel en plus.
Pour comprendre, supposons que l'évaluateur doit donner une valeur aux deux situations décrites plus bas en prenant les valeurs des pièces suivantes
int pion = 100, fou = 300, tour = 500;

et la formule qui suit:

scoremat = (nbpionblanc * 100 + nbfoublanc * 300 + nbtourblanche * 500)
- (nbpionnoir * 100 + nbfounoir * 300 + nbtournoire* 500);
Voici les deux situations:
2 pions, 1 fou et 1 tour contre 2 pions, 1 tour
2 pions, 1 fou contre 2 pions.
L'évaluateur retournera un score matériel identique pour les deux positions et pourtant la deuxième position est légèrement plus désirable que l'autre.
Il faut donc une formule qui prend en compte cet avantage.
Un façon facile serait de calculer un pourcentage des valeurs des pièces selon le nombre de pièces total sur le jeu. Ce n'est un exemple, mais je vous laisse trouver par vous même car le but c'est d'avoir un jeu à soi.


L'évaluation positionnelle

Comme vous le savez, une partie d'échec possède trois phases importantes. L'ouverture, le milieu de partie et la finale.

Lors de l'ouverture, le joueur doit déployer ses forces le plus rapidement possible afin de pouvoir attaquer en milieu de partie. Il doit aussi mettre son roi à l'abri au moment opportun pour éviter les attaques.

Dans le milieu de partie, le joueur doit trouver un moyen de prendre un avantage, si possible matériel comme un pion ou deux, sinon positionnelle, un pion passé protégé, détruire la défense du roi adverse. Le but est bien entendu d'amener le jeu dans une finale gagnante.

En finale, tout dépend de l'avantage ou le désavantage que le joueur possède. Si le joueur possède un avantage décisif, ça lui sera facile de forcer la victoire. La plupart des joueurs d'expériences abandonne avant même d'entrer en finale lorsqu'ils ont un trop grand désavantage surtout contre un moteur ou contre un grand maître.

Par contre, si l'avantage n'est que théorique, il faut une connaissance approfondie des finales pour forcer la victoire. Les erreurs sont souvent fatales dans cette phase. Selon moi, pour un moteur, cette phase est une des plus importantes. J'ai vu mon moteur Monik gagner des parties qui étaient théoriquement perdues tout ça parce que le moteur adverse ne possédait pas de connaissance des finales ou très peu. Tant que l'adversaire possède des pions, il lui est toujours possible de promouvoir l'un d'eux en une dame.

Valeur positionnelles des pièces

Pour donner une valeur à la position des pièces, le plus simple est d'utiliser un tableau de valeur pour chaque case de l'échiquier. Vous pouvez utiliser un tableau pour chacune des phases.

Par exemple, pour le roi, nous voulons qu'en début et milieu de partie qu'il reste dans son coin cacher derrière ses pions. Il suffit alors de donner une valeur supérieur aux cases B1 et B7 pour le roi blanc et des valeurs très négative pour le reste et surtout au centre. Voici le tableau pour l'évaluation du roi de mon moteur comme exemple.

// Ouverture et milieu de partie.
const SCORE PosRoi[] =
{
-40, -40, -40, -40, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40,
-20, -20, -20, -20, -20, -20, -20, -20,
0,  30,  20, -20,   0, -20,  30,  30
};

Pour les pions, c'est un peu plus complexe. La structure des pions est souvent beaucoup plus importante que la position d'un seul pion,

à suivre

0 commentaires:

Enregistrer un commentaire