Stefan Pohl Computer Chess

Home of famous UHO openings and EAS Ratinglist


 

The Cerberus Project

 

Building one engine out of Patricia, Velvet risky-net and Velvet normal-net...

 

Download Cerberus here (because I want to avoid any copyright-issues, you have to download the binaries of Velvet and Patricia by yourself. At the bottom of this site and in the ReadMe file in the download, you find a step-by-step manual, what to do (it is very easy!)...)

Cerberus is a combination of 2 engines (Patricia 4 and Velvet 8.1.1), using 3 different neural nets (Patricia 4 net, Velvet 8.1.1 risky net and Velvet 8.1.1 normal net). This is the reason for naming the project Cerberus:
Cerberus, in Greek mythology, is the monstrous watchdog of the underworld. Cerberus was usually said to have three heads (= 3 neural nets)...

 

I used the Eman Chimera program by Khalid Omar, to make one engine out of these. Which engine/net is used, depends on the number of pieces on the board:

 

Pieces / EAS-scores (EAS taken from my full UHO-Ratinglist):
32-22: Patricia 4.0 (opening/early middlegame). EAS=340432
21-13: Velvet 8.1.1 risky (middlegame/early endgame). EAS=221083
12-02: Velvet 8.1.1 normal (endgame) EAS=121106

 

This means a decreasing aggressiveness in playing-style in an ongoing game, depending on the number of pieces. But an increasing understanding of chess and a more solid play in endgame, because both nets of Velvet are much bigger than the very small net of Patricia 4 (both nets of Velvet are 24 MByte, Patricia 4 net is only 1.13 MByte !!!)

 

Here the first 8 of my full EAS Ratinglist:

 

                                bad  avg.win 
Rank  EAS-Score  sacs   shorts  draws  moves  Engine/player 
-------------------------------------------------------------------
   1    432481  51.61%  38.03%  05.49%   66   Patricia 3.1 avx2  
   2    340432  46.96%  29.39%  03.46%   70   Patricia 4.0 avx2  
   3    315346  43.56%  27.63%  04.21%   68   Cerberus 21124081r81  
   4    253682  37.88%  23.88%  08.79%   75   Rebel Extreme avx2  
   5    221083  32.46%  23.04%  09.25%   71   Velvet 8.1.0 risky  
   6    204351  34.75%  22.22%  10.27%   73   Velvet 8.0.0 risky  
   7    200919  31.18%  29.46%  17.09%   71   Revenge 1.0 avx2  
   8    196748  21.29%  26.40%  09.17%   70   Stockfish 16 230630  
   
  

Here the bottom of my full Ratinglist (Stockfish final HCE is around +30 Celo stronger than Stockfish 11):

 

     Program                     Celo    +    - Games    Score   Av.Op. Draws
  97 Stockfish final HCE       : 3478    4    4 20000    41.0%   3545   38.4%
  98 Cerberus 21124081r81      : 3456    4    4 14000    39.9%   3529   37.4%
  99 Slow Chess 2.9 avx2       : 3456    4    4 20000    39.0%   3540   43.0%
 100 Rebel Extreme avx2        : 3411    4    4 14000    34.0%   3529   39.3%
 101 Patricia 4.0 avx2         : 3390    4    4 14000    31.4%   3529   32.2%
 102 Revenge 1.0 avx2          : 3365    5    5 15000    18.3%   3637   30.3%
 103 Patricia 3.1 avx2         : 3219    6    6 14000    14.7%   3529   21.1%

 

The estimated strength of Cerberus is somewhere around Stockfish 11, clearly stronger than Patricia 4 alone (+66 Celo (!)). But still a very aggressive play, especially at the beginning of a game. Followed by much better play (by Velvet 8.1) to convert the attack - started by Patricia - into a win. Or, if the attack of Patricia failed, much more resilant play (by Velvet 8.1), trying to save the game and playing good endgames.

Mention, the EAS-Score of Cerberus 21124081r81 is 315346 and the won games with a sac percents are 43.56%, so Cerberus lost only 7.4% EAS-Score compared to Patricia 4 (testruns were identical: 14000 games each, same 14 opponents, same UHO-openings). And Cerberus lost only -3.4% sac percents (Patricia 4 has 46.96% won games with a sac). But Cerberus gained +66 Celo to Patricia 4, because it plays late middlegames and endgames much better!!

 

Mention, all the Kudos are going to (NOT ME!!!):
The author of Patricia, Adam Kulju - he developed Patricia with the help of my EAS-Tool (!)
The author of Velvet, Martin Honert
The author of Eman Chimera, Khalid Omar

 

Learn more about Patricia, the "heart" of Cerberus, on Patricia - the EAS Engine


I did 7 testruns of Cerberus with different first piece-number-limit (PNL), so Velvet risky starts playing later or sooner and Patricia is switched off.
All testruns were a full testrun for my ratinglist, with 14000 games (3min+1sec, singlethread), same 14 opponents as for Patricia 4 testrun, Rebel Extreme testrun... So, 98000 games were played in total.

Mention, the EAS-Scores of the following testruns are a little bit lower, because the calculation was
done by my Gauntlet-EAS-Tool only on the games of the testrun, not the EAS calculation of the full ratinglist...

 

                               Score    EAS      sacs   disconnects
