PVS + ZWS

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

flok

Re: PVS + ZWS

Post by flok »

Joost Buijs wrote:I use the main TT everywhere, PV, ZW and in quiescence.
Are these seperate tts? If not: do they all write? Any priorities when chosing which to keep?

And for zw: pv/qs have an alpha + beta and a bestscore. From these a score and flags are stored. In zw we only have beta so what to do with these flags? I think for the cut-off case it is probably the lowerbound and I think the non-cut-off-case (beta - 1) is then the exact case? Am I right?


regards

(thanks all!)
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: PVS + ZWS

Post by Sven »

flok wrote:And for zw: pv/qs have an alpha + beta and a bestscore. From these a score and flags are stored. In zw we only have beta so what to do with these flags? I think for the cut-off case it is probably the lowerbound and I think the non-cut-off-case (beta - 1) is then the exact case? Am I right?
ZW search determines whether you fail high or low. There is nothing inbetween, so there is no "exact" score. Beta cutoff = lower bound, fail low = upper bound.
Joost Buijs
Posts: 1563
Joined: Thu Jul 16, 2009 10:47 am
Location: Almere, The Netherlands

Re: PVS + ZWS

Post by Joost Buijs »

flok wrote:
Joost Buijs wrote:I use the main TT everywhere, PV, ZW and in quiescence.
Are these seperate tts? If not: do they all write? Any priorities when chosing which to keep?

And for zw: pv/qs have an alpha + beta and a bestscore. From these a score and flags are stored. In zw we only have beta so what to do with these flags? I think for the cut-off case it is probably the lowerbound and I think the non-cut-off-case (beta - 1) is then the exact case? Am I right?
In my engine I have exactly one TT with the following fields:

key 64 bit
score 16 bit signed
move 24 bit
depth 8 bit signed // depth can get negative in quiescence
age 10 bit
flags 6 bit

At the moment I store only the bounds in the flag field, but there is plenty room for additional things.

Like already has been said, you only have 2 bounds in the zw-search(), lower-bounds (score > alpha) and upper-bounds (score <= alpha) , no exact values.

I try to preserve entries with the highest depth, and exact bounds have some priority over lower and upper-bounds.

Edit: I forgot I also store the age, so the flag field is only 6 bits.

I the age is getting to old, the entry will always be overwritten.