Skip to content

Releases: Adam-Kulju/Patricia

Patricia 4

03 Dec 02:51
0b3eda7
Compare
Choose a tag to compare

Update 12/3/2024, 20:02 UTC: Added v4 binaries for machines with avx512 support.

Estimated Rating: 3500 CCRL

Estimated EAS: 330k-450k (depending on the testing method)

Patricia 4 is now out! Thanks to a new net trained on Patricia data, a lot of search patches, and a bitboard rewrite, she's now able to compete much more effectively with top engines, while retaining her status as the most aggressive chess engine out there.

Explanation about the EAS value:

I measured an EAS score of 470,000 in my initial testing before release, however when Stefan Pohl tested it under his conditions he only got a score in the low 300 thousands. I've traced this discrepancy to the different books used in the testing, with Pohl using more unbalanced books than me. Pohl's EAS score is more likely to be accurate in engine games, meaning I have a lot of work to do EAS-wise, however I've held up the release long enough so the task of hiking up the EAS under top engine tournament conditions will be left to Patricia 4.1/5.

Patricia is still the most aggressive engine out there and is now far stronger than 3.1 was, able to fully hold its own in TCEC and CCC.

Binaries

Linux and Windows binaries are found below. Use v3 (avx2) for most computers, and use v2 (SSE) for very old models. If you're not sure about which one to download, try v3 first.

If you have a machine that supports AVX512 or you want to compile from source for other reasons, you can easily build Patricia from source by running the commands:

git clone https://github.com/Adam-Kulju/Patricia
cd Patricia/engine
make -B

The executable patricia will be found in the current directory, that is, Patricia/engine.

Acknowledgements

Gabe, the Obsidian author, is responsible for a majority of Patricia's Elo increase. I really appreciate his help and collaboration - the only reason he's not a coauthor is because he declined to be added as one.

Thank you to everyone who supports Patricia. I'm truly grateful for all the attention she's received.

A Note on Antivirus Software

I've been getting a lot of reports of antivirus software flagging Patricia as a virus. She is not a virus and this problem happens to most chess engines, but it's been especially annoying and persistent with her for some reason. If you're struggling with getting an executable due to this let me know and I'll see what I can do to help you out.

Patricia 3.1

07 Aug 03:23
cd072ce
Compare
Choose a tag to compare

Note to testers/people who only use Patricia to play against other engines: Do not bother testing this release, nothing strength or aggression-wise has changed on that front. This release is entirely meant to give Patricia more use when analyzing positions and especially when playing against people.

Patricia 3.1

Patricia 3.1 is dedicated entirely to making Patricia more useful to people. Watching her crush other engines is fun, but many people have told me that what they really want is to use Patricia as a sparring partner and to analyze their own games with her. Thus I have made some changes:

  • Fixed all UCI settings related to strength limiting. Previously there wasn't a good way to set Patricia's skill level on some GUIs due to an oversight in implementing the UCI_LimitStrength option. Now, you can change Patricia's elo in one of two ways:
    1: the UCI_Elo option supports Elo ratings from 500 to 3000.
    2: the Skill_Level option has 20 skill levels - the elo ratings they correspond to can be found in the Readme.

  • Completely overhauled the strength limiting system and implemented more style when limited in strength. Patricia 3.1's skill levels are much better calibrated than Patricia 3's, meaning people can actually beat "1500 Elo" Patricia without too much difficulty unlike before. Additionally, Patricia 3.1 plays slightly randomized openings and sacrifices much more in the opening when her strength is limited for play against a human.

    The new skill limiting system works by using MultiPV and a centipawn loss system; Patricia will play some second best moves, a few inaccuracies, and a couple mistakes, instead of playing a perfect game with one or two absolute howlers like most engines with skill limits do. In my opinion she's more fun to play against than even some of the chess.com bots.

  • Implemented MultiPV mode, so that you can analyze multiple possible continuations.

  • Added datagen support.

  • Added printing of fail highs/lows in search so that Patricia doesn't look like she got stuck during deep searches.

It's not a huge release but I'm about to go back to the net mines for a few months and I wanted Patricia to be in a good, complete state for all purposes, both gameplay and analysis.

Binaries

Linux and Windows binaries are included below. Use v3 (avx2) for most computers, and use v2 (SSE) for very old models. If you're not sure about which one to download, try v3 first.

If you have a machine that supports AVX512 or you want to compile from source for other reasons, you can easily build Patricia from source by running the commands:

git clone https://github.com/Adam-Kulju/Patricia
cd Patricia/engine
make -B

The executable patricia will be found in the current directory, that is, Patricia/engine.

Acknowledgements

