The whole idea of LE is a gamble, the 2.00 margin works quite well in quiet to not so quiet positions but when the board is on fire and large evaluation bonuses apply (king safety, passed pawns) that exceed the 2.00 margin largely then LE becomes unreliable.
Here is an idea to create a flexible LE margin that -- most of the time -- will be much lower than the 2.00 and higher when the board position actually demands it. And search can do (calculate) that in an elegant way.
3 positions, one quiet, one not so quiet, one explosive and the calculated LE margin is displayed after each 10,000 positions.
8 | |||||||||
7 | |||||||||
6 | |||||||||
5 | |||||||||
4 | |||||||||
3 | |||||||||
2 | |||||||||
1 | |||||||||
a | b | c | d | e | f | g | h |
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -
average=30 | lazy_eval=80 (10.000)
average=29 | lazy_eval=79 (20.000)
average=28 | lazy_eval=78 (30.000)
average=28 | lazy_eval=78 (40.000)
...
average=30 | lazy_eval=80 (5.800.000)
average=30 | lazy_eval=80 (5.810.000)
average=30 | lazy_eval=80 (5.820.000)
average=30 | lazy_eval=80 (5.830.000)
Lazy Eval Margin 0.80 instead of 2.00
8 | |||||||||
7 | |||||||||
6 | |||||||||
5 | |||||||||
4 | |||||||||
3 | |||||||||
2 | |||||||||
1 | |||||||||
a | b | c | d | e | f | g | h |
rnb1kb1r/1p3ppp/p5q1/4p3/3N4/4BB2/PPPQ1P1P/R3K2R w KQkq -
average=57 | lazy_eval=107 (10.000)
average=63 | lazy_eval=113 (20.000)
average=75 | lazy_eval=125 (30.000)
average=73 | lazy_eval=123 (40.000)
.....
average=83 | lazy_eval=133 (5.400.000)
average=83 | lazy_eval=133 (5.410.000)
average=84 | lazy_eval=134 (5.420.000)
average=84 | lazy_eval=134 (5.430.000)
Lazy Eval Margin 1.34 instead of 2.00
8 | |||||||||
7 | |||||||||
6 | |||||||||
5 | |||||||||
4 | |||||||||
3 | |||||||||
2 | |||||||||
1 | |||||||||
a | b | c | d | e | f | g | h |
7r/1k2P2P/4p3/1pp5/8/2pp4/1n3PP1/R4K1R w - -
average=219 | lazy_eval=269 (10.000)
average=223 | lazy_eval=273 (20.000)
average=234 | lazy_eval=284 (30.000)
average=240 | lazy_eval=290 (40.000)
.........
average=263 | lazy_eval=313 (7.410.000)
average=264 | lazy_eval=314 (7.420.000)
average=264 | lazy_eval=314 (7.430.000)
average=264 | lazy_eval=314 (7.440.000)
Lazy Eval Margin 3.14 instead of 2.00.
Perhaps the good move (g4) is now found earlier because of the higher LE margin.
Code in the next post, need a coffee first.