Thursday, June 02, 2011

Je joue (avec une interface graphique)

J'ai fait une interface xboard. C'est à dire que j'utilise xboard pour jouer contre mon moteur.

Le problème en codant un jeu c'est qu'on a envie d'y jouer ! Et en ce moment je passe plus de temps à jouer qu'à coder. Ce qui me motive à retourner coder c'est qu'il est encore suuupeeer lent, et quand j'en ai marre d'attendre, j'arrêtte de jouer et je me décide à améliorer les perfs :)

J'ai amélioré quelques fonctions très utilisées et consommatrices de temps. Je faisais Pert(3) en 20 secondes, ça se fait en 10s maintenant. Et j'en suis qu'au début des améliorations.

Petit rappel: la fonction Perft retourne le nombre d’enchaînement de déplacements possibles pour un niveau donné. Quand les blancs jouent il y a Pertf(1) = 20 déplacements possibles, puis les noirs répondent: Perft(2) = 400 (20x20 déplacements). Les blancs répondent et Perft(3) = 8902 (20x20x22). Pour générer ces 8902 déplacements j'ai besoin de 10 secondes. Pour 100 000 déplacements, Crafty met 1 seconde ..... Et encore, je simplifie les choses. Pour générer les premiers déplacements, c'est beaucoup plus rapide que pour générer les déplacements en milieu de partie. Bref....

Ensuite j'ai amélioré la fonction d'évaluation avec une "recherche tranquille" (quiescence search). C'est à dire que la recherche ne s’arrête pas s'il existe des captures possibles. Enfin... normalement elle ne devrait pas évaluer toutes les captures pour des raisons de temps de recherche.

Et ben... ça a vachement amélioré son jeu. Je ne fais plus le malin maintenant !
Je ne suis pas encore allé jusqu'à une fin de partie parce que c'est trop long... mais je vois bien que ça va être dur de le battre !

Ma "current TODO list":
- Iterative deepening and move ordering to be able to limit search time
- Finish Quiescence search (do not evaluate all the moves)
- Improve performance of legal move gen (moves generation really using bitboards, and maybe premove tables)

2 comments:

Mickael said...

Bon ben je l'ai battu ce soir. Il fait des coups bizzares mais je sais d'où ça vient. La quiescence search justement.... J'y remédierai ce week-end (ou pas, parce que c'est un week-end chargé!)

Mickael said...

Youhou, un bug corrigé !