Chess computer programming
Keep in mind: Chess computer programming is not the art of programming, it is the art of debugging.Rainman chess
Rainman chess is the name of a chess computer I wrote as a spare time project. The name
is due to the social nature of the chess computer. The software is
written in C++ and the source code will be available when I am no
longer embarrased about its appearance. The graphical interface is Winboard. Rainman is
also up and running at FICS
(free internet chess server) under the name of
RainmanC (written Aug 2003). My user name there is joppe.
|
|
Downloads (win32)
- Rainman v0.7.5 (25 July,
2003) Minor update, added support for .ini-files and configuration
of e.g. hash tables sizes.
- Rainman v0.7.3 (22 July,
2003) Added transposition tables, MTD(f) search, new alpha-beta,
support for Nalimov end game tables (EGTB), enhanced transposition cutoff,
refined killer move strategy, edit mode, FICS rating: about 1975.
- Rainman v0.6.0 (28 January,
2003) Added king's safety, development, rudimentary quiescence search
and a number of minor fixes for stability, FICS rating: about 1875.
- Rainman v0.5.4 (27 December,
2002) Added pawn structure assessment to the evaluation, FICS
rating: about 1800.
- Rainman
v0.5.3 (5 December, 2002) New and improved. Added incremental
mobility assessment, rudimentary move ordering and experimental
quiescence evaluation estimator. Implemented chess clock. Acceptable
playing quality with some exceptions, ~100 knodes/s, FICS rating:
about 1650.
- Rainman v0.4.2 (19 november, 2002) First version. Naive implementation of data structures, alpha-beta pruning with iterative deepening, small opening book. Poor playing quality, ~30 knodes/s, FICS rating: about 1400.
Work in progress
Below is the current status on the work in progress (Rainman v0.7.x). Test runs suggest that v0.7 will lose only one game in ten to v0.6 (there are some draws in there too).- Transposition tables (completed)
- Alpha-beta pruning rewrite, with hash (completed)
- Endgame table databases, Nalimov egtb (completed)
- MTD(f) search implementation (completed)
- MTD(f) experiments using binary search and/or step increment (implemented but not in use)
- Reuse of the alpha-beta bounds returned by MTD(f) when depth was not finished (implemented but not in use)
- Ponder (thinking on the opponent's time)
- Aspiration window at MTD(f) first iteration
- History heuristic, null move heuristic and other move ordering
- More intelligent quiescence search than checks only: recapture, threats on major pieces
- Search extentions (sex search) and variable cost per move in a tree path: 1/n smaller cost for principal variation => n + 1 depth for main principal variation
- Internal iterative deepening (unseen nodes)
- Futility pruning
Web resources
Tim Manns web pages for Winboard/XBoardAlgorithms for chess computer programming