Goldfish

Goldfish - Stockfish's very distant and not so bright cousin - a UCI chess engine

MIT License

Stars
6

Bot releases are visible (Hide)

Goldfish - v2.1.0: Change to PeSTO's Evaluation Function Latest Release

Published by bsamseth about 1 month ago

Change from using the Simple Evaluation Function to PeSTO's Evaluation Function. This really doesn't introduce meaningfully more complexity, but provides several benefits.

The new table values are less symmetric, more specialized and all pieces have both middle game and end game values. The two are joined using tapered evaluation with a phase estimate. All this provides much better understanding, as well as more distinct scores which is good for getting more cutoffs.

All in all, this was measured to be about 200 ELO, a massive improvement for such little effort. Further optimization of the values for Goldfish specifically is possible, which might yield some minor improvements.

Goldfish - v2.0.1: Fix draw-by-repetition detection

Published by github-actions[bot] about 2 months ago

What's Changed

Full Changelog: https://github.com/bsamseth/Goldfish/compare/v2.0.0...v2.0.1

Goldfish - v2.0.0: Full rewrite in Rust

Published by bsamseth about 2 months ago

Full rewrite in Rust

Everything rewritten, most things ported over from v1.13, and a few additions.

About ~120 ELO stronger than v1.13. The following shows results from testing. Stockfish 14.1 (SN) (Skill level N) is there for reference, and v1.13 is pinned at it's CCRL rating.

   # PLAYER                 : RATING    POINTS  PLAYED    (%)
   1 Stockfish 14.1 (S5)    : 2171.5     131.5     221   59.5%
   2 Goldfish v2.0.0        : 2104.2    1086.0    1819   59.7%
   4 Goldfish v1.13.0       : 1983.0    1348.0    2622   51.4% 
   5 Stockfish 14.1 (S4)    : 1973.5      63.5     214   29.7%

Full Changelog: https://github.com/bsamseth/Goldfish/compare/v1.13.0...v2.0.0

Goldfish - v1.13.0: Killer Move Heuristic

Published by bsamseth over 5 years ago

Goldfish - v1.12.0: Futility Pruning and Razoring

Published by bsamseth over 5 years ago

Goldfish - v1.11.2: UCI Options Support

Published by bsamseth over 5 years ago

Goldfish - v1.11.1: Draw-by-repetition Bugfix

Published by bsamseth over 5 years ago

Goldfish - v1.11.0: Syzygy Tablebases

Published by bsamseth over 5 years ago

Goldfish - v1.7.1: NegaScout and Quiescence TTable

Published by bsamseth almost 6 years ago

Implement a version of NegaScout instead of normal PVS. Slightly more cutoffs, based on the assumption of no search instability.

Also included is the use of ttable in quiescence search.

Goldfish - v1.7.0: Principal Variation Search

Published by bsamseth almost 6 years ago

Massive speed boost.

v1.7.0

Total time (ms) : 6192
Nodes searched : 7000990
Nodes/second : 1130651

v1.6.0:

Total time (ms) : 11530
Nodes searched : 11924519
Nodes/second : 1034217

# PLAYER             :  RATING  POINTS  PLAYED   (%)
1 Goldfish v1.7.0    :  2243.5   173.0     300    58
2 Goldfish v1.6.0    :  2215.3   360.0     650    55
3 Goldfish v1.5.1    :  2162.6   423.5     900    47
4 Goldfish v1.5      :  2151.8   516.5    1075    48
5 Goldfish v1.4      :  2147.7   453.0     900    50
6 Goldfish v1.3      :  2130.5   133.0     255    52
7 Goldfish v1.2      :  2097.5    74.5     160    47
8 Goldfish v1.1      :  2055.3    70.0     162    43
9 Goldfish v1.0      :  2000.0    13.5      32    42

1) Goldfish v1.7.0 2243.5 :    300 (+87,=172,-41),  57.7 %

vs.                    :  games (  +,   =,  -),   (%) :    Diff
Goldfish v1.6.0        :    150 ( 46,  78, 26),  56.7 :   +28.2
Goldfish v1.5.1        :    150 ( 41,  94, 15),  58.7 :   +80.9
Goldfish - v1.6.0: Killer Move Heuristic

Published by bsamseth almost 6 years ago

If a move from ttable is available, regardless of depth
requirement, we search this first in the hopes that this will
cause more cutoffs.

Makes a huge impact on bench score. Very slightly lower nodes/second,
but speed is reduced by ~50%. About ~50 ELO improvement.

Average of 3 bench results on MacBook Air 2015:

v1.6.0:

Total time (ms) : 11530
Nodes searched : 11924519
Nodes/second : 1034217

v1.5.1:

Total time (ms) : 21660
Nodes searched : 23289650
Nodes/second : 1075221

Goldfish v1.6.0 2219.1 :    786 (+191,=477,-118),  54.6 %

vs.                    :  games (   +,   =,   -),   (%) :    Diff
Goldfish v1.5.1        :    260 (  66, 162,  32),  56.5 :   +50.0
Goldfish v1.5          :    260 (  77, 163,  20),  61.0 :   +60.2
Goldfish v1.4          :     10 (   1,   8,   1),  50.0 :   +65.3
Goldfish v1.3          :     10 (   1,   8,   1),  50.0 :   +88.1
Goldfish v1.2          :     10 (   4,   6,   0),  70.0 :  +106.7
Goldfish v1.1          :     10 (   3,   6,   1),  60.0 :  +163.8
Goldfish - v1.5.1: Transposition table

Published by bsamseth almost 6 years ago

Includes a fix of the ttable lookup logic. Playing strength does not seem to change in any significant fashion, but this should mean more accurate playing, with less (no?) bugs.

