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

Verychess 0.6.0 new version chess engine


VeryChess  introduces multi-threaded search based on the Lazy SMP approach, with support for 1 to 256 search threads and a shared lock-free transposition table.
Author: Oleh Sych

In our tests, the previous version, 0.4.0, competed in the Chess Engine League qualifying round in Group E, but ended up a distant 35th, scoring just 4.5 points out of 70 games. Now we’ll see how the latest version measures up.

Verychess 0.6.0 what's new?
Overview
This is an evaluation and search-quality release.

The entire hand-crafted evaluation was automatically tuned with a Texel-style optimizer built for this release, and two pawn-evaluation terms were re-introduced as jointly-tuned features. Also it adds two standard selective-pruning techniques to the main search.

Strength
Together these are worth roughly +300 Elo in self-play at fast time control.

What's new
Automatic evaluation tuning (Texel)
Until now every evaluation weight — piece values, piece-square tables, mobility, bishop pair, rook bonuses — was set by hand. This release adds a complete, self-contained tuning pipeline and uses it to fit all of those weights to game results:

Self-play data generation: the engine plays itself from randomised openings at a fixed node budget, adjudicates the result, and writes out quiet, non-tactical positions labelled with the game outcome.
Feature export: for any position the engine emits the exact linear coefficient of every tunable weight, so an external optimizer can reconstruct the evaluation without running the engine.
Optimizer: a small NumPy Adam optimizer minimises the Texel error (game result vs. a sigmoid of the evaluation) over ~4 million positions, with a gauge-normalisation step that keeps the tables well-conditioned, and regenerates the C++ weight tables.
Passed pawns and pawn structure
With the tuning pipeline in place, two evaluation terms that were previously neutral as hand-weighted values were re-added as jointly-tuned features and kept: passed pawns (a bonus that grows as the pawn advances) and pawn structure (penalties for isolated and doubled pawns, a bonus for connected pawns).

Reverse futility pruning
In a shallow, non-principal-variation node where the side to move is not in check, if the static evaluation already exceeds the search window by a depth-scaled margin — so much that even conceding that margin still leaves the position winning — the node returns immediately without searching any moves. The margin grows with depth, so deep nodes only prune when the position is clearly won, while shallow nodes prune more readily.

Late move pruning
At shallow depth, once enough moves have already been examined in a node, the remaining late, quiet, non-checking moves are skipped entirely rather than searched at reduced depth. Because moves are ordered best-first, the moves reached late are low-priority quiet moves that rarely change the result — but skipping them cuts the search tree by roughly two thirds at fixed depth, which buys substantially deeper search under real time controls. Checks, captures, and promotions are never pruned this way.

Verychess 0.6.0 download from page

Comments