Plisk

This is the home of Plisk the chess engine developed by me, Vlad Stamate. I developed this chess engine from scratch as a means to learn chess programming. It is not a clone of any engine out there.

Contact: vlad dot stamate at gmail dot com

History

This is a bit of history of how I came about programming chess and how Plisk came into existence.

ps3chess
I first started chess programming in 2006 on a program called ps3chess. It did not have proper alpha beta search and the evaluation was really bad. Move generation was reaaaaaly slow. Also very buggy.

ps3chess2
That came out of ps3chess when I converted it from C to C++. Some classes still exist in Plisk today. This is also the first time perft actually produced correct numbers.

fastthink
Fastthink was the successor or ps3chess2 and it came about because I started to fully utilize the bitboards I had and started using rotated bitboards for move generation , attack detection, etc. SEE has been added at this version.

Plisk
Plisk is the current version of the chess dynasty. I started working on Plisk in January 2009. The search has been completely re-writen from fastthink and it has very few bugs now. The evaluation has been tweaked and corrected a lot. Mainly, the difference in strength between fastthink and Plisk are to do with the fact that Plisk has very few known bugs.

Features:

- alpha-beta PV prunning search
- quiesce search
- delta prunning in QS
- late move reductions
- null-move
- rotated bitboards
- TT
- futility pruning
- check/promotions extension
- opening book (in own format)
- SEE
- UCI and XBOARD protocol
- pondering

Playing strength


Plisk plays both on FICS and ICC.


   FICS ICC
 Handle plisk
plisk
 Lighting/Bullet 2178
 2238
 Blitz 2113
 2387
 Standard
2175
 2294

Tournament rating websites

 Version Strength
Note
 0.0.8 1951
 Le Fou Numerique
 0.1.0 2019
 Le Fou Numerique
 0.1.1 1800
 RWBC
 0.1.1 1900
 Le Fou Numerique
 0.1.2 1937   Le Fou Numerique
 0.2.4o 2194
 Le Fou Numerique
 0.2.7d2399
 Talkchess.com

Computer Chess rating lists

 Version Strength
 Website
 0.2.5n 2426 CCRL
 0.2.7d 2464  CCRL (40/4)


Tournaments

2010

WCRCC 2010 - http://aigames.net/ACCA/ACCAWCRCC/2010ACCAWCRCC/WCRCCResults.html
OpenWar7 - http://www.open-aurec.com/chesswar/OpenWar/OpenWar07/openwar.htm
ACCA ACCC 2010 - http://compchess.org/ACCAChampionships/ACCA2010Championships/2010ACCCResults.html

Parameters

While Plisk supports both UCI  and XBoard protocols, when run from the command line it supports few more parameters.

Perft

Will produce the perft calculation up to the required depth. It will perform make/unmake at the leaves too.
You can optionally provide a fen string. If none is provided, perft calculation will be performed from the start position

plisk -perft <depth> [fen]

Analysis

Will run tests to see if plisk can find the required best move(s) from the given epd/fen file.

plisk [-quiet|--q] [--t <seconds>] [--d <depth>] [-analyze|--a] <path_to_epd> [start_pos number_of_tests]

-quiet        - will make plisk show stats instead of full analysis. Useful if you want to test plisk against known tests. Omiting -quiet is useful if you want to analyze a given position.
start_pos     - is 0 based, so first position in a file is 0. If the last 2 arguments are missing then the entire file will be tested.
--t <seconds> - means each position will be searched at the given number of seconds. If you pass 0 the search will be infinite.
--d <depth>   - will search each position to a given depth in plys. It is mutually exclusive with the -t option.

Static evaluation

Will produce a static evaluation of the position given in fen format from the side to move point of view.

plisk -evaluate <fen>

Book manipulation

Plisk uses Polyglot books. It can create books from pgn files, merge two Polyglot moves into one, list the available moves (with percentages) for a given position in a book as well as give statistics about books.

plisk -createbook <pgnfile> <halfmoves> <minplayed> <bookfile>

