logo (C) www.swampwood.nl

POS - An experimental chess program

What is it?

It's an experimental chess program (written in Java): not experimental because of the bugs (if any), but because of the algorithms used. Not one based on the shannon-algorithm, but several others. And, the most important one; it is not brute force.
Pos currently (version 1.18) consists of 65 algorithms. Which one is used, is determined via a genetic (evolutionary) algorithm.

'Pos'?

Pos is more or less short for Poseidon, the Greek god of horses (and a few other things).

How to run it?

In your webbrowser

Follow this link.

In a terminal

When using the SUN Java 6.0 runtime environment, start it with "java -Xmx384M -jar pos.jar --io-mode console".

Xboard/WinBoard

The program should now fully support xboard/winboard. Start it with commandline "java -Xmx384M -jar pos.jar --io-mode xboard".

UCI compatible board

Pos as been verified to run with Arena 1.1 (windows), ChessPartner 5.4 (windows), Shredder classic 3 and Knights 0.6 (UNIX). I had troubles getting it to work with Fritz 10 and Jose 1.4.4.
Start it with: "java -Xmx384M -jar pos.jar --io-mode uci".

Play against it at www.FreeChess.org

Pos is playing on freechess.org with accountname 'fjjvh'. Please play lots (rated) games against it!
One can find here a graph with the Elo-rating of POS. Click here for blitz games, click here for standard games.
2007-10-16: Pos played its 50000th match on freechess.org! It started playing Fri Sep 22, 06:32 PDT 2006 so it reached this in 389 days which gives on average 129 games played per day!
2008-02-25: 57616 matches by 1858 different players (on average 31 matches per player) in 522 days (110.4 per day). One specific player played 15141 of them, that is 26.28% (playing on average at 16:27)! Most busiest moments: 2006-11-21 (1184 matches), tuesday (9974 - 17.3%), August (9177 - 15.9%), 21th of the month (2751 - 4.8%), 21:00-21:59 (3808 - 6.6%).

Strength

The version of 2007-10-21 hoovers around an elo-rating of 450. When it plays against a "random move mover chess engine" it loses 8% of the 525 games (compare this to GNUChess 5.07 loosing none in 580 games). Version 1.18 loses 3% of 100 games played against a random mover.
Since version 0.17, Pos started to win occasionally! In the examples section you'll find a match played against Pulchess v0.2i.
2008-03-25: version 1.18 occasionally wins from GNUChess! (sadly later on I found out that gnuchess was running in dumbed down mode)

Download

Please report all bugs/traps/etc. to folkert@vanheusden.com. If possible, include a screendump and/or the logfile (start with '--logfile filename.log').

Download link:
pos-bin-1.20.jar
pos-linux-x64-1.20.tar.bz2 (Linux 64bit binary)
pos-1.20.zip (windows .exe)
Previous releases:
pos-bin-1.18.jar
pos-bin-1.18.exe (windows .exe)
pos-bin-1.17.jar (windows .exe)
pos-bin-1.17.exe (windows .exe)
pos-bin-1.16.jar
pos-bin-1.16.exe (windows .exe)
Lines of code: loc.png.

Mailinglist:

An announcement- and discussion mailinglist has been started on which new versions of POS and other things related to chess will be written.
Send an e-mail to minimalist@vanheusden.com with in the subject 'subscribe chess' to subscribe.

Screenshots

screenshot

Example

Autoplay was used to let the two engines play autonomous against each other (without the need of an X11 (X-windows) environment which is required when using xboard).
All games before 1.16 were played on a Pentium 3 with 896MB of RAM, since 1.16 an Intel Core2Duo E6600 (2.4GHz) with 2GB ram was used. The opponent engine was always started without the bare minimum commandline parameters (e.g. only what is needed to select X-board mode). Pondering was enabled (if available in opponent) as well as random. POS always played with white (to give it that 33% bigger chance of winning).
opponentlogfilePGN filePOS versionresult
GNUChess v5.07linklink1.18won (crippled version
of gnu chess)
Pulchess v0.2ilinklink1.18alphawon!
GNUChess v5.07link1.16lost
GNUChess v5.07linklink1.14lost
Xadreco v5.6linklink1.14lost
Fritz10link1.14betalost
CPP1 20060805link (only second game)link1.14betawon
Crafty v20.14linklink1.11prelost
GNUChess v5.07linklink1.9lost
Sjeng v11.2linklink1.9lost

