Since you’re here...

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.
============================== My email: jotes@go2.pl



Tofiks 1.4.0 - new version chess engine



Tofiks - UCI chess engine
Rating CEDR=2256

Tofiks 1.4.0 what;s new?

Long time no see!

It's been a very long time. Two and a half years since the last release of Tofiks. I've not been idle all this time but the progress has been slow. I was enthusiastic after the improvements of 1.1 -> 1.2 -> 1.3. After that I hit a wall. I had so many ideas to try out and was working tirelessly - but it seemed nothing was really working. A lot of hard work went into Tofiks without any tangible improvements. Often seemingly good ideas were counter productive. This never gave me a feeling - "Yes! That's a step forward worth a new release." So work ground to a halt with very minor and sporadic updates.

The biggest breakthrough came with Static Exchange Pruning in quiescence search - it saw a huge drop in bad captures being tried and spent much less time in q-search allowing Tofiks to reach more depth.

Another one was tuning the TT. This was the primary reason for making a debug version collecting TT statistics. Bad replacement strategy prevented stale entries being ejected. Too aggressive replacement and not much of value was stored.

Time management. One of Go's primary domains is Web APIs - handling HTTP requests and the context.Context passing pattern is great. It worked for Tofiks. It's good for setting deadlines and timeouts. Canceling a context early is still very handy but extending one - not really in the domain.

Tofiks 1.4.0. is here.

What's New?

Search

  • Reverse Futility Pruning prune nodes where static eval is far above beta at shallow depths.
  • Futility Pruning skip quiet moves unlikely to raise alpha at shallow depths.
  • Late Move Pruning quadratic depth scaling with improving-aware thresholds.
  • Singular Extensions extend the TT move when no alternative comes close.
  • SEE pruning in quiescence skip losing captures.
  • Counter Move Heuristic improve quiet move ordering based on the previous move.
  • Internal Iterative Reduction reduce depth when no hash move is available.
  • Improved TC Go's context.Context pattern is not a good fit for dynamic time adjustments.

Evaluation

  • Pawn shield safety bonus for pawns sheltering the king.
  • Pawn hash table cache pawn structure evaluation.
  • Passed pawn evaluation progressive rank-based bonuses.

Infrastructure

  • fastchess-cli pentanomial testing.
  • Benchmarks a lot of benchmarks for hot paths to help with optimization work.
  • Texel tuner improved performance and extended to all search params.
  • Debug builds to help with gathering TT and search stats to gauge how certain methods are performing.
  • OpenBench testing and tune framework with cloud workers and GH integration to automate the workflow.

Bug fixes

  • Various small fixes ranging from eval, Zobrist, rare castling rights update bug

Results

Round robin tournament with previous releases with 15s+0.2s time control:

Rank Name                          Elo     +/-   Games    Wins  Losses   Draws   Points   Score    Draw
   1 tofiks-1.4                    572      55     600     558       1      41    578.5   96.4%    6.8%
   2 tofiks-1.3                    -31      24     600     202     256     142    273.0   45.5%   23.7%
   3 tofiks-1.2                    -92      24     600     144     300     156    222.0   37.0%   26.0%
   4 tofiks-1.1                   -229      27     600      52     399     149    126.5   21.1%   24.8%





Comments