Skip to content

Releases: bctboi23/CeeChess

CeeChess 1.4 - The tuning update

16 Feb 07:25
3d53576
Compare
Choose a tag to compare

+150 ELO self-play (1s / move)

  • Increased Futility and Reverse Futility Pruning Depths
  • Tweaked LMR
    • Cleaner, easier to understand code
    • Researches null window first before searching full window
  • Added Second Set of Killer Moves
  • Added King Safety in the form of King Tropism
    • Extra bonus to diagonals in line with the king
    • Extra bonus to attack if enemy king is near semi-open files
    • Weighted by attacker's material
  • Evaluation tuned using a logistic regression over a custom constructed dataset, similar to the Texel Method
    • Black box tuning was done using Simulated annealing + local search, using a pseudo-huber loss
      • pseudo-huber loss was used here since there are likely outliers that would unfavorably skew the relatively simple evaluation function. This was a choice I made based on what I understood about the dataset, and made a marginal improvement to the evaluation quality as opposed to the traditional MSE loss (+10ish elo from 2000 games). If my evaluation were more complex, I might be more tempted to stay with MSE loss, as long as on-board checkmates are removed from the dataset
  • Fixed some timeout bugs
  • Increased hash table stability
    (95)

Gauntlet run for test ratings (1 min, 0.5sec inc), with elo centered around the v1.4 release (ratings from bayeselo):

Rank Name Elo + - Games Score Oppo. Draws
1 Barbarossa-0.6.0 38 34 33 240 55% 95 23%
2 CeeChess-v1.4 0 13 13 1664 65% -13 26%
3 Barbarossa-0.5.0-win10-64 -34 33 33 240 45% 95 28%
4 Kingfisher.v1.1.1 -107 32 33 240 34% 95 36%
5 gopher_check -146 34 35 238 29% 95 26%
6 CeeChess 1.3.2 -149 34 36 238 29% 95 25%
...

Since CCRL ratings got adjusted down recently (stockfish went from 3900 CCRL to ~3630 afaik), this no longer breaks the CCRL 2400 barrier, but comparing the results here to the old ratings of Barbarossa-0.6.0(2468), Barbarossa-0.5.0(~2375ish i believe?) and the others suggests that this release would have broken that barrier. I now expect the engine to land in the range of 2300-2350, given Barbarossa-0.6.0 has a new rating of 2355

More agressive pruning

24 Feb 02:54
34a30d1
Compare
Choose a tag to compare

(+15 ELO)

  • Increased Agressiveness of LMR
    • Search less moves fully
  • Increased Reverse Futility Depth

Search tuning is over for now, will be moving on to write a king safety evaluation, to hopefully make my engine play much more aggressive and sacrificial chess (while gaining elo of course).

Futility pruning + code cleanup

20 Feb 20:14
9522d00
Compare
Choose a tag to compare

+5 ELO

  • Reduced Razoring to depth 2
  • Added Futility Pruning (to depth 6)
    • if a node is marked futile, only search checks, captures, and promotions
  • Rewrote LMR
    • Cleaner, easier to understand code
    • Precomputes LMR tables for speed (idea from Ethereal)

Elo was tested with 15"+0.3" games, expect a little more elo in longer time controls

CeeChess v1.3

15 Feb 01:06
9612397
Compare
Choose a tag to compare

(+100 ELO)

  • added tapered evaluation and game phase interpolation (using the 24 value for game phase calculation)
  • added new piece square tables for midgame and endgame (Lyudmils tables in the PSQT challenge)
  • changed values for passed pawns in the midgame and endgame
  • value the bishop pair more in the endgame
  • more aggressive static null move pruning

I changed the name from SeeChess to CeeChess this release to remove the ambiguity of names, as there is already an engine named SEEchess. This release performs about ~2310 ELO according to self play, and I am currently running tests against a new suite of engines to confirm this rating increase.

Check extension fix (2200!)

17 Jan 16:12
Compare
Choose a tag to compare

(+20 ELO)

  • Extends checks before qSearch (predicting less elo gain if I had a king safety evaluation).
  • Fixed Null Move Pruning constraints to play better in the endgame
  • More comments (to help me and others to understand the magnitude of improvements certain code added)

This should bring us over the 2200 hump! Therefore, I am making the version number v1.2 (instead of v1.1.x, as would be normal with this size of change)

More pruning!

16 Jan 19:54
Compare
Choose a tag to compare

( + 15 ELO)

  • added static null move pruning (reverse futility pruning)
  • cleaned up evaluation constants (added eval.h)
  • corrected LMR constraints

Preparing for the move on to rewriting the evaluation. I will begin working on tapered evaluation, with new PSQTs to hopefully play better transitioning to the endgame. After that, the next plans are mobility, and king safety. Once the evaluation function is much more robust, I will feel better about adding more pruning techniques and increasing the aggressiveness of the pruning techniques I already use

Razoring Fix (Final)

07 Jan 23:26
Compare
Choose a tag to compare

(+15 ELO)

New Razoring Scheme:

  • More tactically effective
  • resolved bugs from old scheme
  • increased razoring depth to 3 (with new margins)

Bugfix update

05 Jan 03:05
Compare
Choose a tag to compare

(+10 ELO)

  • Fixed bugs in razoring scheme, and implemented safer razoring.
  • Increased razoring depth to 2
  • New LMR scheme

SeeChess pruning improvement release

03 Jan 05:38
Compare
Choose a tag to compare

(+80 ELO)
Heavy pruning update

Lossless Pruning:

  • Mate Distance Pruning (MDP) (Only really helps in mate situations)

Lossy Pruning:

  • Razoring (Directly enters into qSearch (to resolve the position) if position eval + cutoff breaks alpha)
  • Simple LMR (Late Move Reductions)

SeeChess Full Prototype

03 Jan 03:38
c865679
Compare
Choose a tag to compare

(~2060 ELO)
Initial engine, with basic features. A little stronger than Vice, due to better Null Move Pruning