Deuterium Chess Engine

by Ferdinand Mosca

last modified: 11 July 2006

Download:

Deuterium 06.06.23.04 with small opening books

 
Info from the readme:

Deuterium Documentation
readme.txt Version 06.06.23.04
July 2, 2006
fsmosca2004@yahoo.com

Contents:
A. Introduction
B. Acknowledgement
C. Distribution files
D. Engine Internal Features
E. Engine Development History
F. Basic Engine Capability Features
G. Engine books
H. Book Learning
I. Auto saving of games
J. Commands
K. To do lists
L. Contacts/email

A. Introduction
Deuterium is a chess engine that is based on a popular chess program
TSCP by Tom Kerrigan. TSCP stands for Tom's Simple Chess Program.
You can use Deuterium as an engine to run on a Graphical User
Interface (GUI). An excellent free chess GUI called winboard developed by
Tim Mann can be used to play a game. This GUI can be found at
http://www.tim-mann.org/chess.html. Another chess GUI called Arena
by Martin Blume can be found at http://www.playwitharena.com.

B. Acknowledgement
1. Tom Kerrigan    – the author of TSCP from where Deuterium
   is based, thanks for the permission.  
2. Dieter Buersner – gives me ideas on the basic concept of how 
   computer plays chess. He is also the author of the strong interesting
   program YACE.
3. Leo Dijksman    - for authoring a great computer chess tournaments and
   hosting Deuterium.
4. Bob Hyatt       – interesting posts at CCC, and the open source code
   of his strong program Crafty, I read crafty source codes from time to time.
5. Dan Corbit	   - his site contains a lot of information about computer
   chess programming, including source codes to study.
6. Bruce Moreland  – excellent web site about comptuter chess programming.
7. Ed Schroder     – very informative and excellent writings about his
   chess engine Rebel, One of my inspirations to study more on chess programming.
8. Tim Mann        – he is responsible for the further development of
   great chess GUI called winboard.
9. Martin Blume    - Developer of a beautiful Chess GUI called Arena.
10. Odd Gunnar Malin - a chess programmer who develops winboard to UCI adapter
   so that winboard engine can run as UCI engine in Chess interface like Chessbase
   GUI and others.
11. All authors of computer chess programing articles.
12. Computer Chess Club - good place to sharpen/broaden computer chess knowledge.
13. Winboard Chess Forum - informative forum about winboard and computer chess,
    including chess tournaments and programming. 
14. All the people who have tried to test and play Deuterium.
15. Deuterium has a logo now, thanks to David Dahlem.
16. All programmers who have shared source codes of their programs.
17. Daniel Shawul - a programmer of chess program Scorpio is responsible in generating
    end game bitbases (egbb) for his program. He also writes the dll and provided some codes
    so that the end game bitbases can be used by other chess engines. Deuterium can now use the
    bitbases, many thanks.
18. Eugene Nalimov - the creator of end game database called end game tablebase(egtb).
    The Bitbases of Daniel Shawul were created from his egtb. 

C. Distribution files:
1. deuterium.exe
2. deuterium.ini
4. readme.txt (the file you are reading now)


D. Basic Program Feature
1. Alpha-beta search
2. Iterative deepening
3. Static evaluation
4. Transposition Hash Tables
5. Killer move heuristics
6. History heuristics
7. PVS search
8. Adaptive Null move pruning with (R=2/3)
9. Quiecense search (captures/checks)
10. Internal Iterative deepening
11. End game bitbases
12. Book creation and book learning
13. Late Move Reduction

E. Engine History   
Version 1.0
1. Added aspiration window search
2. Added null move heuristic
3. Added recapture, 7th rank pawn push and ending extensions
4. Able to claim draw due to insufficient material
5. Added feature to resign when the score of the last 3
   moves is less than or equal to -700 (7 pawns)
6. Added Killer moves for move ordering
7. Modify history heuristics
8. Improve static evaluation
9. Improve time control handling for conventional and
   incremental time controls.
10. Provided 4 books to use, 2 for white (wsmall.dbk & wbig.dbk),
   and 2 for black (bsmall.dbk & bbig.dbk).
11. Some code optimizations

Version 1.01
1. Fixed a bug where the engine can not play more than
   one game in a series of games under winboard when
   either one of the 4 books is missing.
2. Fixed a minor bug in pawn evaluation.
3. Added knight outposts in evaluation.
4. Rewrite king evaluation codes
5. Small opening books are updated (wsmall.dbk and bsmall.dbk)
6. Remove "update.txt" and use only "readme.txt" as information source.

