Skip to main content

Since you’re here...

... we have a small favour to ask. More people, like you, are reading and supporting our blog: "Chess Engines Diary". And unlike many other sites and blogs, we made the choice to keep our articles open for all, regardless of where they live or what they can afford to pay.

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



Chess engine: Tofiks 1.1.0


Tofiks - UCI chess engine

v.1.1.0:
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.

There were also some failed experiments. Like LazySMP or implementing some Texel tuning for Piece-Square-Tables. While failed and shelved, lessons were learnt 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.

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.

Installation
Latest stable version 64-bit binaries can be found in the release section.

Compile yourself
Clone repository or copy files
Make sure you have Golang 1.19+ installed
make build will compile it your native architecture.
In the Makefile you can change the GOAMD64VERSION variable. The values range from v1 to v4 and include various sets of extended instruction sets. A higher v-value should be expected to have better performance but might have more specific architecture and instruction set extension requirements. Most modern CPUs should be AVX2 compatible which is v3, v4 requires AVX512 support.
Feature Overview
Magic Bitboard move generator
MVV-LVA move ordering
Principal Variation Search with Aspiration Window
Null Move pruning
Late Move pruning
Transposition table
History Heuristic
Killer Move Heuristic
Quiescence search
Draw detection - repetition, 50-move rule and insufficient material
Piece-Square-Table evaluation for early game and endgame.
Pawn structure evaluation
King safety-activity evaluation
Piece specific evaluation
PolyGlot opening book support
Supported UCI commands and options:
uci - 'handshake' initialization by the GUI, engine responds with its id and supported options with their defaults and ranges
go - with the following options: wtime, btime, winc, binc, movestogo, depth, movestime, ponder and infinite
setoption name <option> value <value>
Ponder default false
OwnBook default false - if there is a PolyGlot book.bin in the same directory as the executable the engine will try to load it and allow the option to be toggled.
Hash - Transposition Table size in MB
Move Overhead - lag compensation variable. Works as a negative increment to reduce the alloted thinking time. Crucial for playing over the web where the go time variables might be already outdated when receiving the command and also adjust for the time the for the GUI to receive the bestmove.
Non-UCI commands:
go perft <depth> - perft display number of leaf nodes at depth grouped by legal moves in the position also displays the nodes per second value for performance benchmarking.
Acknoledgments
Lichess and the Community for nuturing my love for chess and offering a free open source platform for chess. Tofiks can be found playing on lichess under its bot account.
The authors of Official lichess bot client. It saved a lot of time and headaches adopting a reliable solution to interact with the Lichess API instead of coding all myself.
The authors of Blunder engine. It is a great reference to practical examples of engine principles and algorithms with its well documented code.
Everyone on TalkChess.com Forums who have been helpful and patient explainging even very basic concepts to me.
Chess Programming Wiki and its maintainers for creating a very comprehensive resource for everything chess programming related.
What's Changed
feat: reduce movegen branching by @likeawizard in #25
feat: remove metadata from move type by @likeawizard in #27
feat: lockless TT by @likeawizard in #29
merge with master by @likeawizard in #30
23 lazy smp by @likeawizard in #31
feat: ttable search fixes by @likeawizard in #33
feat: aspiration window by @likeawizard in #34
feat: pv moves from line by @likeawizard in #35
feat: refactor and safer overhead by @likeawizard in #36
feat: late move pruning, fixed move ordering by @likeawizard in #37
History heuristic by @likeawizard in #38
feat: moveSelector for ordering moves by @likeawizard in #39
release: updated README.md and version by @likeawizard in #40
Full Changelog: v1.0.0...v1.1.0





Comments

Popular posts from this blog

New Strong Engines Test, by Chess Engines Diary, 2024.04.12

  💾  552 (!) games from the tournament download   👍 @chessenginesdiary  Country - Poland, City -  Malbork 🕓 Time 3'+3" 💻HP Pavilion i5-1035G1 8GB RAM 🖬 GUI-Banksia All  CEDR  317.321 games download  (01.04.2024 - 3'+3")  HypnoS 030424, Yuli GM Pro 16, Stockfish 16.1 and ShashChess 35 . These four engines scored the same number of points and placed at the top of the table in this strong tournament. Tech table: Engine KN/move NPS dep/mov time/mov mov/game time/game fails Alexandria 6.1.0 3218 576429 30.2 5.6 56.7 316.2 Berserk 13 4779 841025 36.7 5.7 56.0 318.1 Brainlearn 28 2275 366977 31.4 6.2 43.5 269.4 Caissa 1.18 5492 923486 30.2 5.9 50.4 299.7 Clover 6.1.19 4803 854377 31.4 5.6 62.2 349.4 Cool Iris 12.10 2201 356730 27.6 6.2 51.2 315.5 CorChess 20240331 2253 372774 27.4 6.0 52.2 315.8 Crystal 8 3582 571994 20.3 6.3 47.7 298.8 Fire 9.3 5225 876565 22.0 6.0 55.5 331.1 Fisherov chess monk 1.2 3487 619728 36.0 5.6 60.4 340.0 Hyp

New version chess engine: Raid 3.6 TacticaL RetreaT (Stockfish derivative)

