Author: Tord Romstad
Date: 03:25:50 11/28/03
Go up one level in this thread
On November 27, 2003 at 17:48:29, Ed Schröder wrote: >On November 27, 2003 at 15:34:24, Tord Romstad wrote: > >>I've always wondered how you manage with only one bit for knights and bishop >>in your eval, for instance when using the attack table for static mate >>detection. How is this done? > >Static mate detection, why should one do this when you have q-search? > >I have done so at the very beginning, on the Z80 I had a working static >checkmate algorithm which was called everytime a move gave a check, those were >the days I never heard of q-search and I evaluated hanging pieces on a static >base. I'm confused. The following section from your Rebel pages seem to indicate that you do have some static mate threat detection in your eval: There is another move ordering trick worth to mention. REBEL has special code to recognize mate-threats in its evaluation part (EVAL), have a look at the diagram. It's obvious with white to move white can give a checkmate with Qg7# on the next ply. When REBEL recognizes such a pattern in EVAL it doesn't even bother to search further, EVAL just returns the mate value avoiding to go deeper into the tree, it gives a nice speed-up depending on the number patterns the program knows. I think static mate threat detection is very useful even when you have a qsearch. It is simply too dangerous (in my experience) to do static forward pruning without knowing whether there is a mate threat in the position. >>My attack tables are similar to yours, but >>the way my eval currently works I need 9 bits instead of 8 because of the >>important distinction between knights and bishops. > >My system was developed on the Z80 from the early 80's, 9-bits was a non option >at that time :) > >I agree that with an 8-bit system to extract the information is more complicated >than with a 9-bit system nevertheless it is doable. I am pretty sure the error >margin in practice is somewhere between 0.1% and 0.01% which is more than >satisfying. For hanging piece detection and similar stuff, I'm sure you are right. Separate bits for bishops and knights are mostly useful elsewhere in the evaluation. >>Another question: How did you do hanging piece detection and similar >>stuff at the time when the memory for lookup tables was limited (like >>on the ChessMachine version of Rebel and on versions for various Mephisto >>standalone units)? > >I used code, later I precalculated the results. Actually the speed gain was >disappointing, less than 1%, probably due to the extra use of the PC's data >cache. Have you tried using more compact tables, like various people suggested in a discussion here recently? Some of the 256 possible 8-bit patterns can never occur, and even among those which can occur in theory there are many which are very rare in practice. I have recently experimented with a small lookup table containing only the values for the most frequent bit patterns, and use code to calculate the results when I encounter one of the less frequent patterns. It didn't give a speedup for me, but perhaps I haven't yet found the best way to compress the tables. Tord
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.