Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: What is the Success Rate of Killer/History Moves?

Author: Robert Hyatt

Date: 07:54:26 06/01/00

Go up one level in this thread


On June 01, 2000 at 02:49:29, Roberto Waldteufel wrote:

>On May 31, 2000 at 23:55:25, Robert Hyatt wrote:
>
>>On May 31, 2000 at 16:29:48, Roberto Waldteufel wrote:
>
>>>My currant move order is:-
>>>
>>>1)Null Move
>>>
>>>2)Hash move
>>>
>>>3)My heuristic move (if legal and different from (2))
>>>
>>
>>The next three are 'broken'.  They should all be folded together.  IE
>>ep captures could be the first one chosen.  And you should certainly search
>>e8=Q before trying Bxh6, assuming e8=q doesn't lose material.
>>
>>Also castling moves are just "moves".  these could be suggested by the killer
>>heuristic, by the history heuristic, but I wouldn't try them in a fixed place
>>just because they are castling moves.
>>
>>
>>
>>
>>>4)Captures in MVV/LVA order
>>>
>>>5)Non-capturing pawn promotions
>>>
>>>6)En Passant captures
>>>
>>>7)Castling
>>>
>>>8)Non-capture Moves with all pieces except the king and pawns
>>>
>>>9)Non-capture king moves
>>>
>>>10)Non-capture/Non-Promoting Pawn moves
>>>
>
>[snip]
>
>My motive for putting castling first among non-capture/non-promotion moves was
>that castling, if legal, is usually a good move. I could generate all the
>captures/promotions and sort them before searching, but the program has no way
>of telling which are good and which are bad before it has searched them. I
>believe you use a static swap evaluator to order your captures - I would be
>interested to try a similar idea - but I am not sure how you evaluate the swaps
>without incurring a lot of overhead? My present arrangement never generates a
>move until it is ready to search it. Perhaps this is misguided and some static
>analysis would save time by improving the cut-off rate? If I understand
>correctly DarkThought uses the same MVV/LVA order for the captures without
>generating any moves "in advance" until it gets to the non-captures. How does
>your static swap evaluator work?
>
>Best wishes,
>
>Roberto


What I do is generate two attack bitmaps, one for white, one for black.  These
bitmaps specify which pieces of the right color attack the specific square we
are studying (ie we are trying to estimate the worth of white playing exd5,
where black has a pawn on d5.

It is white's move, so I take the white attack bitmap, and to up to 6 AND
operations, first with all the white pawns (if I get at least one 1-bit here,
I know a white pawn attacks d5 and I will use it first as it is the least
valueable piece).  I then find (using the same approach) the smallest black
attacker, then repeat for white, then black, until one side runs out of
attackers.  I "minimax" the captures to see where they would naturally stop to
avoid losing more material, and take that score as the 'estimate'.

Code is in swap.c in Crafty, and is pretty easy to read.



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.