PNL 24 (Cerberus 24124081r81): 44.0%   287705   41.56%       2
PNL 23 (Cerberus 23124081r81): 42.3%   284982   42.56%       2
PNL 22 (Cerberus 22124081r81): 40.9%   297357   42.62%       2
PNL 21 (Cerberus 21124081r81): 39.9%   303346   43.56%       2
PNL 20 (Cerberus 20124081r81): 38.5%   313951   44.49%       1
PNL 19 (Cerberus 19124081r81): 37.6%   320000   45.52%       2
PNL 18 (Cerberus 18124081r81): 36.2%   312165   45.87%       2
Patricia 4:                    31.4%   340432   49.96%       0                                               

Considering these results, I decided to choose Cerberus 21124080r81 as release-version. But, if you dont like this, you can change the piece-number-limit in the settings-file very easily...


 

 

Step by step guide to build Cerberus:
 
1) Download the 2 engines needed: Patricia 4 and Velvet 8.1.1 from GitHub (or the JA binaries of Patricia 4 by Jim Ablett), choose the fastest binaries on your system (mostly avx2)
 
Velvet 8.1.1 avx2 from GitHub:
https://github.com/mhonert/velvet-chess/releases/download/v8.1.1/velvet-v8.1.1-x86_64-avx2.exe
 
Jim Ablett Binaries of Patricia 4:
https://drive.proton.me/urls/0GWGH1T6WG#wXMl5y7fwG35
 
2) Put both binaries in the Cerberus folder.
 
Explanation of the "version-number" of current Cerberus, which looks really strange:
Cerberus 21124081r81 = 
Cerberus 21 12 40 81r 81
 
digit 1-2: First piece-number-limit (for switching from engine 1 to 2) = 21
digit 3-4: Second piece-number-limit (for switching from engine 2 to 3) = 12
digit 5-6: Version-number of engine 1 = 40 = Patricia 4.0
digit 7-9: Version-number of engine 2 = 81r = Velvet 8.1 risky
digit 10-11: Version-number of engine 3 = 81 = Velvet 8.1
 
3) Use any editor to open the Cerberus.xml File. This is the settings-file of Cerberus:
<ChimeraUciConfig SwitchingOverheadSeconds="1" SwitchingMode="PieceCount" ShowThreads="false" ShowHash="false">
        <Name>Cerberus 21124081r81</Name>
        <Engine FromMove="-1" FromPieceCount="32">
                <Exe>.\Patricia_4.0_64_JA_bmi2.exe</Exe>
                <Arguments />
                <Username />
                <Password />
                <Param Name="Threads">1</Param>
                <Param Name="Hash">512</Param>
        </Engine>
        <Engine FromMove="-1" FromPieceCount="21">
                <Exe>.\velvet-v8.1.1-x86_64-avx2.exe</Exe>
                <Arguments />
                <Username />
                <Password />
                <Param Name="Threads">1</Param>
                <Param Name="Hash">512</Param>
                <Param Name="Move Overhead">300</Param>
                <Param Name="Style">Risky</Param>
         </Engine>
         <Engine FromMove="-1" FromPieceCount="12">
                 <Exe>.\velvet-v8.1.1-x86_64-avx2.exe</Exe>
                 <Arguments />
                 <Username />
                 <Password />
                 <Param Name="Threads">1</Param>
                 <Param Name="Hash">512</Param>
                 <Param Name="Move Overhead">300</Param>
         </Engine>
</ChimeraUciConfig>

 

 

4) In the <Exe>-lines, you have to change the engine-names to the exact name of the downloaded engine-files of Patricia and Velvet, if necessary. If you want, you can change the 2 piece-switch limits, where Cerberus switches to the next engine (21 and 12), too (FromPieceCount="21", FromPieceCount="12"). If you do so, I recommend to change the <Name>Cerberus 21124081r81</Name> line too, to the new piece-switch limits...
And you can change the engine settings like Threads, Hash or you can add Syzygy Path or so, then save the .xml file

 

5) Start the Cerberus.exe with doubleclick in console-mode, to check, if Cerberus is working. Cerberus should print out the three installed engines and the piece-switch limit. (Velvet 8.1.1 is displayed twice, because the two Velvets (Style Risky, Style Normal) do not print this setting, so they look similar, but they are not, if you have done everything right...)

 

6) Now, Cerberus can be used in any (?) GUI. I tried Cutechess-cli, Cutechess GUI, Arena, Fritz. Mention, a MultiPV analysis mode does not exist, because Eman Chimera does not support this feature.

 

7) It is possible to use other engines in Cerberus (and use only 2 engines, instead of 3) by changing the .xml file. For any advanced computerchess-user, this should be self-explaining...
BUT: Not all engines work properly in Cerberus/Eman Chimera. Revenge 1 for example: Revenge 1 runs, but is not 100% deleted out of PC-memory, when Cerberus switches to the next engine. It is recommended to check the PC-memory with the Windows Task-Manager, while Cerberus plays a game, when you use other engines than Patricia 4 and Velvet 8.1.1.