Zero window TT entry

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

vladstamate
Posts: 161
Joined: Thu Jan 08, 2009 9:06 pm
Location: San Francisco, USA

Re: Zero window TT entry

Post by vladstamate »

Sven Schüle wrote:
vladstamate wrote:

Code: Select all

        if returned_value>beta
            TTStore(beta, LOWER)
            return beta (I have a fail-hard implementation)
Don't forget to fix this into "returned_value >= beta" if you haven't already. It is important for the algorithm.

Sven
Hi,

Yes, I have changed all the returned paths of my root search, main search as well as QS to properly return "the value" rather than cap it to alpha or beta.

An interesting mention is that I noticed 2 things that changed when moving from fail hard to fail soft:

a) My TT cache hits went from 17% to 26% on average.
b) Somehow I score better in the strategic tests (like the STS ones) I generally get about 5% more correct answers.

I cannot actually explain why, other than few hunches.

Regards,
Vlad.
User avatar
hgm
Posts: 27791
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Zero window TT entry

Post by hgm »

Fail soft is of course much better for hashing: by not needlessly deteriorating the bounds that are stored in the TT, there is a much larger chance that they will be usefull in a later probe. And hashing can give you better effective depth through grafting, so the more hash hits, the better the chances that you wil see something 'over the horizon'.
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Zero window TT entry

Post by Sven »

vladstamate wrote:
Sven Schüle wrote:
vladstamate wrote:

Code: Select all

        if returned_value>beta
            TTStore(beta, LOWER)
            return beta (I have a fail-hard implementation)
Don't forget to fix this into "returned_value >= beta" if you haven't already. It is important for the algorithm.
Yes, I have changed all the returned paths of my root search, main search as well as QS to properly return "the value" rather than cap it to alpha or beta.
Actually my point was not about changing from fail-hard to fail-soft but about your ">beta" which is always wrong independent from fail-hard or fail-soft. In fact it would have prevented you from getting *any* beta cutoff at that point with a fail-hard framework, if that ">beta" was really part of your active code. Beta cutoff condition is always ">=beta", not ">beta". Values "==alpha" and "==beta" both mean "outside of the window". This is also why beta==alpha+1 is a zero window, all possible values are either above or below but never inside it.

Sven