The round 2 of TCEC season 10 demonstrated the benefit of having a nice contempt implementation: it gives the strongest programs in the tournament the ability to slow down the game when they feel the position is slightly worse, prefering to stay in a complicated (even if slightly risky) middle game rather than simplifying by force into a drawn endgame.
The current contempt implementation of Stockfish is inadequate, and this patch is an attempt to provide a better one.
Passed STC non-regression test against master:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 83360 W: 15089 L: 15075 D: 53196
http://tests.stockfishchess.org/tests/view/5a1bf2de0ebc590ccbb8b370This contempt implementation is showing promising results in certains situations. For instance, it obtained a nice +30 Elo gain when playing with contempt=40 against Stockfish 7, compared to current master:
• master against SF 7 (20000 games at LTC): +121.2 Elo
• this patch with contempt=40 (20000 games at LTC): +154.11 Elo
This was the result of real cooperative work from the Stockfish team, with key ideas coming from Stefan Geschwentner (locutus2) and Chris Cain (ceebo) while most of the community helped with feedback and computer time.
In this commit the bench is unchanged by default, but you can test at home with the new contempt in the UCI options. The style of play will change a lot when using contempt different of zero (I repeat: not done in this version by default, however)!
The Stockfish team is still deliberating over the best default contempt value in self-play and the best contempt modeling strategy, to help users choosing a contempt value when playing against much weaker programs. These informations will be given in future commits when available.
Ich werde die etwas ruhigere Zeit über den Jahreswechsel nutzen, um ein paar experimentelle Testruns mit einigen positiven Contemptwerten durchzuführen, mit meinen üblichen Testbedingungen (siehe meine Website). Wenn mein BrainFish-Testrun durch ist und Thomas Zipproth den neuen Stockfish-Code compiliert hat, werde ich loslegen. Zunächst mal mit dem default-Wert (also Contempt=0), um einen Referenzwert zu bekommen. Dieses Ergebnis wird dann als ganz normaler Stockfish-Testrun natürlich auch in meine gamebase eingebaut. Danach denke ich an drei experimentelle Testläufe (a 5000 Partien) mit C=+15, C=+25 und C=+40. Dann sehen wir, wie sich das neue Contempt-Konzept gegen 2 starke Gegner (Houdini, Komodo) und 3 etwas schwächere Gegner (Fire, Shredder, Fizbo) bewährt. Oder auch nicht...
Bin gespannt!
Stefan (SPCC)