pgnfile   - the file to create the book from
halfmoves - number of half moves from each game to use
minplayed - only use moves if they were played at least that many times
bookfile  - the name of the binary book file as output

plisk -mergebooks <book1> <book2> <mergedbook>

plisk -bookstats <bookfile>

plisk -listmoves <bookfile> <fen>

Test results

 Test name
 Time/Move  0.1.2  0.2.1  0.2.2  0.2.3h  0.2.4o  0.2.5n  0.2.7d*
 WAC  1 sec  262/300  260/300  265/300  265/300  263/300  262/300  273/300
 WCSAC  1 sec  75/100    75/100  75/100  74/100  75/100  76/100
 ECM98
 1 sec  68/100  68/100  69/100  69/100  72/100  71/100  72/100
 PET  1 sec  13/48    12/48  13/48  14/48  14/48  13/48
 EET  1 sec  20/100  29/100  24/100  28/100  25/100  22/100  21/100
 STS 1  10 sec  53/100  58/100  63/100  70/100  64(736)  74(809)  68(752)
 STS 2
 10 sec
 47/100  47/100  61/100  49/100  56(653)  58(691)  60(674)
 STS 3  10 sec  46/100  55/100  57/100  61/100  60(716)  64(729)  64(758)
 STS 4  10 sec  57/100  56/100  62/100  57/100  67(748)  61(712)  61(726)
 STS 5  10 sec  67/100  62/100  66/100  72/100  71(782)  69(772)  70(787)
 STS 6
 10 sec
   59/100  52/100  61/100  63(800)  62(790)  67(824)
 STS 7
 10 sec    51/100  52/100  55/100  61(708)
 62(721)  57(684)
 STS 8
 10 sec    44/100  39/100  37/100  33(520)  35(511)  43(623)
 STS 9
 10 sec    43/100  53/100  47/100  47(607)  51(614)  55(643)
 STS 10
 10 sec    71/766  68/100  74/100  74(813)  73(796)  
 STS 11
 10 sec
           44(604)  
 STS 12
 10 sec            62(542)  
 BRATKO-KOPEK  1 sec  13/24  9/24  12/24  11/24  13/24  13/24  12/24

* - ran with a faster CPU: AMD Phenom II @ 2.6GHz compared to AMD Phenom @ 2.4Ghz for the previous versions.

Versions

0.2.7d -
(11/12/2010) - Win Binaries - Linux Binaries - MacOSX Binaries
- eval from engine's PoV (back as it always used to be)
- updated opening book
- king safety tweaking
- pawn evaluation tweaking
- don't miss PV output when kibitzing
- change mobility eval for Knights, Bishops and Rooks
- some general speed optimizations
- added support for hash size commands in the UCI protocol

0.2.5n - (07/23/2010) - Win Binaries - Linux Binaries - MacOSX Binaries
- reworked king safety
- new move sorting algorithm
- speedups in evaluation
- eval printed from White's point of view

0.2.4o
- (06/17/2010) - Win Binaries - Linux Binaries - MacOSX Binaries
- search improved
- switched book format to Polyglot books
- added Polyglot book management options
- small evaluation changes

0.2.3h -
(05/14/2010) - Win Binaries -
- fixed a bug related to calculating pawn attacks and hashing

0.2.3
- (05/13/2010) - Win Binaries -
- improved king safety (pre-castle) evaluation
- fixed a mate and pondering bug
- enabled futility pruning
- tweaks and improvements in passed pawns evaluation

0.2.2 -
(05/03/2010) - Win Binaries - Linux Binaries
- fixed bugs in passed pawns and isolani pawns eval and hashing
- improved king safety evaluation
- added ponder

0.2.1 -
(04/21/2010) - Win Binaries - Linux Binaries
- rewritten search
- added working TT
- rewritten evaluation
- bug fixes - lots of them

0.1.2 - (08/20/2009) - Win Binaries - Linux Binaries

