Author: Robert Hyatt
Date: 06:35:00 06/20/98
Go up one level in this thread
On June 19, 1998 at 23:11:36, Roberto Waldteufel wrote: > >Thanks for your comments. I am the first to accept that terminal node evaluation >is more accurate that preprocessing, but it is also much slower. If I moved all >my preprocessing to the leaves, I think I would indeed lose at least one ply in >depth, maybe even more. Although my method might sometimes not recognise that a >passed pawn at a leaf was in fact passed, it will never mistakenly think a pawn >is passed when in fact it is not. What I do is to look at the pawn structure at >the root, and, for White and Black separately, I calculate all the squares on >which a friendly pawn would be passed (regardless of whether a pawn actually >occupies the square or ever could occupy it). As the search expands deeper, >these sets of squares can grow larger, but can never get smaller, so it is safe >to credit pawns that are on the precalculated squares by the time a leaf node is >reached. >The danger, of couse is that I might fail to see a passed pawn on a square that >is not in my initial list of squares, but I have found this to be rare enough >not to cause a great problem. As always, the trade-off between speed and >accuracy must be carefully weighed up, but I think there is still a good case >for doing some of the evaluation at the root to increase speed and thereby >search deeper. If I later decide, as you suggest, that I want to be more precise >about the passed pawns I currently don't see, I would still use my preprocessor, >so that then at the leaf I would only have to test a few of the pawns for being >passed (ie those not on the precalculated squares) instead of all of them. > >Best wishes > >Roberto two things. 1. This shoule *not* be a compute-intensive task. If you aren't yet hashing your pawn structure scoring, you should, because whether a pawn is passed or not is a static piece of information that is independent of other pieces. If you hash this, you will find that you find over 99% of your pawn structure evaluations are not needed because after you compute them one time, you will not re-compute this again, just use the hashed value. 2. finding that a pawn is passed is trivial. You could easily add a 64 bit word that contains a 1 for each white pawn, and then do the same for black. If you update this after each move, asking "is a pawn on "SQ" passed" takes one 64 bit operation, anding the opponent's pawns with a mask that shows where he must have pawns in order for your pawn on SQ to *not* be passed.
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.