|
Engine: DiscoCheck (former DoubleCheck) (UCI only!) |
Author: Lucas Braesch, France. |

DiscoCheck 3.5 --------------- - no futility pruning of killer moves: scores equal in self-play, but slightly better in tactics. - futility and eval pruning now done also at PV nodes. - bugfix: returned the previous iteration move when mate found in certain cases. - bugfix: print_pv was calling move_to_string with illegal moves. - run_epd: run an EPD file, produce a nice report of missed positions and total score. - move_to_san added. - bugfix: calc_attacks was functionally incorrect, rewritten and speeded it up a little too. - improved evaluation of connected passed pawns. A new interesting feature of DiscoCheck is the EPD support, as documented in the readme.txt file! DoubleCheck 3.4 --------------- - tuned king safety weights. - rewritten and tuned passed pawns eval. DoubleCheck 3.3 --------------- - eval: added candidate passed pawns. - tt: generation SF style: todo - pack move_t into 16 bits: in progress - board: pack move_t to 16 bits. - eval: knight and bishop outposts. - eval: improved passed pawn scoring. DoubleCheck 3.2 --------------- - eval: increase rook on (semi)open file bonus, when on the enemy's king file. - eval: added a tempo bonus. - search: margin for eval pruning now increases faster with depth. - search: fixed my lame razoring code. thanks to Martin Sedlak and Marco Costalba for suggesting this. - qsearch: divided by 2 the futility margin. - qsearch: SEE pruning only at non PV nodes. - qsearch: fixed an error in evasion pruning. - bench: increased depth of test positions. DoubleCheck 3.1 --------------- - futility pruning in quiescent search improved. DoubleCheck 3.0 --------------- - eval command now returns a full breakdown of eval components. - eval mostly rewritten. - aspiration windows. - code cleanup. DoubleCheck 2.7 --------------- - added rook on open file bonus. - removed stdin unbuffering. - removed the global variable SubPromotion. handle this more tidily via function parameter. - changed piece values. - mvv/lva sort in qsearch captures. - removed RNB promotions in qsearch. - remove POSIX compile flag (auto detect). DoubleCheck 2.6 --------------- - eval_loose: penalise loose pieces a little. - introduced an array B->st->attacks[color][piece] to simplify and speedup additional eval code. - use unsigned i/o int wherever relevant. - faster interfacing code when Verbose = false. DoubleCheck 2.5.4 ----------------- - bugfix: free passer bonus was attributed when pieces were in the way, i/o the opposite. - bugfix: relative king distance was too preponderant in the passed pawn scoring. - bugfix: KRRBKRR was incorrectly recognized as a draw. DoubleCheck 2.5.3 ----------------- - move_ok: rewritten efficiently (first step to prepare the lazy move ordering). - rook and bishop promotions can be disabled (in search, not perft) with SubPromotions in movegen.c - gen_msl: precalculate SEE only for captures. DoubleCheck 2.5.2 ----------------- - eval: removed candidate passed pawns. - eval: reduced penalty when a passed pawn is not part of a pawn chain. DoubleCheck 2.5.1 ----------------- - eval: added candidate passed pawns. - bugfix: report correct version number. DoubleCheck 2.5 --------------- - eval: introduced king attack incentive. - bugfix: doubled node polling frequency to avoid time losses. DoubleCheck 2.4 (CEGT 40/4: 2415 elo) --------------- - MAX_GAME_PLY now equals 0x400, so games can safely last 0x400-0x80 half-moves before the game stack writes out of its allocated memory and crashes everything. - qsearch: do not write in the TT when the move loop was empty. - eval: mobility rewritten, should make a bit more sense now. - search: introduced double reductions for late quiet moves. - search: do not reduce castling moves. - search: eval pruning rather than reduce. DoubleCheck 2.3.1 (CCRL 40/40: 2313 elo) ----------------- - feature: do not clear hash when ucinewgame command is received. - feature: do not reduce passed pawn pushes into the enemy's half board. - code: makefile added. - code: reorganized the hash_t structure, and packed it more efficiently into 16 bytes i/o 24. The keys stored in the hash table are now 62 bits, i/o 56. - code: TT allocation code improved, only alloc TT at the last moment, to reduce memory footprint. - bugfix: crashed with Hash=4096. Hash changed to min=1 max=8192 default=32. - bugfix: PV line is now displayed in long algebraic notation, in accordance with the UCI standard. - bugfix: 3-move repetition was causing and endless PV. - bugfix: UCI parsing code more stable, and more verbose error messages. DoubleCheck 2.3 --------------- * razoring and eval pruning. Unlike other engines, I reduce the depth instead of pruning, and when the reduced depth is <= 0 then I prune. * fixed search extension and reductions a bit. * few minor code changes DoubleCheck 2.2 --------------- * LMR: rationalised the reduction code. Search reductions should be safer, and more sound. Also code is easier to read and maintain. * magic bitboards: The generation of magic bitboards is now based on the code Umko by Borko Boskovic. Reasons for choice: - Umko's implementation of magics uses 3 times less memory, so it's more cache friendly - Umko's code is copyleft (GPL), whilst Pradu Kannan's copyright terms are incompatible with the letter and the spirit of GPL free software. * added a benchmark() function. * qsearch SEE pruning: - don't prune discovered checks with negative SEE - prune the tt_move, like any other - removed the PV condition * most sort: removed the mate killer heuristic (it was useless). * move sort: forbid captures or promotions to "pollute" history table or killer moves. * eval: forbid the use of calc_eval() when in check (use -INF instead, handled in the search). * bugfix: displaying 64bit node counts now works (using the portability macro PRiu64) DoubleCheck 2.1 --------------- * parametric PSQ. Based on Fruit, although the code is a complete rewrite, and several things have been simplified. I'm trying to minimize the number of parameters here, with a view to do a CLOP optimisation later. Number fo param in PSQ: 18+2*8+2*4=42, compared to 2*6*64=768 previously! * Polling code fixed: stop command should now work on POSIX and Windows. * drawish material recognizer: should look less stupid in dead drawn endgames! * bug fixes: an important one being the eval "phase" casted to int (so was only 0 or 1) DoubleCheck 2.0 --------------- * fake UCI command eval added. * eval function significantly improved. * UCI command depth now supported. * UCI command nodes now supported. * UCI command infinite now supported. * UCI command stop supported on POSIX: untested so far. DoubleCheck 1.4 (CCRL 40/4: 2258 elo) --------------- * Rook eval: open/semi/closed file + 7th rank * magic bitboards, adapted the implementation from Pradu Kannan. * bugfix: stronger hashing to avoid TT collisions - rand64() now uses the much superior JLKISS64 RNG, by Pr. David Jones, UCL Bioinformatics Lab - 56 bit zobrist are stored in the TTable, instead of 32 * bugfix: info pv line now contains the depth, as defined by the UCI protocol. DoubleCheck 1.3.1 (CCRL 40/40: 2183 elo) ----------------- * bugfix: PV was not shown in GUIs. I was sending the pv on a separate line, which isn't UCI compliant. Thanks to Matthias Gemuh for pointing this out. DoubleCheck 1.3 --------------- * DoubleCheck is able to display a correct PV. The code was much simplified, as I simply retrieve it from the TTable. * bugfix: 3-move repetition. Thanks to Martin Sedlak for helping me fix this. * other minor search bug fixes. DoubleCheck 1.2 --------------- * Delta pruning, Futility pruning, and Late Move Reductions (can be disabled via UCI option). * UCI option Draw was removed. A bug with repetition draws was also fixed. * UCI command movetime now supported. Thanks to Aart Bik for suggesting it. * various bug fixes. DoubleCheck 1.1 --------------- * UCI option Draw. This is the score of a draw, from the point of view of DoubleCheck. Default value is -20, meaning that DoubleCheck will (slightly) try to avoid draws, and assume that the opponent seeks draws. * UCI option NullMove: recursive null move pruning. * Internal Iterative Deepening, with a UCI option to enable/disable it. It doesn't make a significant difference in blitz; the benefit kicks-in at longer time controls (improves move ordering). * UCI option "Hash" to set the size of the hash table in MB. Now defaults to 64 MB instead of 16. * 7-th rank extension: when the move is a pawn to the 7-th rank, with a >= 0 SEE, then I extend by 1 ply. There was no evidence of either improvement or regression after testing this. But, intuitively, it makes sense. And it seemed to play better in the endgame, so I kept it. * fixed a bug in the hash table: I was potentially using results from the search in the quiescent search, which is never a good idea. * modified the material values, and added a bishop pair bonus. DoubleCheck 1.0 (CCRL 40/40: 1947 elo) --------------- * first release.
© COPYRIGHT 2001 - 2012 All Rights Reserved wbec-ridderkerk.nl