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.
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'.
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.