Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: table-based SEE or "evaluation in rebel (hanging pieces)"

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.