Computer Chess Club Archives


Search

Terms

Messages

Subject: Chess Wizard, some history and techniques

Author: Frederic Louguet

Date: 00:30:47 10/08/02

Go up one level in this thread


The first time Chess Wizard played a real game of chess was in 1994. I worked a
lot in 1994/1995/1996, and in 1996 it won the french championship with Chess
Guru. I read a lot of publications, studied some source code (Turbo Chess in
Turbo Pascal, GNU, later Crafty), tried a thousand ideas that did not work,
found a few that really worked...

I tried the bitboard approach very early (1995) because of the possibilities
regarding evaluation. I always wanted Wizard to have a good evaluation, and a
lot of complex things were easier to implement with bitboards. I learned some
bitboard tricks from Crafty (in the 9.x to 10. versions I think) that I had not
thought about before. But Chess Wizard is not entirely bitboard-based, it's more
a hybrid approach.

I have two problems : my opening book is not very good, and I don't seem to find
a way to make forward pruning really work. I tried 6723 ideas, a few times I
thought I had found the solution, but everytime it was a false impression. Maybe
I am forward-pruning challenged. I use null move (R=4 very far, then R=3, then
R=2), I recently removed all checks from the quiescence search. The strength of
Chess Wizard is based on two things : good evaluation, and search extensions. I
use many threat extensions with small increments (2/16 of a ply), strange out of
checks extensions, and so on. I tried singular extensions too, but with bad
results.

When Wizard detects some patterns in the position, it simply tones down, and
sometimes even shuts down completely, entire parts of the evaluation fonction to
concentrate on the parameters that really counts (so other parameters don't get
in the way).

But I really would like to find super-efficient forward pruning techniques, like
those used in the top commercial programs. For the moment, I compensate with
extensions. Maybe it is not possible to do both. Maybe it is the same thing,
from a certain point of view.

But I have learned a few important things :

1) You must never dismiss some thing that doesn't work now. Maybe in a year from
now, It will work.
2) You must never assume that something that works in someone else program wil
work in your program.
3) Like Christophe Theron rightly says, you must believe in statistics. Your
testing methodology must be extremely well thought out.
4) If you hear someone say "this algorithm sucks", or "it doesn't work", don't
forget to add "for me" to the sentence. You must try it for yourself.
5) Sometimes, you should completely leave the world of chess programming (even
for one or two weeks). Some ideas have a way of being found only when you don't
think about them !



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.