using the evaluation to guide pruning decisions ?

Discussion of chess software programming and technical issues.

Moderator: Ras

MahmoudUthman
Posts: 237
Joined: Sat Jan 17, 2015 11:54 pm

using the evaluation to guide pruning decisions ?

Post by MahmoudUthman »

Why does stock fish use static evaluation value alongside the one enhanced by the TT score , for example in determining when to perform null move ?
jdart
Posts: 4428
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: using the evaluation to guide pruning decisions ?

Post by jdart »

The answer to practically all such questions is "because it tested better."

--Jon
MahmoudUthman
Posts: 237
Joined: Sat Jan 17, 2015 11:54 pm

Re: using the evaluation to guide pruning decisions ?

Post by MahmoudUthman »

jdart wrote:The answer to practically all such questions is "because it tested better."

--Jon
but could make it better , I mean shouldn't the second form always be more accurate thus testing better than using the staticeval ?
I'm not debating I just want to understand what could cause this
User avatar
Eelco de Groot
Posts: 4702
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: using the evaluation to guide pruning decisions ?

Post by Eelco de Groot »

It is not really known why. But the main reason I think is simple. You have not yet executed any of the moves you are testing here, (you are the side under alpha, ALL node) so it is not so easy to get search information on that move. It is easier for search() not to duplicate te process so here search is conservative and does not exclude too many moves. (also, in an ALL node (losing side you are below alpha)) any capture can increase eval a lot that is why in qsearch you only stop, stand pat, if static eval is above alpha, but if it is below you have to search at least all captures that might still get you back to alpha).

The downside of the system is, if you had search information from all the moves in this ALL node available somehow, for instance from a previously completed search at lower iteration and stored the distribution, you could probably learn something from the (statistical) distribution of evals in this node. Especially at lower depths when these are more static eval + short search related than just upper limits (deeper zero window searches only telling you that the move is below alpha)
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan