author Lucas Braesch Wed, 30 Oct 2013 03:22:42 +0000 (11:22 +0800) committer Marco Costalba Thu, 7 Nov 2013 18:46:51 +0000 (19:46 +0100) commit ecd07e51d0f03ccd3e41e5634518b299989254dd tree 69c15e04c1ab111f4c2a02e2eae0d639f6dbab3c tree | snapshot parent 52ae0efccffcce7f095cc4bae7bf90fe7a3b467b commit | diff
Retire eval margin and gains

1/ eval margin and gains removed:
- gains removed by Value(128): search() and qsearch() now behave consistently!

2/ futility_margin()
- testing showed that there is no added value in this weird (log(depth), movecount)
formula, and a much simpler linear formula is just as good. In fact, it is most
likely better, as it is not yet optimally tuned.
- the new simplified formula also means we get rid of FutilityMargins[], its
initialization code, and more importantly ss->futilityMoveCount, and the hacky
code that updates it throughout the search().
- the current formula gives negative futility margins, and there is a hidden interaction
between the move coutn pruning formula and the futility margin one: what happens is
that MCP is supposed to be triggered before we use the non-sensical negative futility
margins.

3/ unify pre & post futility pruning
- pre futility pruning (what SF calls value based pruning) used depth < 7 plies,
while post futility pruning (what SF calls static null move pruning) used depth < 4 plies.
- also the condition depth < 7 in pre futility pruning was not obvious, and it seemd
to be depth < 16 (futility_margin() returns an infinite value when depth >= 7).

Tested with fixed number of games both at short TC:
ELO: 0.82 +-2.1 (95%) LOS: 77.3%
Total: 40000 W: 7939 L: 7845 D: 24216

And long TC
ELO: 0.59 +-2.0 (95%) LOS: 71.9%
Total: 40000 W: 6876 L: 6808 D: 26316

bench: 10206576
 src/evaluate.cpp diff | blob | history src/evaluate.h diff | blob | history src/movepick.h diff | blob | history src/search.cpp diff | blob | history src/search.h diff | blob | history src/tt.cpp diff | blob | history src/tt.h diff | blob | history