- fixed a bug when selecting a move from OpeningBook could cause it to select an invalid move.
- when only 1 legal move, do not search(if in root), just return it
- lower the weak rank penalty
- bonus for minor pieces attacking isolani pawns
- fixed receiving multiple moves in force mode under xboard protocol
- have a move prepareSort function that is for QS only
- reworked piece mobility
- tweaks to timing code
- penalty for trapped rook by the king who moved
- bonus if the passed pawn is not isolani

0.1.1

- added stats printout when analyzing positions
- new analysis output when specifing -analyze
- new parameter (-d <depth>) forces analysis to only go to a certain depth
- do not do SEE if the pawn is the capturing piece
- fixed a bug with not detecting pawn moves from opponent for verifying the 5-move rule.
- reworked king's pawn shield evaluation
- added extension for when entering a pawn-only endgame
- added initial pawn-only eval: just king vs passers for now
- doubled up pawns as passers evaluated differently

0.1.0

- fixed a bug in UCI protocol to do with promotion moves

0.0.9

- evaluation values tweaks
- LMR tweaks
- killer moves now indexed by ply not by depth
- fixed futility prunning conditions
- order good captures by MVV/LVA (and other changes in move ordering)
- added a sleep while polling for input

0.0.8

- improved king safety in mid game
- weak back rank for king detection
- corrected analysis reporting
- generate king moves last, but castling first
- fixed xboard protocol for when playing -scp and black
- fixed pinned pieces detection
- fixed end game draw chance evaluation
- added a -t parameter to analysis

0.0.7


- corrected SEE function
- added hash move in move ordering
- fixed some xboard protocol bugs
- improved king safety code
- fixed some pawn evaluation terms (passed pawns and islands)
- add LINUX binary (32bit compile)

myspace web counter
web counter code
ċ
plisk-021.zip
(447k)
Vlad Stamate,
Apr 4, 2010, 9:16 PM
ċ
plisk_0.1.2_linux.zip
(337k)
Vlad Stamate,
Aug 20, 2009, 10:30 AM
ċ
plisk_0.1.2_win.zip
(391k)
Vlad Stamate,
Aug 20, 2009, 8:57 AM
ċ
plisk_0.2.3.zip
(479k)
Vlad Stamate,
May 13, 2010, 10:30 AM
ċ
plisk_0.2.5.zip
(309k)
Vlad Stamate,
Jul 23, 2010, 10:15 AM
ċ
plisk_0.2.5_linux.zip
(211k)
Vlad Stamate,
Jul 23, 2010, 10:19 AM
ċ
plisk_0.2.5_osx.zip
(327k)
Vlad Stamate,
Jul 24, 2010, 9:56 AM
ċ
plisk_0.2.6.zip
(311k)
Vlad Stamate,
Aug 3, 2010, 9:59 AM
ċ
plisk_021.tar.gz
(398k)
Vlad Stamate,
Apr 5, 2010, 2:05 PM
ċ
plisk_022.tar.gz
(405k)
Vlad Stamate,
May 3, 2010, 12:35 PM
ċ
plisk_022.zip
(485k)
Vlad Stamate,
May 3, 2010, 10:56 AM
ċ
plisk_023h.zip
(485k)
Vlad Stamate,
May 14, 2010, 2:27 PM
ċ
plisk_024o.zip
(303k)
Vlad Stamate,
Jun 17, 2010, 10:24 AM
ċ
plisk_024o_linux.zip
(207k)
Vlad Stamate,
Jun 17, 2010, 10:26 AM
ċ
plisk_024o_osx.zip
(196k)
Vlad Stamate,
Jun 17, 2010, 10:25 AM
ċ
plisk_027_d_linux.zip
(214k)
Vlad Stamate,
Nov 12, 2010, 12:07 PM
ċ
plisk_027_d_osx.zip
(202k)
Vlad Stamate,
Nov 12, 2010, 12:07 PM
ċ
plisk_027_d_win.zip
(313k)
Vlad Stamate,
Nov 12, 2010, 12:06 PM
Comments