ZOE retouched

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Roland Chastain
Posts: 657
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

ZOE retouched

Post by Roland Chastain »

Hello everybody!

ZOE (Zoe Opponent Engine) is a nice program (IMHO) written in C by James Stanley. It works perfectly in XBoard, but has no time management and plays at fixed depth, which can be an issue when you wish to include it in an engines tournament.

As an exercise, I started to study the source code and try to implement a time management. It is not yet done, but I already found a temporary solution that consists of adjusting the search depth at compile time, like this:

Code: Select all

make -e SEARCHDEPTH=5
There is a version 0.1, by Jim Ablett, with time management, but I didn't want want to copy Jim's modifications without understanding them, so I preferred to start from the original version.

In case someone is interested, source code and Linux binaries are here. (I don't have a Windows machine under the hand.)

ZOE used to always lose at time in my tournament. Now it behaves not bad! I was so glad that I made a logo. :)

Regards.

Roland
Qui trop embrasse mal étreint.
User avatar
Roland Chastain
Posts: 657
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

Re: ZOE retouched

Post by Roland Chastain »

If someone wonders what is the approximate strength of the engine, here are the result of the tournaments that I have made last days (cutechess-cli, tc=40/60).

Code: Select all

Rank Name                    Elo    +    - games score oppo. draws 
   1 Stash 7.0               963  120  103    32   81%   739   25% 
   2 Cassandre 0.24 RC       874   54   53    96   57%   831   46% 
   3 Nero 6.0.01             857  103  102    32   52%   847   16% 
   4 Minimal Chess 0.2       846   41   41   224   58%   776   12% 
   5 Sachy 0.2.05            839   37   37   224   57%   792   33% 
   6 Iota 0.1                828   40   40   192   54%   794   36% 
   7 Stash 6.0               824   67   67    64   52%   811   41% 
   8 Gumble 4723fd2          823  104   96    32   73%   654   41% 
   9 Stash 5.0               752   37   37   224   48%   757   34% 
  10 Fimbulwinter 5.05 JA    733   47   47   160   48%   748   19% 
  11 Stash 3.0               707   47   47   160   56%   661   29% 
  12 ZOE 0.2 RC [depth 5]    681   34   34   352   68%   506   24% 
  13 Stash 4.0               674   46   45   160   53%   636   33% 
  14 GiuChess 1.0            655   82   81    48   52%   639   33% 
  15 Vanilla Chess 2.6       552   47   46   224   65%   404    3% 
  16 Cassandre 0.26.01       517  124  127    16   44%   559   63% 
  17 Monchester 1.0          485   51   54   144   33%   619   18% 
  18 Hippocampe 0.4.2.02     453   43   45   208   30%   613   19% 
  19 Moustique 0.3.1         448  124  135    16   28%   576   56% 
  20 TuxedoCat 0.0.2         421   51   52   128   41%   497   34% 
  21 Alouette 0.1.6          343   27   27   448   57%   304   35% 
  22 Alouette 0.1.1          333   29   29   336   57%   297   49% 
  23 Durandal 0.1.0          278   29   29   336   46%   311   46% 
  24 Luciole 0.0.6           255   31   31   304   46%   281   44% 
  25 NEG 1.3                 195   32   32   304   37%   279   36% 
  26 ZOE 0.1 JA              138   27   26   416   61%    84   48% 
  27 ZOE 0.1 JA 32-bit       115   26   26   464   52%   131   46% 
  28 Kitty                    82   28   28   336   52%    67   53% 
  29 Ram 2.0                   6   27   27   368   36%    89   56% 
  30 Alouette 0.1.5 Random     0   26   26   432   30%   151   56% 
As you can see, the time management of the version 0.1 doesn't seem to be very efficient. :|
Qui trop embrasse mal étreint.
User avatar
Roland Chastain
Posts: 657
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

ZOE 0.3

Post by Roland Chastain »

ZOE 0.3 is available.

It has an experimental (and very imperfect) time control.

I didn't yet find how to exit the search quickly without altering the result. Currently the time control is done only before starting search at higher depth. It's too rare. I made it work (in my test conditions) by dividing the movetime. :?

Some results:

Code: Select all

Rank Name                    Elo    +    - games score oppo. draws 
   1 Stash 14.0             1409  179  144    24   83%  1081    0% 
   2 Little Wing 0.3.0      1341  160  138    24   75%  1104    0% 
   3 ZOE 0.3                 979   78   72    96   73%   734   15% 
   4 Stash 6.0               924  104  104    46   50%   900   17% 
   5 Little Wing 0.2.0       910  221  189    10   85%   527   30% 
   6 Monchester 1.0          793  132  126    22   64%   641   18% 
   7 ZOE 0.2 Depth_4         760   65   64   118   71%   492   18% 
   8 Hippocampe 0.4.0.2      752   74   73    82   63%   599   11% 
   9 ZOE 0.2                 685  154  145    22   70%   471    5% 
  10 Aquilon 0.0.6           653   72   74    82   49%   626   15% 
  11 Faile 0.6               651  183  190    12   54%   572    8% 
  12 ZOE 0.1a                619   75   75   102   65%   423   10% 
  13 NEG 1.3                 333   88   90    76   40%   436    4% 
  14 ChessPuter r20211223    195  187  250    16   13%   570    0% 
  15 Vanilla Chess 2.6       191  119  162    72    6%   733    0% 
  16 ZOE 0.1                  54  122  132    32   19%   428   25% 
  17 Alouette 0.1.7 Random     0   95  111    92    5%   572   11% 
Suggestions welcome for improving the the time control.

It's a very nice C program. It works very well. With a better time control it could make an interesting engine.

P.-S. All the versions of the program play illegal moves from time to time ! I didn't yet investigate that. :?
Qui trop embrasse mal étreint.