Engine descriptions

PyTuroChamp is closest to the chess engine in Turing’s paper, but adds optional piece-square tables that can be tuned with the PSTAB parameter. A higher parameter means more aggressive forward movement. With PSTAB = 0, 1. e3 is favored like Turing’s algorithm would. Whereas with PSTAB = 2, 1. e4 is played as in the TUROCHAMP—Glennie game.

Bare and Newt are two variants based on the PyTuroChamp code: Bare removes the Turing heuristics and quiescence search and only contains the bare minimum a chess engine needs to play: alpha-beta search and a piece-square table. Newt also does not use the Turing heuristics and adds newer chess programming techniques such as PV-based iterative deepening and an opening book (which unlike a normal opening book contains both good and bad openings). It is faster than the other two engines at the same search depth, offers more variety during the opening, and has time management, so it works well for Blitz games.

Plankalkül (1948) by computer pioneer Konrad Zuse is an early chess algorithm only based on material with no positional criteria. (Strictly speaking, Plankalkül is Zuse’s programming language in which his chess algorithm is implemented, but the terms are used interchangeably here.) If no tactics are within its tree search horizon, Plankalkül will play random moves.

Normally Plankalkül would only search one ply deep, but the version here defaults to four plies, at which it is somehwat weaker than PTC at its default settings but a bit stronger than SOMA.

SOMA (the Smith One-Move Analyzer, 1961) was created by British biologist John Maynard Smith as a challenger to Machiavelli, which itself had been developed around the same time as TUROCHAMP. A game (with human-computed moves) between TUROCHAMP and Machiavelli was intended but never took place, but SOMA is very similar to Machiavelli in terms of its algorithm and playing strength, so it can be pitted against PyTuroChamp.

SOMA only looks one ply ahead and uses swap-off values, total material, and square control criteria. While SOMA is a somewhat weaker engine than the other ones, it requires far less than a second to compute a move.

The Bernstein Chess Program (1957) was developed by Alex Bernstein with his colleagues Michael de V. Roberts, Timothy Arbuckle, and Martin Belsky. On an IBM 704, one of the last vacuum tube computers, it searched four plies minimax in around 8 minutes, considering material, mobility, area control, and King defense.

The Bernstein Chess Program was the prototype of a selective forward pruning, Shannon Type B program: For each of four plies, seven plausible moves are selected by certain rules and saved to the plausible move table (PMT). Therefore, up to 7⁴+7³+7²+7 = 2,800 positions will be analyzed, although in practice due to Alpha-Beta the number will be lower.

Shannon (1950) is an implementation of Claude Shannon's ideas from "Programming a Computer for Playing Chess". By default it uses only material and mobility, the pawn rules are disabled because they are computationally expensive and do not lead to much better results.

Simple Adaptive Engine by default uses Stockfish to examine the five best moves in a position for three seconds and then picks the one closest to an evaluation of one pawn in favor of the player. It therefore adapts to different playing strengths.

El Ajedrecista (1912) is an automaton built by Leonardo Torres y Quevedo, one of the first autonomous machines capable of playing chess. It played an endgame with three chess pieces, automatically moving a White King and a Rook to checkmate the Black King moved by a human opponent.

El Ajedrecista needs to play as White! (With Black, it will play random moves to enable self play.)

The starting position should be set up with White’s King and Rook on A8 and B7, respectively, while the Black King can be positioned anywhere on the first six ranks:

A valid Torres starting position

PTC-Host lets you easily host games between the three engines directly from Python, without the need for a separate chess GUI.

Options for boosting program performance include PyPy and (for PyTuroChamp) running the multi-core version. Note that the multi-core version of PyTuroChamp only works on macOS and Linux but not on Windows. It is also possible to combine PyPy and multi-core.

Differences between PyTuroChamp (PTC) and Turing’s Paper Machine (TPM)

Material is evaluated as White minus Black by PTC, while Turing preferred White divided by Black. Support for the latter is present in the code, but using the common approach of W-B means that the evaluation can be more easily compared to other engines. And in most situations, the choice between W-B and W/B does not influence the move chosen.

Move ordering is used by the engine to speed up search. This was not specified in the TPM, but humans also have a tendency to e.g. consider a queen or rook move before a pawn move, so move ordering might be said to be implicit in the way humans play the game. I.e., Turing first calculated moves that “looked good” to him and only later checked that all other moves were worse.

An optional piece-square table (PST) was added, so e.g. PTC will keep its king and queen on the back rank and advance its pawns. Without a PST, TPM has a tendency to e.g. move its queen all over the board during the opening repeatedly and generally not advance its pawns very much. Turing, had he implemented his TPM on a computer, might have noticed these problems and implemented something analogous to a PST. (The fact that PTC play 1. e3 whereas TUROCHAMP plays 1. e4 may be considered a justification for the need for a PST.)