lichess.org
Donate
Magnificent chess-playing dog

Tofiks v1.1.0

ChessChess engineChess botSoftware Development
It's been a while since v1.0.0 but we got there and we will keep going. After all a good dog requires a walk!

Here we go again...

Again it's been not quite a year but a lot of time has passed since v1.1.0 in November 2022. There have been a lot of bug fixes, refinements and performance tweaks. Most notably the addition of an Aspiration Window during the Iterative Deepening Search which allows for a narrower search window and increases overall performance. Improved MVV-LVA and added History and KillerMove heuristics allow for better move ordering and that enables Late Move Pruning - when at depth the search will only look at the most promising moves ignoring moves late in the order.

Tofiks has moved to a new home

I have been messing about with Goodle Cloud solutions and before I could only run the bot client on my private laptop or a server with very poor networking and stability issues. So I put Tofiks on a rather modest GCloud C2D VM with the following specs - AMD EPYC Milan 2 vCPU 4GB RAM. Pretty much bottom of the shelf solution - but it does the trick. I tried different configurations more powerful Intel machines but AMD seemed better at a lower price point. When I will implement LazySMP that might change as more vCPUs and cores might be beneficial to squeeze more out of the multi-threaded algorithm.

I also failed. To eventually succeed...

There were also some failed experiments. Like LazySMP or implementing some Texel tuning for Piece-Square-Tables. While failed and shelved, lessons were learned and I hope to revisit both of them soon. There also seems to still be some bugs with the PV line sometimes containing errors. I was not able to track it down but my guess is it has to do with some Transposition Table shenanigans. Before moving onto LazySMP that needs to be fully resolved as it relies heavily of an efficient use of Transposition Tables. Texel - I want to overhaul the evaluation part before I go into investing time into optimizing its values.
I also want to add more search heuristics like Late Move Reductions - looking at moves later in the move order at reduced depth. Some search extensions for most promising moves could also be investigated.

On actual performance increase

So that's all talk. How does it actually compare to v1.0.0 in its chess playing ability?
I ran a 200 game match between the two versions with a time control of 10s+0.5s and positions from the Arasan.pgn book with 10ply depth.

Score of tofiks-v1.1 vs tofiks-v1.0: 139 - 32 - 29 [0.767]
...      tofiks-v1.1 playing White: 66 - 14 - 20  [0.760] 100
...      tofiks-v1.1 playing Black: 73 - 18 - 9  [0.775] 100
...      White vs Black: 84 - 87 - 29  [0.492] 200
Elo difference: 207.5 +/- 51.5, LOS: 100.0 %, DrawRatio: 14.5 %
200 of 200 games finished.

So that's about +200 Elo difference and a clear improvement.

Try it

You can download the engine and/or compile it from source yourself from Tofik's GitHub. This is a UCI engine and requires a Graphical User Interface to play. And of course you can still play the bot right here on Lichess - @likeawizard-bot