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.
Most of the algorithms are based on the result of statistic analysis of the game of chess. For that, 3.5 milion games were analysed.
I started working on a more regular brute force version called DeepBrutePos.
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".
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%).
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)
Please report all bugs/traps/etc. to email@example.com. If possible, include a
screendump and/or the logfile (start with '--logfile filename.log').|
Lines of code: loc.png.
There's an announcement- and discussion mailinglist on which new versions of POS and other things related to chess will be announced.|
Send an e-mail to firstname.lastname@example.org with in the subject 'subscribe chess' to subscribe.
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).
|2008-12-29||1.20||performance optimalisations, new algorithm, fixed pgn output, repeating moves detection improved|
|2008-03-25||1.18||made slightly faster and a little more using other processor(s), added new algorithm, improved some of the older|
|2008-02-13||1.17||added new algorithm, improved some of the older|
|2007-11-07||1.16||added more generic chess knowledge, fixed some bugs in old code, added UCI support|
|2007-11-01||1.15||added more generic chess knowledge, fixed some bugs in old code|
|2007-04-30||1.14||fixed a number of critical bugs that badly unfluenced the game play|
|2007-02-28||1.13||algorithm improvements and bugfixes|
|2007-01-20||1.12||xboard(/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-07||1.10||now really only commercials are displayed when on (f)ics, algorithm improvements|
|2006-10-01||1.9||added PGN-output (--pgnfile), less popups (hopefully), algorithm improvements|
|2006-09-27||1.8||some 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-26||1.7||fixed detection of move repetition, fixed important bug in move selection, other algorithm improvements|
|2006-09-26||1.6||console-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-22||1.5||algorithms improvements, fixed castling/promotion when interfacing via icsDrone (v1.5.0)|
|2006-09-18||1.4||algorithms improvements, fixed history evaluation (for preventing repetitive moves), one can now select with what color to play in console mode|
|2006-09-16||1.3||fixed castling bug: pos would even allow castling when fields d and f are under attack, enhanced move selection|
|2006-09-15||1.2||pos 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-07||1.1||pos would do castling when it was check, that is not correct|
|2006-09-06||1.0||"en passant" finally works!|
|2006-09-06||0.1||first release - does not support "en passant" yet|
|2006-08-29||around(!) this date development started||
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 at 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!
Tournaments in which POS hopefully will participate one day
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:
Dutch engines for which I did not find the website
|the King||Johan de Koning|
|Maxima||Hof and Hajeweit|
|Praetorian||Sander de Zoete|
|Schaakprogramma v1.0||Lennart Benschop|
|Xinix||Tony van Roon-Werten|
Two other engines I wrote (also very much experimental and not bug-free):
Other interesting chess programs
|pullchess 0.2i||the only program from which pos version 0.20 occasionally wins|
|Nedap/Groenendaal ES3B voting computer||some people succeeded in converting a voting computer system into something that plays chess! (the software used is an adapted version of TSCP)|
|MicroChess||the first Chess program for a homecomputer: 924 bytes!|
|KnightCap||runs 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.|
|DeepBlue||the first machine to win a chess game against a reigning world champion (Garry Kasparov) under regular time controls.|
|Rybka||according to a wikipedia article currently (March 14, 2008) the strongest chess program.|
|the distributed chess project||tries to create one giant chess playing computer by connecting lots of pcs running a screensaver.|
|ChessBrain||another distributed chess engine: "ChessBrain is a virtual chess supercomputer using the processing power of Internet connected machines.".|
|P.ConNerS||P.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.|
|YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.|