v1.5.1 is tested against its predecessors, and below is the results:

   # PLAYER             :  RATING  POINTS  PLAYED   (%)
   1 Goldfish v1.5.1    :  2156.3   254.0     500    51
   2 Goldfish v1.5      :  2154.1   419.0     825    51
   3 Goldfish v1.4      :  2147.3   453.0     900    50
   4 Goldfish v1.3      :  2131.2   133.0     255    52
   5 Goldfish v1.2      :  2097.7    74.5     160    47
   6 Goldfish v1.1      :  2055.4    70.0     162    43
   7 Goldfish v1.0      :  2000.0    13.5      32    42

Head to head statistics:

1) Goldfish v1.5.1 2156.3 :    500 (+86,=336,-78),  50.8 %

   vs.                    :  games (  +,   =,  -),   (%) :    Diff
   Goldfish v1.5          :    250 ( 43, 166, 41),  50.4 :    +2.2
   Goldfish v1.4          :    250 ( 43, 170, 37),  51.2 :    +9.0

2) Goldfish v1.5   2154.1 :    825 (+138,=562,-125),  50.8 %

   vs.                    :  games (   +,   =,   -),   (%) :    Diff
   Goldfish v1.5.1        :    250 (  41, 166,  43),  49.6 :    -2.2
   Goldfish v1.4          :    500 (  85, 345,  70),  51.5 :    +6.8
   Goldfish v1.3          :     75 (  12,  51,  12),  50.0 :   +22.9

3) Goldfish v1.4   2147.3 :    900 (+152,=602,-146),  50.3 %

   vs.                    :  games (   +,   =,   -),   (%) :    Diff
   Goldfish v1.5.1        :    250 (  37, 170,  43),  48.8 :    -9.0
   Goldfish v1.5          :    500 (  70, 345,  85),  48.5 :    -6.8
   Goldfish v1.3          :     50 (  11,  30,   9),  52.0 :   +16.1
   Goldfish v1.2          :     50 (  15,  28,   7),  58.0 :   +49.6
   Goldfish v1.1          :     50 (  19,  29,   2),  67.0 :   +91.9

4) Goldfish v1.3   2131.2 :    255 (+50,=166,-39),  52.2 %

   vs.                    :  games (  +,   =,  -),   (%) :    Diff
   Goldfish v1.5          :     75 ( 12,  51, 12),  50.0 :   -22.9
   Goldfish v1.4          :     50 (  9,  30, 11),  48.0 :   -16.1
   Goldfish v1.2          :     80 ( 16,  55,  9),  54.4 :   +33.5
   Goldfish v1.1          :     50 ( 13,  30,  7),  56.0 :   +75.8

5) Goldfish v1.2   2097.7 :    160 (+24,=101,-35),  46.6 %

   vs.                    :  games (  +,   =,  -),   (%) :    Diff
   Goldfish v1.4          :     50 (  7,  28, 15),  42.0 :   -49.6
   Goldfish v1.3          :     80 (  9,  55, 16),  45.6 :   -33.5
   Goldfish v1.1          :     30 (  8,  18,  4),  56.7 :   +42.3

6) Goldfish v1.1   2055.4 :    162 (+20,=100,-42),  43.2 %

   vs.                    :  games (  +,   =,  -),   (%) :    Diff
   Goldfish v1.4          :     50 (  2,  29, 19),  33.0 :   -91.9
   Goldfish v1.3          :     50 (  7,  30, 13),  44.0 :   -75.8
   Goldfish v1.2          :     30 (  4,  18,  8),  43.3 :   -42.3
   Goldfish v1.0          :     32 (  7,  23,  2),  57.8 :   +55.4

7) Goldfish v1.0   2000.0 :     32 (+2,=23,-7),  42.2 %

   vs.                    :  games ( +,  =, -),   (%) :    Diff
   Goldfish v1.1          :     32 ( 2, 23, 7),  42.2 :   -55.4

Total games                1418
 - White wins               274
 - Draws                    945
 - Black wins               198
 - Truncated/Discarded        1
Unique head to head        1.55%
Reference rating      2000.0 (set to "Goldfish v1.0")

Loose Anchors = none
Relative Anchors = none

players with no games = 0
players with all wins = 0
players w/ all losses = 0

White Advantage = 18.9
Draw Rate (eq.) = 67.6 %

White advantage = 18.92
Draw rate (equal opponents) = 67.64 %
Goldfish - v1.5: Transposition table

Published by bsamseth almost 6 years ago

Basic transposition table in place. Drastically reduces the number of nodes searched, at the cost of slightly lower nodes/second.

Goldfish - v1.4: Complete refactoring of base types.

Published by bsamseth almost 6 years ago

Goldfish - v1.3: Partial Refactor of Base Types

Published by bsamseth almost 6 years ago

Goldfish - v1.2: Check Extension

Published by bsamseth almost 6 years ago

Very basic check extension in search - if in check then search one ply further.

Goldfish - v1.1: Null Move Pruning

Published by bsamseth almost 6 years ago

Goldfish - v1.0: Fork of fluxroot/pulse

Published by bsamseth almost 6 years ago

Starting point for new version of Goldfish, based on fluxroot/pulse.

Goldfish - v0.1: Goldfish - The bad chess engine

Published by bsamseth over 6 years ago

The engine is (largely) able to avoid playing instantly losing moves, and searches to a depth of ~4-5 within a reasonable thinking time (<10 secs). But it is not very good at long-term, and quite possibly very bad at endgame. Also, the stats it reports are terrible, showing it really has no clue.

This marks the last point before the complete redesign based on fluxroot/pulse.