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.