Stefan Pohl
Swehosting friends
Everyone interested in an analysis engine who gave me all sorts of feedback as well as feature requests. Patricia 3.1 is thanks to you making me aware of how many of you wanted to use Patricia instead of just watching her play.
Check out Patricia's main README for full acknowledgements.

If you like Patricia, make sure to star the repo and spread the word to your friends!

Patricia 3

14 Jul 03:50
b836db1
Compare
Choose a tag to compare

Update 4/14/2024, 4:49 AM UTC: Fixed wrong UCI_Elo and UCI_Limit upper bounds. Exes updated.
Update 4/14/2024, 11:06 PM UTC: Fixed a small bug that could possibly overflow search stack. Exes updated.
Update 7/18/2024, 11:13 PM UTC: Changed the UCI_Elo parameter to Skill_Level in order to expose it to users of some GUIs that hid the options before. Exes updated.

Estimated rating: 3300-3350 CCRL

Patricia 3 fixes many of the issues that Patricia 2 had, cementing Patricia as the most aggressive chess engine ever and ensuring she plays stylishly against any competition.

The main thing that separates 3.0 from 2.0 is that most of her aggressiveness now comes from the neural network evaluation instead of from search twiddling. This means that Patricia now fully believes in all of her sacrifices, and wins because of them rather than in spite of them. She's also much better at winning beautiful games against engines much stronger than her; here is an LTC gauntlet of Patricia versus various 3500-3600 strength chess engines (10500 games in order to get Patricia enough wins for the tool to be accurate):

Rank  EAS-Score  sacs   shorts  draws  moves  Engine/player 
-------------------------------------------------------------------
   1    420310  56.62%  32.77%  03.74%   68   Patricia 3.0  
   2     67651  00.30%  26.61%  46.56%   67   Willow 4  
   3     59973  00.19%  23.70%  43.61%   67   Stormphrax 4  
   4     43925  00.70%  19.56%  46.58%   70   Carp 3.0.1  
   5     38241  00.38%  19.79%  46.36%   72   Akimbo 0.8  
   6     31291  00.10%  17.74%  42.20%   76   Alexandria 4  
   7     19634  00.44%  10.48%  41.59%   75   Altair 6  
   8     19046  01.04%  10.90%  41.09%   75   Viridithas 9  
-------------------------------------------------------------------

Patricia 3 is just as clinical at taking down weak opponents, and is orders of magnitude more stylish as the underdog; she will be a terror even at CCC/TCEC conditions.

She's also much stronger than 2.0, with an estimated rating of 3300-3350 CCRL due to various search features being implemented and quality of the sacrifices improving overall.

Additionally, Patricia 3 includes many QOL updates for users, supporting multithreading, go nodes, go depth, stop, full pv printing, and the addition of UCI_Limit and Skill_Level parameters that allow Patricia to be the perfect sparring partner for you!

Finally, the bugs that plagued Patricia 2.0 are (to the best of my knowledge) entirely stamped out. Please open an issue or contact me if any crashes or unexpected behaviors occur.

Binaries

Linux and Windows binaries are found below. Use v3 (avx2) for most computers, and use v2 (SSE) for very old models. If you're not sure about which one to download, try v3 first.

If you have a machine that supports AVX512 or you want to compile from source for other reasons, you can easily build Patricia from source by running the commands:

git clone https://github.com/Adam-Kulju/Patricia
cd Patricia/engine
make -B
The executable patricia will be found in the current directory, that is, Patricia/engine.

Acknowledgements

Stefan Pohl
Swehosting friends
Everyone interested in Patricia development
Check out Patricia's main README for full acknowledgements.

Patricia 2.0.1 (bugfix)

07 Apr 01:06
f947565
Compare
Choose a tag to compare

I've received several reports of bugs causing Patricia to crash. While I could not get Patricia to actively crash on my machine, I did find some undefined behavior and memory errors; they are all cleaned up now, as Patricia passes valgrind and AddressSan checks on high depth searches on my machine, in both Windows and Linux, without any issue. Updated executables are found here. Please notify me if problems continue.

Update (4/6/2024): Fixed hash setting bug as well.

No other functional change.

Patricia 2.0

03 Apr 06:06
7d92ac0
Compare
Choose a tag to compare

Estimated CCRL Rating: 3100-3150

Patricia 2.0 is, per the EAS tool, unquestionably the most aggressive superhuman chess engine ever created (and the most aggressive engine of any kind that I currently know of).

She's also significantly stronger than her 1.0 version, with a larger net and several search features added in to make up for the loss in strength resulting from all the sacrifices.

Comparison of EAS testing of Patricia 1.0 and Patricia 2.0:

