Tofiks 1.6.0 - new version chess engine
Tofiks - UCI chess engine
Author: Arturs Priede Rating CEDR=2256
Tofiks 1.5.0 – this is the version we entered in the qualifying rounds for the Chess Engine League. Does this engine have a chance of making it to the TOP-64? – check back soon and you'll see the results.
Tofiks - what's new?
Fixes. Fixes everywhere.
Tofiks 1.6.0 proudly ships with almost no new features. The only one that can be considered a new feature is improved history move malus. Every other change to was a fix or slight improvement or looked like a promising feature only to be later erased by the tuner.
What's New?
Search
History malus Quiet moves searched before a quiet cutoff are now penalised, so history is a signed signal instead of a counter that only grows.
PV move ordering only at PV nodes
Quiescence in check No stand pat when in check, and a position with no legal evasion returns the mate score instead of the static eval.
Aborted search no longer poisons the TT Scores from a search cut off by the clock are discarded instead of stored.
Repetition draws get a ±1 dither The search stops laundering draw scores through the table. Fixes threefold repetitions in winning positions.
TT ageing decoupled from depth
Evaluation
Simpler king evaluation The separate king distance-to-centre terms were folded into the king piece-square tables. They were the same function of the king square with the same taper.
Game phase clamped The phase used for tapering is clamped to its nominal range. Positions with promoted pieces or no minors and majors no longer get weights outside [0, 1].
Time management and UCI
Zero clock handling go wtime 0 btime 0, which GUIs and fastchess send once a clock has run out, used to be treated as no time limit and the engine would search until it found a mate. It now answers immediately.
movestogo honoured Cyclic time controls now allocate from the GUI's move count instead of the internal estimate.
Low-time allocation Edge cases where a few milliseconds left on the clock turned into an infinite search are fixed and covered by tests.
Context-free time control The deadline is a timer and an atomic flag instead of a context, keeping the per-node abort check to a single load. Also allowing some unsuccessful experiments with extending time.
Results
Round robin tournament with previous releases with 15s+0.2s time control:
Rank Name Elo +/- Games Wins Losses Draws Points Score
1 tofiks-1.6 341 34 600 480 28 92 526.0 87.7%
2 tofiks-1.5 89 25 600 301 151 148 375.0 62.5%
3 tofiks-1.4.1 -27 25 600 227 274 99 276.5 46.1%
4 tofiks-1.3 -564 57 600 4 559 37 22.5 3.8%
What's next?
Still not abandoning the development of Tofiks to move onto some new project like a Zig or rust based engine. Previous releases have been very frustrating with finding anything that works - lot's of experimentation that ultimately all failed to produce anything of value. While there is still some of that in v1.6.0, I think this release was mostly inching forward one fix at a time. I always like to be optimistic (delusional?), that a big breakthrough is ahead. With the amount of fixes - I will try to delude myself that everything that has failed before was due to bad foundations and errors, and with many of those fixed; It is time to try them again!

Comments
Post a Comment