Version 1.02
1. Fixed a couple of bugs at evaluation functions
2. Added bishop and rook mobility
3. Modify aspiration window search scheme
4. Updated small books (wsmall.dbk and bsmall.dbk)
5. Modify resign code
6. Some tweaks to king evaluation
 
Version 04.01.04.18
notes on new version numbering system:
04 -- last 2 digit of the year this version is released, (year 2004)
01 -- first release on the above year, (1st for 2004)
04 -- total number of releases since the 1st release, (4th overall)
18 -- number of development versions since the last release, (18th since v 1.02)

1. Fixed some bugs in pawn evaluation
2. Improve bishop and rook mobility codes in evaluation function
3. Improve king safety evaluation
4. Added piece mobilities in move ordering
5. Added piece attacks to king in move ordering
6. Added connected passer evaluation
7. Do check extension in qsearch
8. Updated small books (wsmall.dbk and bsmall.dbk)
9. Improve time control handling
10. Optimize some codes
11. Version numbering system changed, to improve readability
   of program version informations for both user and me.  

Version 04.02.05.12
1. Fixed a bug where Deuterium will not accept under promotion
2. Remove piece mobilities in move ordering
3. Remove check extension in qsearch
4. Remove piece attacks to opp king in moveordering
5. Added knowledge on rook-pawn and wrong bishop color ending
6. Added knowledge on rook vs connected passer at 6th rank ending
7. Done some speed up using two attack functions
8. Is able to play more than 200 moves
Major Tournament Result Achievement:
1st in Division 6 of Edition 7 done by Leo Dijksman

Version 04.03.06.68
1. Fixed a lot of bugs in search extensions
2. Fixed a lot of bugs in eval
3. Draw claim by insufficient material is improved/fixed, rare mate
positions with minor pieces remaining should have been avoided.
4. Remove bishop and rook mobilities in eval for a little speed up.
5. Now using fractional extensions
6. Modify attack functions
7. Modify move ordering, piece attacks to square
near opponent king position is enabled
8. Improve bishop eval so that immobility is avoided
9. Added some search informations after searching a move
10. Updated two small books
11. Initialization file is added to handle book and resign options.

version 04.04.07.19
1. improve extension
2. remove recapture ext, remove 3xcheck extension
3. improve evaluation
4. fixed a bug in book option in initialization file
5. improve history and killer heuristics
6. implement some pruning in main search
7. remove aspriration window scheme

version 05.01.08.62
1. Fixed some ending evaluations
2. Use transposition table
3. Improve evaluation on castled/uncastled king in the opening
4. Improve history heuristics
5. Count material in makemove() and unmakemove()
6. Implement easy move when the king is in check
7. Added recapture extension with limits
8. Limit all except check extension
9. Use aspiration window scheme
10. Added rook mobility in evaluation

version 05.02.09.04
1. Modify evaluation
2. Improve extension
3. Modify hash codes

version 05.03.10.06
1. Fixed some bugs in transposition table codes

version 05.04.11.14 (released for ChessWar tournament)
1. Use new method to store positions

version 05.05.12.08
1. Remove rook mobility
2. Added Internal Iterative Deepening

version 05.06.13.01
1. Fixed a bug by declaring a variable as global instead of a local.

version 05.07.14.01
1. Remove Internal Iterrative Deepening

version 05.08.15.12
1. Improve history heuristics
2. Improve Null move pruning

version 05.09.16.59
1. Fixed some bugs in killer moves, move ordering, minor piece ending
and potential passer evaluation.
2. Remove Razoring, and recapture extension.
3. Remove extension limits on pawn push to 7th rank,
minor ending and pawn endings.
4. Improve kpk, rook, bishop and knight evaluation.
5. Improve transposition table codes and null move heuristics.
6. Added Bishop mobility.

version 05.10.17.11
1. Fixed yet another bug in mate killer moves
2. Improve move ordering.
3. Improve search extension codes.

Version 06.01.18.41
1. Fixed a bug in king safety eval
2. Bug fixes in evaluation of positions where materials are not equal.
3. In qsearch, when in check, only return beta if evaluation less some margin
   can make it to beta.
