Cuteswiss automates the process of running a continuous pseudo-swiss tournament between any number of engines, using cutechess-cli tool by Ilari Pihlajisto and Arto Jonsson. During the tournament it's always possible to add or remove engines on-the-fly, by just editing the engines.json reference file read by cutechess.cli.
Basic flow
Cuteswiss reads the engines list: these are the available players. Then it matches the games found in the tournament PGN file with available players, selecting the player with the least games played (randomly choosing in case of tie) and finding an optimal opponent from those that never played it: the one with the least games and, in case of a tie, the one with the closest % score, thus simulating a simple swiss pairing. There's no need to calculate complex pairings involving colors since engine matches (usually) consist of two games with reversed colors. Finally, a batch file suited to cutechess-cli is created.
Running a batch
The example batch file (go.bat) allows to run an automated "endless" tournament. Here is it with a few notes:
Code: Select all
:start
cutiswiss -m test_tourney.pgn // launches the tool (-m = mute)
call playmatch.bat // calls the batch file created with the tool
blat - -body "Best regards, Cutiswiss." -attacht test_tourney.pgn -to your@email.com -subject "Cutiswiss update" -server your.mail.server.com -f you@your.mailserver.com
// blat is a tool to send an e-mail after a mini-match between 2 engines is finished (for very maniac directors - like me :)
@goto start // cycle
Automatic gauntlet for new engines
This is a very practical feature. If your tournament is running and x rounds have been played, adding a new engine to the json list automatically produces a gauntlet, since the new engine has to play x games to match the minimum number of games played by all other ones. By default, an engine with 0 games played has given a 50% score, so it will be matched first with a mid-range engine, then approaching its "natural" opponents by simply matching its percentage score, like a dicotomic search. This way, there's no need to know the strenght of the new engine to set up an adeguate opposition: it will be reached automatically.
Parameters
Most cutechess-cli options are controlled by Cuteswiss parameters, like time control, number of games and so on. Type cuteswiss -h for a detailed list.
The zip archive
The archive contains the following files:
cuteswiss.exe = This tool
cuteswiss.dpr = Delphi source code
cuteswiss_license.txt = GNU license
test_tourney.pgn = Example PGN where our tournament will be saved - Note: the file can't be empty; just a newline is OK.
go.bat = Example batch to run an automatic tournament
engines.json = Example engines file for cutechess-cli
opening.pgn = Example PGN with one starting position
blat.* = Utility to send e-mails via batch (warning: not working with SSL, so Gmail can't be used), by Pedro Mendes and Mark Neal
cutechess* & QtCore4.dll = The tool actually playing the games, by Ilari Pihlajisto and Arto Jonsson
Disclaimer
The tool has been tested for a while, but bugs are always hidden in almost all programs; the author is not responsible for anything bad could occur

I hope you can find useful this tool. Please report bugs and comments.
Download Cuteswiss from here: http://e4e6.com
Thanx, Alex