News

2008-12-291.20performance optimalisations, new algorithm, fixed pgn output, repeating moves detection improved
2008-03-251.18made slightly faster and a little more using other processor(s), added new algorithm, improved some of the older
2008-02-131.17added new algorithm, improved some of the older
2007-11-071.16added more generic chess knowledge, fixed some bugs in old code, added UCI support
2007-11-011.15added more generic chess knowledge, fixed some bugs in old code
2007-04-301.14fixed a number of critical bugs that badly unfluenced the game play
2007-02-281.13algorithm improvements and bugfixes
2007-01-201.12xboard(/winboard) mode now handles promotion to other then queen, now accepts short annotations in x/winboard mode (for greater compatibility with boards), fixed pgn output (dates were incorrect), algorithm improvements
2006-10-071.10now really only commercials are displayed when on (f)ics, algorithm improvements
2006-10-011.9added PGN-output (--pgnfile), less popups (hopefully), algorithm improvements
2006-09-271.8some algorithms improvements and hopefully finally fixed the castling bug, also fixed a problem in xboard mode where the pawn-promotion destination object type was sent incorrectly for knight
2006-09-261.7fixed detection of move repetition, fixed important bug in move selection, other algorithm improvements
2006-09-261.6console-mode did not log to the logfile, in xboard-mode the object-type to promote to was not send to xboard, Pos would ignore that field d1/8 or f1/8 are under attack when castling
2006-09-221.5algorithms improvements, fixed castling/promotion when interfacing via icsDrone (v1.5.0)
2006-09-181.4algorithms improvements, fixed history evaluation (for preventing repetitive moves), one can now select with what color to play in console mode
2006-09-161.3fixed castling bug: pos would even allow castling when fields d and f are under attack, enhanced move selection
2006-09-151.2pos worked correctly with xboard, but it did not emit moves as specified in the xboard protocol specs, "edit-mode" did not work (xboard mode), started on infrastructure for move selection. yes, the one upto and including version 1.1 is not the final one: it is only the beginning in fact, improved pawn moves generator
2006-09-071.1pos would do castling when it was check, that is not correct
2006-09-061.0"en passant" finally works!
2006-09-060.1first release - does not support "en passant" yet
2006-08-29around(!) this date development started

Miscellaneous

I think it was around 1986 when I got intrigued by the game of chess and in particular chess on a computer. One of my best friends in that time (who unfortunately passed away) showed me a chess program on his MSX home-computer. I was amazed. I had such a computer too and one day I brought it with me and we let the two computers play against each other. It took hours (3.5MHz!) and, if memory serves me well, black won. I'm not entirely sure (my memory of that time is a little fuzzy) but I think it was Ultra chess by Aackosoft which got it all started.
Update: the brother of my chess-friend confirmed that it was indeed Ultra chess!

Links

Tournaments in which POS hopefully will participate one day

 CSVN Open Dutch (old site), I'm planning to participate in their 2009 match
 WBEC Ridderkerk
 Le Système du Suiss
 Chess War
 Karl-Heinz Sontges

Tools/documentation used while developing POS:

 I used this book to learn Java while developing this application.
 VIM its syntax highlighting makes quickly navigating through the sources so much easier
 lint4j a static Java source and byte code analyzer that detects locking and threading issues, performance and scalability problems, and checks complex contracts such as Java serialization by performing type, data flow, and lock graph analysis
 jlint checks Java code and find bugs, inconsistencies and synchronization problems by doing data flow analysis and building the lock graph
 ProGuard is a free Java class file shrinker, optimizer, and obfuscator
 Autoplay - with autoplay, one can let Pos play automatically without user intervention with an other chess engine which speaks the XBoard/WinBoard protocol

