GREKO CHESS ENGINE (c) 2002-2011 Vladimir Medvedev <vrm@bk.ru> Version 8.2 ----------- 01-Aug-2011 (chg) * Search code refactoring: global functions and variables converted to class members. (chg) * History counters scheme changed. (chg) * Use history condition in LMR. (chg) * New terms in evaluation: - king-pawn distance in endgame, - knight mobility, - trapped bishop. (chg) * Evaluation weights tuned. (chg) * Small optimization in hash table. (chg) * Hash overwriting logic changed. Version 8.1.1 ------------- 08-July-2011 (fix) * Fixed bug in opening book lookup code: added check for moves legality. Version 8.1 ----------- 05-July-2011 (chg) * Futility code optimized. (chg) * Fixed a typo in evaluation. (chg) * Small code refactoring. Version 8.0 ----------- 31-Dec-2010 (new) * Mating moves in sort ordering. (chg) * LMR conditions changed; verification when LMR score exceeds alpha. (chg) * Evaluation function completely rewritten. Version 7.2 ----------- 05-Aug-2010 (chg) * Returned to pseudo-legal move generator. Faster, simpler. (chg) * Single reply extensions removed. (chg) * Late move reduction in a very basic form. No verification re-search. (chg) * Limited strength levels tuned. Version 7.1 ----------- 19-July-2010 (new) * New options: UCI_LimitStrength, UCI_Elo and LimitKNPS. (chg) * Time management tuned. Version 7.0 ----------- 21-June-2010 (chg) * Search modified. Version 6.5 ----------- 01-June-2009 (new) * Fixed nodes and fixed depth modes, under UCI and WB. (new) * Evaluation weights now can be set with UCI 'setoption' command. (chg) * Removed not used bitboard masks. (chg) * Time allocation algorithm changed. (chg) * Command parser reorganized. (chg) * Removed many terms in eval. Modified some other. Added TEMPO term. (chg) * Futility conditions changed. (chg) * Delta pruning conditions changed. (chg) * Nodes counters changed to int64. (chg) * Overall code cleanup and reformatting. (chg) * Makefile simplified. Version 6.4 ----------- 14-May-2009 (fix) * Single reply extensions restricted to PV-nodes only. Prevents from search explosion in some won positions. (new) * GreKo.ini file added, with evaluation weights - sort of "personality settings". Not tuned at all. (new) * Makefile.linux added. (chg) * Command line parameters (-hash and -log) are not used anymore. Moved to GreKo.ini file. (chg) * Code clean-up and reformatting - a lot of obsolete code removed or changed. Version 6.31 ------------ 29-Apr-2009 (chg) * Removed non-used field "flags" in hash entry, effective hash capacity increased. (chg) * Hash allocation simplified. (chg) * Code clean-up and reformatting. Version 6.30 ------------ 05-Feb-2009 A lot of clean-up work without significant changes in core algorithms. (chg) * Small change in CountBits() function. (chg) * Time management scheme simplified. (chg) * Sort values increased, to make less history scalings. (chg) * Adjust mate scores in hash only for real mates. (chg) * Pruning conditions changed for nullmove, futility, LMR and delta pruning. (chg) * Removed some evaluation terms. (chg) * Mobility evaluation changed. (chg) * Passed pawns evaluation changed. (chg) * Weights tuned a little. Version 6.25 ------------ 15-Dec-2008 (fix) * Fixed bug with "..." in UCI mode under Arena. (fix) * Fixed: do not leave search with empty root pv. (chg) * Faster search: do not copy pv in beta nodes. (chg) * Turned off nullmove and LMR on PV. (chg) * Generate checks in qsearch only on qply == 0. (chg) * SEE delta pruning in qsearch on qply > 1. (chg) * Small changes in code formatting. (chg) * Small changes in popcount function. Version 6.1 ----------- 24-Oct-2008 (fix) * Fixed "book import" and "book load" commands to make correct book merges. (fix) * Fixed setup from FEN: correct hash for positions with black to move. (fix) * Fixed short notation recognizer: now accepts "O-O" and "O-O-O". (chg) * Pawn hash is now a separate 32-bit field, not a part of the main 64-bit hash. (chg) * New opening book (not compatible with 6.0 book). (chg) * Time management scheme tuned a little. (chg) * Small changes in search (qchecks, pvs, extensions). (chg) * Small speed-up in evaluation. Version 6.0 ----------- 29-Sept-2008 (fix) * Fixed bugs in move generator (en-passant) and incremental check detector (en-passant, castlings); all of them could lead to making illegal moves. (new) * Opening book: internal binary format and PGN-like text files supported. (chg) * More compact magic lookup tables (nothing special, just conventional variable bits per square approach). (chg) * More reliable search. (chg) * Short notation support in command line. When GreKo starts, it reads book.bin file. If there is no book.bin, it tries to read book.txt. You can create your own book.txt, or import games from PGN and save them as book.bin. Source PGN file should not contain comments or variations. How to create book (example): White(1): book clean White(1): book import file1.pgn 40 w maxPly = 40 white's moves only Games: 1193, nodes: 22730 White(1): book import file2.pgn 40 b maxPly = 40 black's moves only Games: 1157, nodes: 44409 White(1): book import file3.pgn maxPly = 20 Games: 1919, nodes: 52633 White(1): book save book.bin writing book.bin... White(1): bk e4 54%, d4 33%, Nf3 8%, c4 2%, g3 0%, Nc3 0%, b3 0% Version 5.9 ----------- 02-Aug-2008 (fix) * Fix in reporting NPS under UCI (fix) * Check extensions fixed (chg) * Make the move instantly when checkmate is found (chg) * Draw recognizer modified (chg) * Bishop and bishop pair values tuned (chg) * Small changes in search Version 5.8.5 ------------- 16-July-2008 Changes in move generator and in search: (new) * Magic bitboards (can be turned off when MAGIC is not #defined in bitboards.h). (new) * Legal-only move generation on all stages. At last GreKo can cheat in perft by not actually making moves at depth = 1 :) (new) * Simple checks generation on first levels in qsearch. (new) * Static exchange evaluation for captures (with batteries, without pins and promotions on ply > 0). (chg) * Pruning decisions do not rely on pv/non-pv node type, again. (chg) * Futility pruning turned off, again. (chg) * Use SEE score for delta pruning in qsearch instead of VALUE[captured]. (fix) * Fixed incorrect PGN disambiguation code (introduced in 5.8, but does not affect playing games, just in epdtest mode) -- thanks to Dann Corbit for bug report. Tactical abilities seem to increase: WACNew WACNew NewIQ 1 sec. 5 sec. 10 sec. 5.7.1 271 287 243 5.8 270 286 239 (-1...-4 solved positions - due to PGN bug) 5.8.5 290 297 276 This version could be named 5.9 since it has so many changes, but I prefer to save numbering space for some possible improvements. Version 5.8 ----------- 10-July-2008 The main goal of this version is source code refactoring. Core datastructures are now more "C++ style". Position and Move data encapsulated in classes. Got rid of pointers, some #defines etc. Small optimization for all bitscan loops. As a result the source code is 5% more compact than 5.7.1. Perft and search run 20-30% faster (at least in the initial position). Small changes in the move generator (castlings). Search and evaluation algorithms are almost unchanged except for a little fix in the hashing scheme. En-passant and castling rights were not taken into account in the hash code, now they are. Time management scheme changed a little, to prevent possible losses on time in 3+3 games. Thanks to Volker Pittlik for mentioning the bug. Multi-PV UCI mode modified, however it is still slow and non-optimized. Version 5.7.1 ------------- 25-May-2008 (fix) Fixed bug in PVS code. Version 5.7 ----------- 19-May-2008 (fix) Mate scores in hash now handled correctly (fix) Do not skip draw scores in hash (fix) PV update code: replaced "for" statement with "memcpy" call (chg) Time management tuned a little (chg) Source code reformatted (new) MSVC8 project file added Version 5.6 ----------- 12-Apr-2008 (fix) Fix in MVV/LVA sorting (fix) Fix in "stop" command processing - don't report it is incorrect (new) Futility pruning at non-PV nodes, depth = 1 (new) Delta pruning in qsearch (chg) Replaced get_new_depth() function with more clear code (chg) Principal variation search (PVS) instead of plain alpha-beta (chg) Nullmove conditions changed (R = 4, etc.) (chg) LMR conditions changed (chg) Fifty moves draw condition - after checkmate detection (chg) Reply to checks in qsearch (coming back) (chg) Time management scheme changed (use more time in increment games) (chg) Trapped bishop evaluation changed (chg) Repetition handling changed Version 5.5 ----------- 31-Dec-2007 *** HAPPY NEW YEAR!!! *** (chg) Hash lock 32-bit instead of 64. (chg) New hash allocation scheme. (chg) Futility pruning turned off. Version 5.4 24-Jul-2007 ----------- (chg) Minor change in storing generated moves. (chg) Recompiled as C++ code with MSVC 2005 Express (Windows) and g++ 3.3.3 (Linux). Version 5.3 20-May-2007 ----------- (chg) Using hash eval from previous iteration for pruning (chg) Small optimization in attack detector (chg) Small optimization in PV handling (fix) Fixed crash on epd-files ended with empty lines Version 5.2.5 23-Feb-2007 ------------- (chg) Adjust checkmate scores in hash (chg) Minor changes in evaluation (mobility, bishops pair etc.) Version 5.2 12-Feb-2007 ----------- (fix)...
manix52