Retire eval margin and gains
authorLucas Braesch <lucas.braesch@gmail.com>
Wed, 30 Oct 2013 03:22:42 +0000 (11:22 +0800)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 7 Nov 2013 18:46:51 +0000 (19:46 +0100)
commitecd07e51d0f03ccd3e41e5634518b299989254dd
tree69c15e04c1ab111f4c2a02e2eae0d639f6dbab3c
parent52ae0efccffcce7f095cc4bae7bf90fe7a3b467b
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
src/evaluate.h
src/movepick.h
src/search.cpp
src/search.h
src/tt.cpp
src/tt.h