Other Dutch chess engines:

?Maarten LoöfflerJavaown interface
weggeefschaakKlaas Steenhuis(Commodore 64)own interface
AntTom VijlbriefWin32own interface
The BaronRichard PijlWin32/LinuxWin-/Xboard/UCI
BikJumpAart J.C. BikWin32+64/MacOS/LinuxUCI
BrightChessAllard SiemelinkWin32UCI
BrutusStefan VermeireWin/sourceWinboard
DiepVincent DiepeveenWin32own interface
DreamChessWalter van NiftrikWin32/MacOS/LinuxWin-/Xboard
Frank-WalterLaurens WinkelhagenJava?
FritzFrans MorschWin32UCI
GambitVBWillem RensWin32own interface
GKTijs van DamsourceWin-/Xboard
JsBamBert van den BoschWin32Winboard/UCI?
micro-Max / Joker / N.E.G.H.G. MullersourceWinboard
MiniMasterRobbert PrinsWin32own interface
MSCP/RookieMarcel van Kervinck
Neurosis (and S-chess)Stan ArtsWin32own interface
NullMoverMichel Langeveld and Jos Timmer
PixelpusherHans BodlaenderJavaown interface
Pro Deo and RebelEd SchröderWin32
QueenLeen AmmeraalWin32own interface/Winboard/UCI
RBrChessRoger BroertjesWin32Winboard
RotorJan BrouwerWin32UCI
SpiderChessMartin GiepmansWin32own interface
TjesMarcel Nijman
WingStef LuijtenWin32Winboard
zzzzzzGijsbert WiesenekkerWin32/sourceown interface

Dutch engines for which I did not find the website

AnatoliMartin Giepmans
ArthurWalter Ravenek
CelesJohan Hutting
JanWillemLaurens Winkelhagen
the KingJohan de Koning
LCHESSLex Loep
MaximaHof and Hajeweit
MorphyEric Walstra
PraetorianSander de Zoete
Schaakprogramma v1.0Lennart Benschop
TaoBas Hamstra
XinixTony van Roon-Werten

Two other engines I wrote (also very much experimental and not bug-free):

 bullucks
 cpp1

Other interesting chess programs

pullchess 0.2ithe only program from which pos version 0.20 occasionally wins
Nedap/Groenendaal ES3B voting computersome people succeeded in converting a voting computer system into something that plays chess! (the software used is an adapted version of TSCP)
MicroChessthe first Chess program for a homecomputer: 924 bytes!
KnightCapruns on UNIX systems with multiple processors (it was designed for a Fujitsu AP1000+ parallel computer). The interesting part is that it uses temporal difference learning. For more info one can also check the wikipedia article.
DeepBluethe first machine to win a chess game against a reigning world champion (Garry Kasparov) under regular time controls.
Rybkaaccording to a wikipedia article currently (March 14, 2008) the strongest chess program.
the distributed chess projecttries to create one giant chess playing computer by connecting lots of pcs running a screensaver.
ChessBrainanother distributed chess engine: "ChessBrain is a virtual chess supercomputer using the processing power of Internet connected machines.".
P.ConNerSP.ConNerS is a pure test vehicle for experiments in the fields of selective game tree search and parallel computing. P.ConNerS uses a non-conventional, non-alphabeta search algorithm. The search algorithm tries not only to maximize the search depth, but also tries to guarantee that even when one leaf-value changes, the result stays the same. A conspiracy 2 search may be interpreted as a special, global arrangement of a lot of so called singular extensions. As a result, it domain-independently searches highly selective and irregular game trees.

Misc.

 I wrote an article on datamining on the game of chess. You can find it here (mining on games played by famous chess players: Hans Bohm, Gary Kasparov).
 The logo was designed by Swampwood.
 Wikipedia article on Pos
 People playing chess on roller coasters