Author: Uri Blass
Date: 05:21:51 01/02/03
This trick is from Rebel programming stuff: MARGIN = 3.00 // 3 pawns safe-guard value MARGIN + highest hanging piece value // Queen=900, Rook=500 etc. MARGIN + 9.00 when own_king_was_in_check_before_make_move MARGIN + 6.00 when the opponent can promote the next ply if (SCORE-MARGIN > BETA) -> return TRUE else return FALSE 1)Why score-margin>beta? I think that score+margin<alpha is more logical. If the score of the side to move is already bigger than beta I return beta except special cases(like a case when the king is in check) 2)What is the maximal value that margin can get? Am I right to assume that it can get maximal value of 3+9+9+6=27 if the side to move gave check in the previous move and the side to move can promote and the side to move can capture a queen? 3)Am I right to assume that the only risk here are cases when there is mate or cases when the evaluation is changed by more than 3 pawns? I think that the main risk is cases of mate when there is no check before it. I tested static margin of 12 pawns in the gcp test suite and found some positions that there were positions that were solved one ply later(using your full formula is possible but in that case I need to do some bigger changes in my source code). The first position is the following position [D]1k1r2r1/pp3p1p/B2q1n2/8/3Pb1p1/2Q5/PR3PPP/2B1R1K1 w - - 0 1 Movei(with margin=12) found that Bxb7 is winning at depth 8 so it missed Bf4 that is even better and needed to wait to depth 9. Uri
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.