There are a lot of different LMR ideas and implementations out there. Naturally no single LMR implementation is going to be the optimal choice for every engine. But I would like to find a solid base of dos and don'ts if possible.
So today I started doing some number crunching to try and gain some new insight into which moves to reduce and when. Here's how I've started the data collection process:
Code: Select all
for (move = 2nd move to last move) {
if (not in check and depth > 1 and move is not cap or promo)
increment column A
if null window search with reduced depth > alpha
increment column B
if null window search with full depth > alpha
increment column C
endif
... cary on with normal search handling ...
}
Code: Select all
Material(0), 4031, 100%
Material(1), 4031, 100%
A=Candidates
B=Reduced Depth Search > alpha
C=Full Depth Search > alpha
Data Point, A, B, C
Candidates, 161178, 471, 550
SSE < 0, 47679, 15, 12
SSE <= 0, 107496, 45, 27
SSE > 0, 53682, 426, 523
SSE >= 8, 42812, 406, 491
SSE >= 16, 10893, 292, 411
IsKiller, 6025, 161, 257
Hist < 0, 156234, 245, 286
Hist <= 0, 156374, 246, 288
Hist > 0, 4804, 225, 262
Hist >= 8, 4544, 219, 258
Hist >= 16, 4272, 210, 248
Gives Check, 1234, 11, 10
Pawn Push, 40215, 85, 104
Pawn Lung, 33855, 81, 91
Knight Move, 29621, 194, 270
Bishop Move, 22971, 46, 27
Rook Move, 4560, 0, 0
Queen Move, 22829, 65, 56
King Move, 7127, 0, 2
0-0, 120, 0, 2
0-0-0, 0, 0, 0
MvNum 2, 2711, 70, 127
MvNum 3, 5007, 145, 196
MvNum 4, 5448, 74, 87
MvNum 5, 5622, 43, 39
MvNum 6, 5792, 23, 10
MvNum 7, 5832, 13, 14
MvNum 8, 5828, 21, 7
MvNum 9+, 124938, 82, 70
I haven't determined all the data points worth tracking yet. And I haven't yet determined how best to crunch the information.
This sort of thing takes a lot of time to churn through, and I'm just getting started. That's why I'm putting it out there now. Maybe someone has already done something like this and is willing to share their findings? Or perhaps somebody has ideas on what to look for and how to streamline the process? And maybe others would be able to take this method or some variation of it and use it to great effect in their own development process. etc...
STC