Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: late move reductions

Author: Robert Hyatt

Date: 13:56:11 03/01/06

Go up one level in this thread


On March 01, 2006 at 16:43:52, Gerd Isenberg wrote:

>On March 01, 2006 at 15:51:29, Robert Hyatt wrote:
>
>>On March 01, 2006 at 15:42:18, Alessandro Scotti wrote:
>>
>>>Yes I increment "count" every time a move is searched, and "fail_high" for moves
>>>that failed high.
>>>I actually did the implementation very quickly in order to participate to CCC
>>>(here's a quick report assuming you want to practice a little Italian before
>>>Turin! ;-) http://www.ascotti.org/programming/chess/ccc2005.htm) and with Heinz
>>>we could see it gave maybe 15-20 elo (at fast time controls). That version had
>>>validMoves >= 3 and depth >= 3 also. Later I changed both values to 4 and got
>>>another 15-20 elo. After that I decided to start working on another engine so I
>>>didn't experiment anymore with these settings.
>>
>>OK.  I really worded my post badly.  Here is what I wanted to say:
>>
>>I increment the fail high count by 100 each time a move fails high.  I also
>>increment the tried count by 1 at the same time.  Any time another move fails
>>high, and this move was tried but did not, its tried count gets incremented,
>>which lowers the "failed high percentage" significantly...
>>
>>sort of:
>>
>>if failed_high(x)
>>   x.count++
>>   x.fh+=100
>>
>>if failed_high (y) (later)
>>   y.count++
>>   y.fh+=100
>>   if (tried(x)) x.count++
>>
>>Hope that makes what I am doing clearer, whether it is good or bad is not
>>certain yet...
>>
>
>Ok, now i understand - looks reasonable and sounds interesting.
>Also a kind of additional move sorting measuring.
>
>Since you usually fail high early the additionl loop cost looks negligible.
>And since you have some plies left to the horizon, it is not performance
>crictial at all - same for the expensive looking division. Anyway, depending on
>your percentage you may calculate two increments to do a simple compare of fh >
>count.

Actually what is happening most of the time is that the loop doesn't even
happen, since 90+% of the time I fail high on the first move if I fail high at
all.  I just update that moves counter and fh number and move along.  On those
rare occasions where a later move fails high, so far it is almost always pretty
early in the move list, and I have a few things to clean up there as I am (at
present) not excluding captures which I should be (no point in updating for a
capture since I won't reduce same later).




>
>How do you index the history table, from-to or piece-to?

I am still using <to><from> as a 12 bit number...  the "HistoryIndex()" function
looks like this:

#define  HistoryIndex(move, wtm)  (move && 4095) + wtm * 4096

the rightmost 12 bits of my move format are from and to.  the last part
separates the two counts for black and white (I do this for normal history
ordering as well as the history fh/counters for reductions so I actually have 3
8192 element arrays which I don't like but which seems to work best so far...




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.