Raid - is a Stockfish derivative . Rating CEDR=3743 Raid 3.2 - results: Polyfish 240114 7/14 +0 14 Games Hazard 4.21 DuaL 6.5/12 +1 12 Games Leptir 100124 6/12 +0 12 Games Arasan 24.1 7.5/10 +5 10 Games Uralochka 3.41 dev1 6/10 +2 10 Games Caissa 1.16 5.5/10 +1 10 Games SF-PRO 07.01.2024 5/10 +0 10 Games Stockfish 20240117 5/10 +0 10 Games Minic 3.41 7/8 +6 8 Games Pawn 3.0 6.5/8 +5 8 Games Texel 1.11 5.5/8 +3 8 Games RubiChess 20240112 5/8 +2 8 Games CorChess 20240103 4/8 +0 8 Games Counter 5.5 4.5/6 +3 6 Games Obsidian 10.0 3.5/6 +1 6 Games Fisherov chess monk 1.2 3/6 +0 6 Games Avalanche 2.1.0 3.5/4 +3 4 Games Starzix 4.0 2.5/4 +1 4 Games Cool Iris 11.80 2/4 +0 4 Games Blue Marlin 15.7 2/4 +0 4 Games AI 28.0 2/4 +0 4 Games

New version chess engine: Lc0 v.0.31.0-rc2

LcZero - CEDR Rating=3712 v0.31.0-rc2: In this version: Changed cuda compilation options to use -arch=native or -arch=all-major if no specific version is requested, with fallback for older cuda that don't support those options. Updated android builds to use openblas 0.3.27. A few small fixes. Individual statistics:  Lc0 BT4 Clover 6.1 5.5/8 +3 8 Games RofChade 3.1 4.5/8 +1 8 Games Dragon 3.3 4.5/8 +1 8 Games SF-PRO 19.11.2023 4/8 +0 8 Games YuliGM PrO 15 3.5/8 -1 8 Games ShashChess 34.5 3.5/8 -1 8 Games Sawfish 2TC 3.5/6 +1 6 Games Polyfish 231120 3.5/6 +1 6 Games Hazard 4.1 3/6 +0 6 Games Raid 3.1 3/6 +0 6 Games Eman 9.80 3/6 +0 6 Games Incognito 4 3/6 +0 6 Games Vanilla 14c 3/6 +0 6 Games Patzer AI X-256 2.5/6 -1 6 Games SugaR AI SE 2.5/5 +0 5 Games Altair 6.0.0 3.5/4 +3 4 Games Caissa 1.15 3/4 +2 4 Games Seer 2.8.0 2.5/4 +1 4 Games Fisherov chess monk 1.2 2.5/4 +1 4 Games Crystal 7 CMB 2.5/4 +1 4 Games Chess-System-Tal-2 2.5/4 +1 4 Games Lc0 v.0.31.0-rc2 (gpu-nvidia-cudnn) d

Yuliirma 4.0 wins Strong Engines Tournament (Tests by Jörn Gronemann, Heide, 2024.04.26 Time: 3'+3")

Our next test, a large tournament in which over 1,000 games were played, was won by the Yuliirma 4.0 chess engine. This engine is only available to our testers. In second place is the official version of Stockfish 16.1 and in third place is Stockfish 20240421 . GPU NVIDIA  RTX 3060 ti. GUI-Banksia, For Every Engine only 1 CPU and 512 Hashtables, Book - short ICCF book,  6TBs. 🕒🕒Time 3'+3"   1050 (!!!) tournaments games download   💾 All games CEDR  317.321 games download  01.04.2024  (3'+3")    @chessenginesdiary

New version chess engine: ShashChess 35.1

ShashChess - UCI chess engine. Rating CEDR=3747 (01.04.2024) ShashChess is a free UCI chess engine derived from Stockfish family chess engines.  v.35.1: ShashChess 35.1 Nodestime option corrected futility pruning: parent node ShashChess 34.5 - results: Corchess 20231123 50.5/100 +1 100 Games Eman 9.80 19.5/38 +1 38 Games Patzer AI X-256 18.5/38 -1 38 Games Brainlearn 26.4 18/38 -2 38 Games Hazard 4.1 17.5/36 -1 36 Games Raid 3.1 16/32 +0 32 Games Crystal 7 CMB 16/32 +0 32 Games Dragon 3.3 16.5/30 +3 30 Games Polyfish 231120 15.5/30 +1 30 Games Stockfish 16 15/30 +0 30 Games Sawfish 2TC 14/28 +0 28 Games Deep Blue 20230628 14/28 +0 28 Games Incognito 4 12.5/26 -1 26 Games YuliGM PrO 15 12.5/24 +1 24 Games Vanilla 14c 12/24 +0 24 Games Fisherov chess monk 1.2 13/22 +4 22 Games Cool Iris 11.50 11/22 +0 22 Games SF-PRO 19.11.23 8.5/16 +1 16 Games YuliGM Pro 14 6/12 +0 12 Games Killfish 231123 6/12 +0 12 Games Killfish 071223 5.5/12 -1 12 Games ShashChess 35.1 - download