Author: Brian Richardson
Date: 13:11:18 04/02/00
I have changed Tinker to update material values incrementally (instead of in the eval function each time). This saved at most about 5%. I did this to enable futility pruning (I think this is what it is called). In the q-search, the net material is found from the perspective of the side on move. Then, BEFORE doing the usual: x=eval(); if(x>=beta) return(beta); if(x>alpha)alpha=x; FindCaptureMoves(); ... I quickly check: if ((x - 2*Pawn) >= beta) return(beta); assuming 2 pawns is about largest positional score (LPS). And then if ((x + 5*Pawn) <= alpha) return(alpha); assuming that if winning a rook doesn't help more than alpha, just return. Next, in the loop trying each capture move, before actually making the capture move and calling x = -quiesce(-beta,-alpha), I see what the expected material gain would be (taking into account promotions and enpassant). If that plus 3 pawns is <= alpha then skip actually doing this capture, and try the next one. In this case, I assume the LPS is about 3 pawns. I know, it is not consistent, but when i tried 2 pawns here, the search results would change, and I really don't know what the LPS actually is. Together these two "improvements" yield about 15% faster search times to a given depth (in some cases >50%). So, my question is does this all seem "reasonable". I know implementing a SEE would probably be better, but I'm not up to that yet. I also tried some of these cuts in the normal search routine, but that seemed to hurt things. Thanks again for any feedback. Brian
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.