Match - amchess/ShashChess GitHub Wiki
Test an engine against another
The best way is by a match based on a number of starting positions. These positions must be carefully chosen and, for this, we have to have the goal to test the two engines on the highest number of different strategic situations. Because the positions are from opening phase, we considered the following center type's configurations well known in chess literature in a 20 games match. Every position is one of the sharpest for the corresponding characteristics, based on the win probability concept (Caos-Low Tal position: see the readme):
- Caro-Kann
- French
- Dutch
- Sicilian
- Ruy Lopez Example
- King's Indian
- Nimzo Indian
- Queen's Gambit
- Sicilian
Example
- Trompowsky
Example
Those 10 positions are from 100 ones covering perhaps all opening theory, from more general to more specific chess characteristics. We're not interested at all in very short games. For LTC, we built on the formula in an old Fritz program manual:
M = 2 n f t
where
-
M = hash table size in kilobytes
-
n= threads number (real cores for a laptop, logical -2 for desktop pc)
-
f = clock frequence in MegaHertz
-
t= average time for move
So, we didn't get under t = 60 seconds. For a chess game, we consider 30 moves. We used then a standard time control of 30 minutes for each player on a game. The problem in this is the frequent zeitnot problem on the used chess gui (Arena). So, we used a bonus, based on the following formula:
c=t+30b/60=t+b/2.c
where
- c = total time (minutes) for each player without increment
- t = base time in minutes for a game and for each player
- b = the bonus(increment) in seconds,
In our case, so, we have
c=30
and, if we take, for example, t=25,
we have the following equivalence:
a 30 game (active chess) corresponds to a 25/10 game. We think this last is the best time control to test the engine in a match.