Rank  EAS-Score  sacs   shorts  draws  moves  Engine/player 
-------------------------------------------------------------------
   1    185033  22.05%  25.03%  12.30%   65   Patricia 1.0
   2    125386  15.95%  26.71%  19.36%   64   Peacekeeper 1.50  
   3     92720  15.06%  13.10%  15.62%   70   Willow 2.8  
   4     73207  10.61%  14.76%  20.66%   71   Midnight v5  
   5     70947  10.33%  12.76%  19.66%   71   Wahoo v3  
   6     67964  11.17%  15.28%  21.25%   70   Polaris 1.6.1  
   7     56034  04.03%  16.76%  27.24%   68   Akimbo 0.4.1  
-------------------------------------------------------------------
Rank  EAS-Score  sacs   shorts  draws  moves  Engine/player 
-------------------------------------------------------------------
   1    424440  35.61%  42.62%  04.14%   54   Patricia 2.0
   2    124856  14.06%  29.40%  21.97%   64   Peacekeeper 1.50  
   3     87869  17.11%  13.84%  18.57%   69   Willow 2.8  
   4     86016  09.09%  18.59%  17.44%   70   Midnight v5  
   5     74072  10.58%  14.96%  19.22%   71   Wahoo v3  
   6     63659  10.23%  14.82%  21.19%   71   Polaris 1.6.1  
   7     49836  02.86%  17.32%  29.43%   67   Akimbo 0.4.1  
-------------------------------------------------------------------

Details of what exactly Patricia's featureset is can be found in Patricia's README. The whole evaluation/evaluation adjustment function was scrapped and rewritten, and all search features aside from LMR, RFP, and NMP were added between 1.0 and 2.0.

Binaries

Linux and Windows binaries are found below. Use v3 (avx2) for most computers, and use v2 (SSE) for very old models. If you're not sure about which one to download, try v3 first.

If you have a machine that supports AVX512 or you want to compile from source for other reasons, you can easily build Patricia from source by running the commands:

git clone https://github.com/Adam-Kulju/Patricia
cd Patricia/engine
make -B

The executable patricia will be found in the current directory, that is, Patricia/engine.

Acknowledgements

  • Stefan Pohl
  • Swehosting friends
  • Everyone interested in Patricia development

Check out Patricia's main README for full acknowledgements.

Patricia 1.0

27 Feb 04:17
abc3117
Compare
Choose a tag to compare

Updated 2/27/2024: exes were broken, updated now.

Estimated CCRL Rating: 2850-2900

Patricia is a chess engine designed to play some of the most ferocious chess possible, while still being superhuman. Patricia 1.0 represents a good starting point for this journey, as she's superhuman but not by an incredible amount, and noticeably more aggressive than other engines her strength but not as much as I dream of her becoming.

A tournament against some similar strength engines using Stefan Pohl's EAS tool, currently the most advanced of its kind, shows Patricia leaps and bounds ahead of the pack. Each engine played a total of 3000 games.

Rank  EAS-Score  sacs   shorts  draws  moves  Engine/player 
-------------------------------------------------------------------
   1    185033  22.05%  25.03%  12.30%   65   Patricia  
   2    125386  15.95%  26.71%  19.36%   64   Peacekeeper 1.50  
   3     92720  15.06%  13.10%  15.62%   70   Willow 2.8  
   4     73207  10.61%  14.76%  20.66%   71   Midnight v5  
   5     70947  10.33%  12.76%  19.66%   71   Wahoo v3  
   6     67964  11.17%  15.28%  21.25%   70   Polaris 1.6.1  
   7     56034  04.03%  16.76%  27.24%   68   Akimbo 0.4.1  
-------------------------------------------------------------------

Features:

Evaluation: Patricia uses a small neural network for evaluation that is trained on 400m FENs of Willow data. This training is done in a two-step process; first with the whole dataset to create a regular net, and then with filtered positions with the goal of increasing aggressiveness.

Search: Patricia's search is very simple. It has: Alpha-Beta search, Transposition Tables, Quiescence Search, RFP, LMR, and NMP. That's it (along with history). More complex is the code I use to try and reward sacrifices!

Patricia is a single-threaded engine for now, and doesn't use tablebases. Other than that, it supports most uci protocols, with hash being configurable and stop finally being implemented.

Don't run Patricia against Stockfish and expect much to happen. Patricia is better suited as a sparring partner for weaker engines, or strong humans.

Binaries:

This release comes with two versions of Patricia for Windows and Linux.
v3 - use for most computers
v2 - use for especially old computers

If you want a custom compile, git clone Patricia and run make in the engine directory, or just ask me personally.

Acknowledgements

Stefan Pohl for his EAS tool
my friends in SweHosting for moral support and advice