4. Added pin scoring in evaluation function.
5. The use of End game bitbases is now possible because of Daniel Shawul.
   Egbb of Scorpio can also be used by Deuterium. Please see the modified deuterium.ini
   file. Modify the "EGBB PATH" for the actual egbb location on your hard drive.
   Included in this release is the file egbbdll.dll, put this in the directory where
   the egbb files are located. Please be noted that egbb will use 18MB of memory.
   To verify that egbb is loaded, start deuterium in console mode and you will notice
   the comments that egbb is loaded.

Version 06.02.19.01
1. Version to avoid loss on time, Many thanks to Leo Dijksman
for the info about the bug of the last released version.

Version 06.03.20.106 (june 11, 2006)
1. Implemented auto-saving of games in pgn format.
2. Added support for setboard command.
3. Added book learning, bad opening lines will be written to 2 files,
in the next version, these files will be used automatically by the engine.
Currently the files generated will be used to improve books manually.
4. Added Internal Iterative Deepening.
5. Added Late Move Reduction.
6. Improved static evaluation
7. Added extended futility pruning.
8. Use adaptive null move pruning (R=2/3)
9. Improve time management, quick recapture, extend when close to trouble
and abort search if remaining time is not enough to search next iteration.
10. Improve probing of endgame bitbases, many thanks to Daniel Shawul.

Version 06.04.21.01
1. Improve evaluation function
2. Disable futility pruning
3. Modify LMR

Version 06.05.22.01
1. Minor Optimization to search function
2. Use new compiler with a speed up gain of about (50%)

Version 06.06.23.04
1. Some improvement to evaluation
2. Modify Late Move reduction


F. Basic Engine Feature Capability
1. Move now---------------------------------------NO
2. Edit Mode--------------------------------------YES
3. Analyze Mode-----------------------------------NO
4. Opening Book-----------------------------------YES
5. Create Book------------------------------------YES
6. Ponder On/Off----------------------------------NO
7. Hash Tables------------------------------------YES
8. End Game database------------------------------YES
9. Draw Claim-------------------------------------YES
10. Resign----------------------------------------YES
11. Force and Go----------------------------------YES
12. Program Language------------------------------C
13. Source Available------------------------------NO
14. Learn-----------------------------------------NO
15. Xboard----------------------------------------NO
16. UCI-------------------------------------------NO

G. Engine Books
1. Usage
Deuterium is using 4 books, 2 books for white and 2 books for black.
White side has wsmall.dbk and wbig.dbk, while black has bsmall.dbk and bbig.dbk.

During a game the engine will search first on the small books, if no moves are
found there then it will search in the big books. Actually the small books are
meant to guide the engine to avoid as much as possible inferior opening lines.

2. Create
Deuterium is using a book from a text file. You can create a book
with entries like e2e4 e7e5 ... etc and save it as wsmall.dbk
(small book for white) or bsmall.dbk (small book for black), or
you can modify the book in the package, wsmall.dbk and bsmall.dbk.

H. Book Learning
There are two learn files that will be written whenever Deuterium encountered difficulties
in its opening line during game play. These are deu_bad_Wbook.lrn and deu_bad_Bbook.lrn.
A book line is considered bad if there are at least 3 moves with an evaluation of minus score,
on the first 10 moves out of book. Playing with white, bad book lines will be written
to deu_bad_Wbook.lrn, while playing with black, bad book lines will be written to
deu_bad_Bbook.lrn. These files will be used for manual (at the moment) inspection
as basis for improving book lines. The file format is a text file, similar to pgn files in
long algebraic notation but without move numbers. The learning is triggered also when the
time control used is at least 5 minutes for the whole game.

I. Auto saving of Games
By default games played by Deuterium will be saved to DeuteriumGames.pgn file however it can
be disabled by editing the option in Auto_Save_Game to OFF in deuterium.ini file. Saving
of games is only possible if Deuterium received the result command.

J. Commands
you can type "help" after executing deuterium.exe

When playing under winboard, typical entries in winboard.ini file are:
"deuterium" /fd="c:\winboard\deuterium"
"deuterium" /sd="c:\winboard\deuterium"

K. To do list
1. Analyses of game records to catch bugs or as basis for improvement
2. Read / review codes to catch errors and improve codes
3. Improve evaluation functions
4. Improve book
5. Improve book learning

L. Email/Comments
I will be grateful for bug reports and game records from matches
and tournaments or any other comments and queries.
E-mail: fsmosca2004@yahoo.com

M. Links
Twisted Logic Chess Engine by Edsel Apostol 
-another chess engine from the Philippines, Deuterium's buddy.

Visited Counter times since October 19, 2005.