Version History
7/1/2017 - v2017 - This is the version that I will be entering at the 2017 World Computer Software Championship in Leiden, The Netherlands. After the tournament I'll post results as well as the software on this site.
​
8/8/13 - V0.22 - There are a number of tweaks and bug fixes to this version that have greatly improved the engine. I removed the separate zero-width search and combined it into the main PVS search function (taking Dr. Hyatt's advice about simplification), so the null move and razoring are always used. The history heuristic has been removed, and the killer heuristic is not used if moves are captures or the king is in check. The hash move from the transposition table is now ordered very high in the move ordering function (highest only after PV move). Hash size can now be set properly using the setoption command, and "hashfull" is now output by the engine; this should help the chess engine rating sites a bit.
These changes have made Ziggurat remarkably stronger; the BK test now gives Ziggurat a 2265 rating, solving 13 of the 24 tests in under 30 seconds, and Ziggurat 0.22 regularly defeats some of the lower rated chess engines on the CCRL rating list. I still have a long list of improvements to make that should increase the engine strength.
7/14/13 - V0.21 - This version has a number of improvements: adaptive null move pruning, separate piece tables for move ordering, a logo for Arena, pondering, 32-bit version, and a number of bug fixes. These include shortening the name for George Speight to make automated testing easier, low material corrections, mate-in-N fixes, a fix to ucinewgame, fixing move time (seconds per move), and numerous others.
I have had a lot of trouble with transposition tables, so they are still disabled in this release. I suspect the null move algorithm is doing things I'm not taking into account. This version scores a solid 2159 on the BK tests (all passing tests solved in under 30 seconds), but I'm beginning to believe the BK test ratings don't quite capture chess engine strength very well.
I'm becoming disenchanted with the genetic algorithm for automatically tuning the engine parameters. It's possible my evaluation function is poor, or I have the wrong set of parameters, but I am not getting good results from it. I believe I need to look at being more aggressive with move ordering and forward pruning in the next version.
Lastly, I have an opening book implemented in this version, but the Verizon personal web space only allows 10Mb so there was not enough room to include it. I'll squeeze it down somehow for the next version, or maybe find another provider.
5/26/13 - V0.20 - I ported Ziggurat to C#, but the program ran so slowly that it became extremely uncompetitive. However, the port did uncover a few bugs. I have reverted back to the C version. This version has some improvements that make it superior to V.18: aspiration window in root search, PVS/ZWS, delta pruning, a bug in 3-fold repetition, and a bug in end game evaluation parameters. This version scored ELO 2210 in the Bratko-Kopec test suite.
9/14/11 - V0.18 - This version has a greatly expanded set of evaluation parameters which are all exposed via UCI setoption commands. The ziggurat.ini file contains the current set of evaluation parameters (though if the file is not present Ziggurat will default to the latest set of tuned parameters). This parameter set has been tuned using Ziggurat's genetic algorithm for about two weeks, though tuning was still showing improvement in successive generations when I stopped it.
8/22/11 - V0.17 - A bug was fixed in move sorting where the principal variation was lost during a pawn promotion. This would cause Ziggurat to find a mating solution, then forget it on the next ply, only to find it again - if it had time to search long enough. The null move heuristic and razoring have been turned on. Some more genetic tuning of the evaluation function.
8/22/11 - V0.16 - This version has many of the evaluation parameters available to the UCI interface for automatic tuning. A timing bug was fixed for Leo, but better time control needs to be developed. Incremental sort has been added.
This version is interesting as it will be a step backward in Ziggurat's playing strength. This is because I have added a dozen evaluation parameters and written a genetic algorithm to tune them (this is built in to Ziggurat; type "tune" to try it). This process is slow; when these were first installed, Ziggurat's ELO dropped to the 1900's. Tuning has since raised it to the 2100's, but this tuning has raised some questions about the validity of some of the parameters (i.e., queen on 7th rank, knight on a center square, doubled pawns, pawn on or near center square, etc. all have been assigned a value of zero). In addition, Ziggurat makes a few very goofy moves at times. This may be due to the test set, or because it has not run through enough generations, I don't have enough of or the right parameters, or that a few built in assumptions (i.e. when is the transition from opening to end game) are not quite correct. I think the addition of an opening book will help to avoid too much dependence on evaluation parameters that have a short life span. However, the basic structure is now in place and I will be continuing to tweak the evaluation function in newer versions. I've been thinking about separating the tuning code from the engine, and having an INI file drive the parameters in the tuning code; that way it could be used for any engine that exposes its evaluation parameters. Let me know if there is any interest in this.
NOTE: Several folks have asked me for a 32 bit version and one that does not use SSE4 instructions. Although those features are on my to-do list, I have several other features I need to address to improve the strength of the engine first. Thanks for your patience.
6/19/11 - V0.13 - History heuristic, a few improvements to evaluation. Null move and transposition tables are implemented but worsen the BK score, so assuming there are bugs in this code that need examining before this functionality is released.
5/30/11 - V0.12 - Magic bitboards used, but mainly for move generation. Evaluation function is only material plus piece value squares for pawns, knights, bishops and kings (i.e. very stupid). I was holding off writing evaluation functions until bitboards were working so as not to have to re-write them. Includes quiescent search, aspiration windows, killer moves, and a few SSE4 instructions.
5/24/11 - V 0.1 - includes a UCI interface for the old chess engine. I am replacing the guts with magic bitboards, so the eval function has temporarily been dumbed down.
5/15/11 - I have also built a Bratko-Kopec test utility for UCI engines that measures engine strength - the older version of Ziggurat scored a 12, which equates to an ELO of 2146.