Your trusted source for computer chess information!

Differences

This shows you the differences between two versions of the page.

computer_chess:engines:myrddin:index 2021/07/18 12:52 computer_chess:engines:myrddin:index 2023/06/11 14:00 current
Line 5: Line 5:
First of all, thanks very much to Ron Murawski for making this site available and hosting Myrddin here! =) First of all, thanks very much to Ron Murawski for making this site available and hosting Myrddin here! =)
-This version supports SMP via processes (up to 16 instances) and is about 110 ELO stronger than v0.87 at 1 CPU and about 100 ELO stronger at 4 CPUs. This version has not been formally tested above 4 CPUs so it is unknown how well it will scale above 4 CPUs.+Myrddin 0.90 supports SMP via processes (up to 16 instances) and is about 50 ELO stronger than v0.89 at 1 CPU and a further 80 ELO stronger at 4 CPUs. This version has not been formally tested above 4 CPUs so it is unknown how well it will scale above 4 CPUs.
==== Download ==== ==== Download ====
-[[https://www.dropbox.com/s/36r9dlojn8o0qxg/Myrddin088.rar?dl=0 | Myrddin 0.88]] (released 7/18/21, [[http://www.computerchess.org.uk/ccrl | CCRL]] rating estimated at 2500 at 1 CPU and 2600 at 4 CPUs)\\+Executable Package - [[https://www.dropbox.com/s/z2fkfkyxigohhp7/Myrddin%20090.rar?dl=0 | Myrddin 0.90]] (released 6/9/23, CCRL rating approximately 2650 at 1 CPU and 2730 at 4 CPUs)\\ 
 +Source Code - [[https://github.com/JVMerlino/Myrddin | Myrddin Source]]
== Old versions == == Old versions ==
-{{myrddin087.rar | Myrddin 0.87}} (released 1/25/15, CCRL rating estimated at 2395 at 1 CPU and 2485 at 4 CPUs)\\ +[[https://www.dropbox.com/s/1ksfgbrtnpahg3o/Myrddin%20089.rar?dl=0 | Myrddin 0.89]] (released 6/3/22, CCRL rating of 2597 at 1 CPU)\\ 
-{{myrddin086-ja.zip | Myrddin 0.86}} (released 12/21/12, CCRL rated approximately 2360)\\+[[https://www.dropbox.com/s/v3amg3x4kkpjwqk/Myrddin%20088.rar?dl=0 | Myrddin 0.88]] (released 7/18/21, CCRL rating of 2560 at 1 CPU and 2629 at 4 CPUs)\\ 
 +{{myrddin087.rar | Myrddin 0.87}} (released 1/25/15, CCRL rating of 2399 at 1 CPU and 2482 at 4 CPUs)\\ 
 +{{myrddin086-ja.zip | Myrddin 0.86}} (released 12/21/12, CCRL rating of 2365)\\
This package contains Windows32/64, Linux32/64, & Android executables compiled by [[http://jim-ablett.co.de/ | Jim Ablett]], and a Mac executable compiled by [[http://predateur-chess.blogspot.com | Julien Marcel]], author of the Prédateur chess engine.\\ This package contains Windows32/64, Linux32/64, & Android executables compiled by [[http://jim-ablett.co.de/ | Jim Ablett]], and a Mac executable compiled by [[http://predateur-chess.blogspot.com | Julien Marcel]], author of the Prédateur chess engine.\\
-{{myrddin085.rar | Myrddin 0.85}} (released 5/3/11, CCRL rated approximately 2220)\\ +{{myrddin085.rar | Myrddin 0.85}} (released 5/3/11, CCRL rating of 2223)\\ 
-{{myrddin084.rar | Myrddin 0.84}} (released 9/17/10, CCRL rated approximately 2115)\\ +{{myrddin084.rar | Myrddin 0.84}} (released 9/17/10, CCRL rating of 2115)\\ 
-{{myrddin083.rar | Myrddin 0.83}} (released 2/22/10, CCRL rated approximately 2015)\\+{{myrddin083.rar | Myrddin 0.83}} (released 2/22/10, CCRL rating of 2010)\\
{{myrddin082.rar | Myrddin 0.82}} (released 9/26/09, estimated CCRL rating of 1915)\\ {{myrddin082.rar | Myrddin 0.82}} (released 9/26/09, estimated CCRL rating of 1915)\\
-{{myrddin_alpha_2.rar | Myrddin Alpha 2}} (released 5/26/09, estimated CCRL rating of 1550)\\ +{{myrddin_alpha_2.rar | Myrddin 0.81}} (released 5/26/09, estimated CCRL rating of 1550)\\ 
-{{myrddin_alpha_1.rar | Myrddin Alpha 1}} (released 3/9/09, estimated CCRL rating of 1150)\\+{{myrddin_alpha_1.rar | Myrddin 0.80}} (released 3/9/09, estimated CCRL rating of 1250)\\
---- ----
==== Release Notes ==== ==== Release Notes ====
-Myrddin 0.88 -- 7/18/21+Myrddin 0.90 -- 6/9/23
Myrddin is a winboard-compliant chess engine to a reasonable degree. It supports protover 1 primarily to support the Chessmaster interface, and also protover 2. Myrddin is a winboard-compliant chess engine to a reasonable degree. It supports protover 1 primarily to support the Chessmaster interface, and also protover 2.
-The 64-bit version of Myrddin should play approximately 2500 ELO against chess engines at 1 CPU (using CCRL rating), and probably 100 points higher against humans. This is an improvement of approximately 110 points compared to the previous release. Myrddin should play about 100 points stronger at 4 CPU.+The 64-bit version of Myrddin should play approximately 2650 ELO against chess engines at 1 CPU (using CCRL rating), and probably 100 points higher against humans. This is an improvement of about 50 points compared to the previous release. Myrddin should play about 80 points stronger at 4 CPU.
The following winboard commands are supported: The following winboard commands are supported:
Line 59: Line 62:
  * "divide N" -- extension to perft algorithm showing the number of leaf nodes of depth N from the current position, divided among each legal move from the current position.   * "divide N" -- extension to perft algorithm showing the number of leaf nodes of depth N from the current position, divided among each legal move from the current position.
  * "tb" -- toggles Gaviota endgame tablebase support   * "tb" -- toggles Gaviota endgame tablebase support
 +  * "rpt" -- runs a short pre-defined perft test, using bulk counting with only one thread
 +  * "see" -- returns the SEE value of a capture on the current position - example usage "see d4 e5"
None of these commands are supported while Myrddin is searching/analyzing. None of these commands are supported while Myrddin is searching/analyzing.
---- ----
Line 69: Line 74:
====General Notes==== ====General Notes====
--- Myrddin's "very lazy SMP" implementation uses multiple secondary processes to fill the transposition, eval and pawn hash tables so the primary process can search deeper in the same amount of time.\\+-- Myrddin's "Very Lazy SMP" implementation uses (N-1) child processes to fill the transposition, eval and pawn hash tables so the parent process can search deeper in the same amount of time. I believe Myrddin is the only engine that has implemented SMP with this method (and probably rightly so!).\\
-- Myrddin uses Pradyumna Kannan's [[http://www.pradu.us/old/Nov27_2008/Buzz/ | magicmoves]] code for move generation of sliding pieces.\\ -- Myrddin uses Pradyumna Kannan's [[http://www.pradu.us/old/Nov27_2008/Buzz/ | magicmoves]] code for move generation of sliding pieces.\\
--- This the first version of Myrddin to have a tapered eval, and the eval was hand-tuned using a very rudimentary Texel tuning system.\\ +-- Myrddin uses a tapered eval which was tuned using a very rudimentary Texel tuning system.\\ 
--- Search is basic alpha/beta, with reasonable and generally conservative extensions and reductions.\\ +-- Search is basic alpha/beta, with typical extensions and reductions.\\
-- All user-modifiable parameters are supported in the INI file, an example of which is included in the download.\\ -- All user-modifiable parameters are supported in the INI file, an example of which is included in the download.\\
--- Max search depth is 128.\\+-- Max search depth is 128 ply.\\
-- The [[http://members.home.nl/matador/prodeo.htm | ProDeo opening book]] is used by kind permission of Ed Schröder.\\ -- The [[http://members.home.nl/matador/prodeo.htm | ProDeo opening book]] is used by kind permission of Ed Schröder.\\
-- Draw claims from the opponent are not supported. Myrddin does, however, claim all draws by rule, as well as checkmate.\\ -- Draw claims from the opponent are not supported. Myrddin does, however, claim all draws by rule, as well as checkmate.\\
--- There is enough winboard support to play games on ICS. But without support for "draw" I'm sure there are some scary loopholes and/or exploits.\\ +-- There is enough Winboard support to play games on ICS. But without support for "draw" I'm sure there are some scary loopholes and/or exploits.\\
-- When the engine is in analysis mode, positive scores always favor White and negative scores always favor Black. When the engine is thinking or pondering, positive scores favor Myrddin.\\ -- When the engine is in analysis mode, positive scores always favor White and negative scores always favor Black. When the engine is thinking or pondering, positive scores favor Myrddin.\\
-- Logfiles will be in the "logs" folder below the folder where you ran Myrddin. The output of the log is not very interesting -- just PV output and communication reality-check stuff. If you are running Myrddin with multiple CPUs, there will be one logfile for each process.\\ -- Logfiles will be in the "logs" folder below the folder where you ran Myrddin. The output of the log is not very interesting -- just PV output and communication reality-check stuff. If you are running Myrddin with multiple CPUs, there will be one logfile for each process.\\
---- ----
-==== Tournament Highlights ====+==== (Very Old) Tournament Highlights ====
== ChessWar XIV == == ChessWar XIV ==
Line 95: Line 100:
Versions 0.83 through 0.83k participated in [[http://www.open-aurec.com/chesswar/openwar.html|OpenWar 7]]. This was a round-robin tournament with 76 engines. I was hoping that Myrddin would place around 55th and score about 25 points. But, despite some noticeable improvements in Myrddin that went into version 0.84, Myrddin performed poorly and finished in 62nd place, with only 20.5 points (+14 =13 -48). Myrddin's best results were draws against the 11th place engine, WaDuuttie, and the 20th place engine, Rotor. Both of these engines are rated 2500+. Its best win was against the 45th place engine, Sungorus, rated 2300+. The only other good thing that can be said is that Myrddin had good results against the 18 engines that finished immediately above him (+3 =9 -6). Versions 0.83 through 0.83k participated in [[http://www.open-aurec.com/chesswar/openwar.html|OpenWar 7]]. This was a round-robin tournament with 76 engines. I was hoping that Myrddin would place around 55th and score about 25 points. But, despite some noticeable improvements in Myrddin that went into version 0.84, Myrddin performed poorly and finished in 62nd place, with only 20.5 points (+14 =13 -48). Myrddin's best results were draws against the 11th place engine, WaDuuttie, and the 20th place engine, Rotor. Both of these engines are rated 2500+. Its best win was against the 45th place engine, Sungorus, rated 2300+. The only other good thing that can be said is that Myrddin had good results against the 18 engines that finished immediately above him (+3 =9 -6).
== ChessWar XVI == == ChessWar XVI ==
-Version 0.84 participated in the F division of [[http://www.open-aurec.com/chesswar|ChessWar XVI]]. There were 80 engines in the tournament and Myrddin was seeded 70th. Myrddin finished respectably in 49th place with 5 points (+3 =4 -4). Its best performance was a draw against the engine that finished in 6th place.+Version 0.84 participated in the F division of [[http://www.open-aurec.com/chesswar|ChessWar XVI]]. There were 80 engines in the tournament and Myrddin was seeded 70th. Myrddin finished respectably in 49th place with 5 points (+3 =4 -4). Its best performance was a draw against Lime, the engine that finished in 6th place.
== CCRL Amateur Division 7 (Series 23) == == CCRL Amateur Division 7 (Series 23) ==
Version 0.84 (32-bit) was the first version to win any tournament, doing so in the 23rd Series the [[http://www.computerchess.org.uk/ccrl|CCRL]] Amateur Division 7. It competed with nine other engines in a double-round robin and won with a score of 23.5 out of 36 (+20 =7 -9). This victory promoted Myrddin to Division 6. Version 0.84 (32-bit) was the first version to win any tournament, doing so in the 23rd Series the [[http://www.computerchess.org.uk/ccrl|CCRL]] Amateur Division 7. It competed with nine other engines in a double-round robin and won with a score of 23.5 out of 36 (+20 =7 -9). This victory promoted Myrddin to Division 6.
Line 105: Line 110:
==== Test Suite Results ==== ==== Test Suite Results ====
-All results are for the 64-bit version of 0.85 using 128MB hash and 5-man Gaviota tablebases. The tests are run on an AMD 9650 Quad 2.3GHz machine (although Myrddin does not support multiple CPUs). Running all of the below tests takes approximately 5 hours. +All results are for the 64-bit version of 0.89 using 1GB hash and 5-man Gaviota tablebases. The tests are run on an AMD Ryzen 5 3.6GHz machine at one CPU.
== WAC (Win at Chess) == == WAC (Win at Chess) ==
-300 positions at 5s per position. Almost exclusively tactical positions, many leading to mate. Myrddin finds 295 correct moves within the time limit. Regarding the five missed positions, two (141, 222) are found within 10 seconds, one (293) is found within 30 seconds, and two (17, 230) are not found within one minute. This suite can be found [[http://www.bergbomconsulting.se/chess/epdfiles/wac.epd|here]].+300 positions at 5s per position. Almost exclusively tactical positions, many leading to mate. Myrddin finds 297 correct moves within the time limit. Regarding the three missed positions (230, 256, 293), only #256 is found within 15 seconds. The other two are not found within 30 seconds. This suite can be found [[http://www.bergbomconsulting.se/chess/epdfiles/wac.epd|here]].
== Strategic Test Suite == == Strategic Test Suite ==
-A series of (currently, but occasionally expanding) 14 individual suites of 100 positions each, primarily intending to test positional knowledge such as square vacancy, proper recapturing, pawn advancement, control of the center, etc. At 10s per move, Myrddin gets 789 out of 1400 positions correct. This suite is also interesting because it contains "partial credit". In other words, you can still get some points by choosing moves other than the optimal. Myrddin gets 9,556 out of 14,000 points if partial credit is included. You can download this test suite [[http://sites.google.com/site/strategictestsuite|here]].+A series of (currently, but occasionally expanding) 14 individual suites of 100 positions each, primarily intending to test positional knowledge such as square vacancy, proper recapturing, pawn advancement, control of the center, etc. At 10s per move, Myrddin gets 952 out of 1400 positions correct. This suite is also interesting because it contains "partial credit". In other words, you can still get some points by choosing moves other than the optimal. Myrddin gets 10,914 out of 14,000 points if partial credit is included. You can download this test suite [[http://sites.google.com/site/strategictestsuite|here]].
== O'Kelly == == O'Kelly ==
-176 positions at 10s per position. Combinative middlegame and endgame suite. Myrddin finds 134 positions within the time limit. You can download this test suite [[http://www.horizonchess.com/Download.html|here]].+176 positions at 10s per position. Combinative middlegame and endgame suite. Myrddin finds 136 positions within the time limit. You can download this test suite [[http://www.horizonchess.com/Download.html|here]].
== Eigenmann Endgame Test == == Eigenmann Endgame Test ==
-100 positions at 10s per position. Myrddin does not do very well at this suite, getting only 20 correct moves within the time limit. You can download this test suite [[http://computer-chess.org/doku.php?id=computer_chess:wiki:download:epd_contents|here]].+100 positions at 10s per position. Myrddin does not do very well at this suite, getting only 41 correct moves within the time limit. You can download this test suite [[http://computer-chess.org/doku.php?id=computer_chess:wiki:download:epd_contents|here]].
== IQ 8.1 == == IQ 8.1 ==
-182 positions at 10s per position. Challenging tactical suite. Myrddin finds 149 positions within the time limit. You can download this test suite [[http://www.horizonchess.com/Download.html|here]]. +182 positions at 10s per position. Challenging tactical suite. Myrddin finds 158 positions within the time limit. You can download this test suite [[http://www.horizonchess.com/Download.html|here]].
-== Personal Test Positions == +
-For a list of (hopefully) interesting test positions that I have accumulated during the development of Myrddin, [[computer_chess:engines:myrddin:testpositions|go here]]. +
-----+
====FULL DISCLOSURE==== ====FULL DISCLOSURE====
Line 130: Line 132:
====Version/Change List==== ====Version/Change List====
-== Version 0.80 (Alpha 1) (3/9/09) == +== Version 0.90 (6/9/23) == 
-Initial Release, rated approximately 1200-1300+-- Fixed two bugs in SEE (stopped the calculation if the first capture was of equal value, and failed to include Kings in the calculation)\\ 
 +-- Fixed a bug that could cause a save to the hash table even if there was no best move\\ 
 +-- Tuned PST files for the first time, and re-tuned all other eval terms\\ 
 +-- Captures with negative SEE value can now be reduced\\ 
 +-- IID is now more aggressive in its depth reduction and can be applied in PV nodes\\ 
 +-- LMR reduction is now one depth less for PV nodes\\ 
 +-- No longer limiting the number of extensions for a single branch\\ 
 +-- Reduced the number of aspiration windows before performing a full-width search from six to two\\ 
 +-- Fixed a rare bug such that if a tt probe or IID returned an underpromotion it would not be moved to the front of the movelist\\ 
 +-- Fixed an issue when receiving the "force" command while pondering, which can happen with some GUIs\\ 
 +-- Modified the compiler options for magicmoves to improve perft results by 5%.\\ 
 +-- Various minor optimizations\\ 
 +-- Added "see" command to return the SEE value of a capture on the current position - example usage "see d4 e5"\\ 
 +-- Added "rpt" command to run a brief perft test (perft uses bulk counting)\\ 
 +-- Removed "-64" from version string as there is no longer a 32-bit version\\
-== Version 0.81 (Alpha 2) (5/26/09) == +== Version 0.89 (6/3/22) == 
--- Reduced move generation time by ~21% (perft 6 on initial position went from 57 to 44 seconds on P4-3.0)\\ +-- Added Late Move Pruning\\ 
--- Search now pings the input command handler every 8K nodes (about 1/30-1/50 second, depending on position and hardware), so applicable commands can now be entered during search/analysis\\ +-- Late Move Reductions are now more aggressive and use a logarithmic formula\\ 
--- Search will allocate extra thinking time when it gets noticeable drop in score\\ +-- Bad captures are now subject to LMR\\ 
--- Evaluation improvements -- pawn structure, open and semi-open files for rooks, rooks behind passers, king safety\\ +-- Moved killer moves before equal captures in move ordering\\ 
--- Added MVV/LVA and PV Move Ordering\\ +-- Moved bad captures after quiet moves in move ordering\\ 
--- Added Killer and History move ordering heuristics\\ +-- Moves that give check are no longer flagged as such at move generation, but instead during MakeMove()\\ 
--- Added Null Move reductions\\ +-- Reduced the number of fail high/low results at the root before searching on full-width window\\ 
--- Added Late Move reductions\\ +-- BitScan now uses an intrinsic function rather than MS Windows' BitScanForward64() - thank you to Pawel Osikowski and Bo Persson for the suggestion!\\ 
--- Added Opening Book (ProDeo -- Thanks, Ed!)\\ +-- Null Move now uses a reduction of 3+(depth/6) instead of just 3\\ 
--- Added pondering, so "hard" and "easy" commands are now supported\\ +-- Myrddin will now move instantly if TBs are available and <= 5 men on board. Previously it would "search" all the way to max depth (128) before moving, causing potential buffer problems with some GUIs at very fast time controls.\\ 
--- "analyze", "?" and "result" commands are now supported\\ +-- Minor evaluation tuning adjustments, most notably adding code for Bishop Outposts and a significant increase for pawns on the 7th rank\\ 
--- "level" command is now fully supported for all time control types\\ +-- Increased the aggressiveness of SMP depth adjustment for child processes\\ 
--- Added check for dirty pawn structure before evaluation\\ + 
--- Search can be interrupted due to time management considerations\\ +== Version 0.88 (7/18/21) == 
--- Added Hash Tables, with a fixed size of 128MB\\ +-- Added tapered eval\\ 
--- Maximum search depth increased from 20 to 30\\ +-- Created rudimentary tuning system and tuned all eval parameters except PSTs (I'm too lazy)\\ 
--- Fixed a bug with evaluating castling moves\\ +-- Time management is now less conservative overall\\ 
--- Fixed a bug determining which King piece table to use\\ +-- Fixed a bug in which the best move from IID might move farther down in the move order if it was also a killer\\ 
--- Can now generate capturing moves only so quiescent search has less moves to sort/deal with\\ +-- Significantly reduced the frequency of checking for input from stdin\\ 
--- Quiescent moves are added to PV\\ +-- Fixed a crash that could occur when making a very long PV string\\ 
--- Added code for pushing lone King towards edge of board\\ +-- Fixed a bug that could cause the setboard/loadfen command to fail if the FEN string had any trailing whitespaces\\ 
--- Added material and 50-move draw detection\\ +-- Removed "Mate in N" announcement from PVs during fail highs and fail lows\\ 
--- Fixed a bug in the "undo" and "remove" commands\\ + 
--- Fixed some bugs in the 3-fold repetition detection\\ +== Version 0.87 (1/20/15) == 
--- Fixed a stupid bug that caused me to check for user input WAY too often -- many thanks to Bob Hyatt for pointing me in the right direction\\ +-- Added SMP support for up to 16 instances (using processes and shared hash memory -- Very Lazy SMP!) -- only tested up to 4 instances! This use of shared memory for all hash tables (transposition, eval and pawn) means that the reported memory usage may appear to be incorrect depending on what program you use to get the information. Beware!\\ 
--- Significant code cleanup\\+-- Fixed very embarrassing bug in passer eval calculating the distance between two squares that could cause any number of other issues, even a hang or crash\\ 
 +-- Added support for the "cores" command which changes the number of processes being used when SMP is enabled. The initial value will be based on ini file settings.\\ 
 +-- Added a "tb" command which toggles tablebase support. The initial value will be based on ini file settings.\\ 
 +-- Added "Mate in N" announcements to PV output when applicable\\ 
 +-- Fixed a bug in saving scores near mate to the hash table\\ 
 +-- Fixed a bug in determining valid knight outpost squares\\ 
 +-- Fixed text output bug in kibitzing opening book moves on ICC\\ 
 +-- Fixed a rare bug in determining material draw\\ 
 +-- Fixed a bug in which Myrddin would hang or crash if the '.' command (used by Chessmaster GUI) was sent while Myrddin was pondering\\ 
 +-- Fixed a bug that could cause hash memory allocation to fail if more than 1GB was requested. Thanks to Graham Banks for reporting this issue.\\ 
 + 
 +== Version 0.86 (12/21/12) == 
 +-- Finished conversion to bitboards from 0x88\\ 
 +-- Added pawn hash (thanks again, Dann!)\\ 
 +-- Removed lazy eval\\ 
 +-- Added support for winboard "st" and "sd" commands\\ 
 +-- Lots of bug fixes either discovered by the bitboard conversion or removed by them (of course, new bugs added!)\\ 
 + 
 +== Version 0.85 (5/3/11) == 
 +-- Almost complete rewrite of the evaluation, in particular the pawn structure evaluation and king safety. Also added mobility factor and significantly adjusted many piece table values\\ 
 +-- Added SEE (thanks, Andrés!)\\ 
 +-- Added futility pruning\\ 
 +-- Added resign. See Myrddin's INI file for instructions, as this is off by default\\ 
 +-- Added second aspiration window at 150 centipawns\\ 
 +-- Cleaned up code for how reductions/extensions are used to modify depth in search calls\\ 
 +-- Will now claim draw by insufficient material, but only checking for bare kings or at most one minor on board\\ 
 +-- Now generating all moves in quiescent search if side to move is in check\\ 
 +-- Now searching all moves in order of their move score order, instead of just the first four moves and then taking the rest as they were generated\\ 
 +-- Some changes to the transposition table replacement strategy\\ 
 +-- Fixed a bug in which the en passant square was not being passed to the Gaviota tablebase probe\\ 
 +-- Fixed a bug in which the 50-move draw check was not checking that the drawing move was also checkmate\\ 
 +-- Fixed a bug in which the flag for a mate threat found during null move was not being stored in the hash table\\ 
 +-- Fixed a bug in which a hash entry could be saved when the engine was forcibly bailing out of a search \\ 
 +-- Fixed a bug that could cause Gaviota tablebases folder to not be read properly from the INI file \\ 
 + 
 +== Version 0.84 (9/17/10) == 
 +-- Added Gaviota tablebases (thanks so much to Miguel Ballicora, also the author of the Gaviota chess engine, for making this available!)\\ 
 +-- Added initialization file for setting hash size, creating log file, turning on kibitz, and tablebase info\\ 
 +-- Fixed a bug in which a hash probe would not return a hash move if the saved depth was less than the requested depth (thanks to Edmund Moshammer, author of Glass!), so in these cases the hash move would not be used for move ordering\\ 
 +-- Implemented fail-hard\\ 
 +-- Tweaked parameters for reductions (yet again)\\ 
 +-- Adjusted queen value from 900 to 950 and minor piece value from 310 to 320\\ 
 +-- Adjusted bishop pair bonus from 20 to 30\\ 
 +-- Removed second aspiration window\\ 
 +-- Lazy eval is now more conservative\\ 
 +-- Will now analyze the entire depth if the first move searched fails low, or if first move fails high in a non-mate situation\\ 
 +-- Increased maximum search time to half of the remaining clock (required due to above item)\\ 
 +-- Added support for winboard "computer" command -- kibitz PV, book moves and "Mate in N"\\ 
 +-- Increased max half-moves in a game to 1024\\ 
 +-- Fixed a bug in which the first move searched at the root was saved in the hash table as an exact value even if it did not improve alpha\\ 
 +-- Fixed a bug in which Myrddin would run out of time by thinking indefinitely if it was told it had a negative amount of time on its clock (can happen on ICS due to lag)\\ 
 +-- Modified the check to see if null move is allowable, previously was if any piece was on board, now only if side to move has at least one piece\\ 
 + 
 +== Version 0.83 (2/22/10) == 
 +-- Only search to depth 1 when there is only one legal move and pondering is off\\ 
 +-- No longer clearing the hash table before starting a depth 1 search\\ 
 +-- Improved hash replacement strategy\\ 
 +-- If a search depth was reduced by late-move reductions, and that search improves alpha, now researching at proper depth\\ 
 +-- Reductions are now less aggressively implemented\\ 
 +-- Adjusted the second aspiration window from 300 to 110 centipawns\\ 
 +-- Doubled (or worse) passed pawns after the leading pawn no longer get the passed pawn bonus\\ 
 +-- Will now play a move in a checkmating line as soon as it is confirmed to be optimal\\ 
 +-- Removed "Result" from checkmate reporting\\ 
 +-- Rook and minor vs rook (with no pawns) is now hard-coded as a draw -- should be safe in 99.99% of cases\\ 
 +-- Re-removed bad king safety code\\ 
 +-- Now using piece square table for knight outposts, rather than a hard-coded bonus\\ 
 +-- Modified piece square table for kings in opening and middlegame\\ 
 +-- Added penalty for having no pawns, to help avoid trading down into pawnless endgames (e.g. rook vs. minor)\\ 
 +-- Sending the '.' command during analysis no longer restarts the analysis from depth 1. The '.' command is still not implemented, though.\\ 
 +-- Fixed a bug in which most hash moves were not getting placed at the beginning of the move order\\ 
 +-- Fixed a bug evaluating Black doubled and passed pawns\\ 
 +-- Fixed a bug in which the initial position was not being checked for draw by repetition\\ 
 +-- Fixed a bug maintaining wood tables when unmaking a promotion move\\ 
 +-- Fixed an asymmetrical problem in the bishop piece square table\\ 
 +-- Fixed a problem with determining if a rook or queen was behind a passed pawn\\ 
 +-- Fixed a problem with calculating the pawn shield of a king on column h, or a king not on his home row\\ 
 +-- fixed a bug updating the board signature after making a null move when en passant was possible\\ 
 +-- king+rook vs. king+minor is now being scored as a draw\\
== Version 0.82 (9/25/09) == == Version 0.82 (9/25/09) ==
Line 198: Line 291:
-- Logfiles are now created in a "logs" folder below the Myrddin executable program, as requested by Lars\\ -- Logfiles are now created in a "logs" folder below the Myrddin executable program, as requested by Lars\\
-== Version 0.83 (2/22/10) == +== Version 0.81 (aka Alpha 2) (5/26/09) == 
--- Only search to depth 1 when there is only one legal move and pondering is off\\ +-- Reduced move generation time by ~21% (perft 6 on initial position went from 57 to 44 seconds on P4-3.0)\\ 
--- No longer clearing the hash table before starting a depth 1 search\\ +-- Search now pings the input command handler every 8K nodes (about 1/30-1/50 second, depending on position and hardware), so applicable commands can now be entered during search/analysis\\ 
--- Improved hash replacement strategy\\ +-- Search will allocate extra thinking time when it gets noticeable drop in score\\ 
--- If a search depth was reduced by late-move reductions, and that search improves alpha, now researching at proper depth\\ +-- Evaluation improvements -- pawn structure, open and semi-open files for rooks, rooks behind passers, king safety\\ 
--- Reductions are now less aggressively implemented\\ +-- Added MVV/LVA and PV Move Ordering\\ 
--- Adjusted the second aspiration window from 300 to 110 centipawns\\ +-- Added Killer and History move ordering heuristics\\ 
--- Doubled (or worse) passed pawns after the leading pawn no longer get the passed pawn bonus\\ +-- Added Null Move reductions\\ 
--- Will now play a move in a checkmating line as soon as it is confirmed to be optimal\\ +-- Added Late Move reductions\\ 
--- Removed "Result" from checkmate reporting\\ +-- Added Opening Book (ProDeo -- Thanks, Ed!)\\ 
--- Rook and minor vs rook (with no pawns) is now hard-coded as a draw -- should be safe in 99.99% of cases\\ +-- Added pondering, so "hard" and "easy" commands are now supported\\ 
--- Re-removed bad king safety code\\ +-- "analyze", "?" and "result" commands are now supported\\ 
--- Now using piece square table for knight outposts, rather than a hard-coded bonus\\ +-- "level" command is now fully supported for all time control types\\ 
--- Modified piece square table for kings in opening and middlegame\\ +-- Added check for dirty pawn structure before evaluation\\ 
--- Added penalty for having no pawns, to help avoid trading down into pawnless endgames (e.g. rook vs. minor)\\ +-- Search can be interrupted due to time management considerations\\ 
--- Sending the '.' command during analysis no longer restarts the analysis from depth 1. The '.' command is still not implemented, though.\\ +-- Added Hash Tables, with a fixed size of 128MB\\ 
--- Fixed a bug in which most hash moves were not getting placed at the beginning of the move order\\ +-- Maximum search depth increased from 20 to 30\\ 
--- Fixed a bug evaluating Black doubled and passed pawns\\ +-- Fixed a bug with evaluating castling moves\\ 
--- Fixed a bug in which the initial position was not being checked for draw by repetition\\ +-- Fixed a bug determining which King piece table to use\\ 
--- Fixed a bug maintaining wood tables when unmaking a promotion move\\ +-- Can now generate capturing moves only so quiescent search has less moves to sort/deal with\\ 
--- Fixed an asymmetrical problem in the bishop piece square table\\ +-- Quiescent moves are added to PV\\ 
--- Fixed a problem with determining if a rook or queen was behind a passed pawn\\ +-- Added code for pushing lone King towards edge of board\\ 
--- Fixed a problem with calculating the pawn shield of a king on column h, or a king not on his home row\\ +-- Added material and 50-move draw detection\\ 
--- fixed a bug updating the board signature after making a null move when en passant was possible\\ +-- Fixed a bug in the "undo" and "remove" commands\\ 
--- king+rook vs. king+minor is now being scored as a draw\\+-- Fixed some bugs in the 3-fold repetition detection\\ 
 +-- Fixed a stupid bug that caused me to check for user input WAY too often -- many thanks to Bob Hyatt for pointing me in the right direction\\ 
 +-- Significant code cleanup\\
-== Version 0.84 (9/17/10) == +== Version 0.80 (aka Alpha 1) (3/9/09) == 
--- Added Gaviota tablebases (thanks so much to Miguel Ballicora, also the author of the Gaviota chess engine, for making this available!)\\ +Initial Release, rated approximately 1200-1300
--- Added initialization file for setting hash size, creating log file, turning on kibitz, and tablebase info\\ +
--- Fixed a bug in which a hash probe would not return a hash move if the saved depth was less than the requested depth (thanks to Edmund Moshammer, author of Glass!), so in these cases the hash move would not be used for move ordering\\ +
--- Implemented fail-hard\\ +
--- Tweaked parameters for reductions (yet again)\\ +
--- Adjusted queen value from 900 to 950 and minor piece value from 310 to 320\\ +
--- Adjusted bishop pair bonus from 20 to 30\\ +
--- Removed second aspiration window\\ +
--- Lazy eval is now more conservative\\ +
--- Will now analyze the entire depth if the first move searched fails low, or if first move fails high in a non-mate situation\\ +
--- Increased maximum search time to half of the remaining clock (required due to above item)\\ +
--- Added support for winboard "computer" command -- kibitz PV, book moves and "Mate in N"\\ +
--- Increased max half-moves in a game to 1024\\ +
--- Fixed a bug in which the first move searched at the root was saved in the hash table as an exact value even if it did not improve alpha\\ +
--- Fixed a bug in which Myrddin would run out of time by thinking indefinitely if it was told it had a negative amount of time on its clock (can happen on ICS due to lag)\\ +
--- Modified the check to see if null move is allowable, previously was if any piece was on board, now only if side to move has at least one piece\\+
-== Version 0.85 (5/3/11) == 
--- Almost complete rewrite of the evaluation, in particular the pawn structure evaluation and king safety. Also added mobility factor and significantly adjusted many piece table values\\ 
--- Added SEE (thanks, Andrés!)\\ 
--- Added futility pruning\\ 
--- Added resign. See Myrddin's INI file for instructions, as this is off by default\\ 
--- Added second aspiration window at 150 centipawns\\ 
--- Cleaned up code for how reductions/extensions are used to modify depth in search calls\\ 
--- Will now claim draw by insufficient material, but only checking for bare kings or at most one minor on board\\ 
--- Now generating all moves in quiescent search if side to move is in check\\ 
--- Now searching all moves in order of their move score order, instead of just the first four moves and then taking the rest as they were generated\\ 
--- Some changes to the transposition table replacement strategy\\ 
--- Fixed a bug in which the en passant square was not being passed to the Gaviota tablebase probe\\ 
--- Fixed a bug in which the 50-move draw check was not checking that the drawing move was also checkmate\\ 
--- Fixed a bug in which the flag for a mate threat found during null move was not being stored in the hash table\\ 
--- Fixed a bug in which a hash entry could be saved when the engine was forcibly bailing out of a search \\ 
--- Fixed a bug that could cause Gaviota tablebases folder to not be read properly from the INI file \\ 
- 
-== Version 0.86 (12/21/12) == 
--- Finished conversion to bitboards from 0x88\\ 
--- Added pawn hash (thanks again, Dann!)\\ 
--- Removed lazy eval\\ 
--- Added support for winboard "st" and "sd" commands\\ 
--- Lots of bug fixes either discovered by the bitboard conversion or removed by them (of course, new bugs added!)\\ 
- 
-== Version 0.87 (1/20/15) == 
--- Added SMP support for up to 16 instances (using processes and shared hash memory -- Very Lazy SMP!) -- only tested up to 4 instances! This use of shared memory for all hash tables (transposition, eval and pawn) means that the reported memory usage may appear to be incorrect depending on what program you use to get the information. Beware!\\ 
--- Fixed very embarrassing bug in passer eval calculating the distance between two squares that could cause any number of other issues, even a hang or crash\\ 
--- Added support for the "cores" command which changes the number of processes being used when SMP is enabled. The initial value will be based on ini file settings.\\ 
--- Added a "tb" command which toggles tablebase support. The initial value will be based on ini file settings.\\ 
--- Added "Mate in N" announcements to PV output when applicable\\ 
--- Fixed a bug in saving scores near mate to the hash table\\ 
--- Fixed a bug in determining valid knight outpost squares\\ 
--- Fixed text output bug in kibitzing opening book moves on ICC\\ 
--- Fixed a rare bug in determining material draw\\ 
--- Fixed a bug in which Myrddin would hang or crash if the '.' command (used by Chessmaster GUI) was sent while Myrddin was pondering\\ 
--- Fixed a bug that could cause hash memory allocation to fail if more than 1GB was requested. Thanks to Graham Banks for reporting this issue.\\ 
---- ----
====Thanks and Contact Info==== ====Thanks and Contact Info====
Many thanks to the following brilliant people who helped/guided me (either directly or indirectly) in countless ways with their work:\\ Many thanks to the following brilliant people who helped/guided me (either directly or indirectly) in countless ways with their work:\\
-  * Ron Murawski -- [[http://www.horizonchess.com | Horizon]] and LOTS of helpful comments and suggestions, plus guidance in my first trips in 64-bit land +  * Ron Murawski -- [[http://www.horizonchess.com | Horizon]] and LOTS of helpful comments and suggestions, plus guidance in my first trips in 64-bit land, plus hosting this site! 
-  * Andrés Valverde ([[http://webs.ono.com/a.valverde/eveann.htm | EveAnn]], [[http://www.dirtychess.com | Dirty]]), Andrew Fan ([[http://fireflychess.dyndns.org | FireFly]]), Fonzy Bluemers ([[http://www.dirtychess.com | Dirty]]) and Martin Sedlak ([[http://www.vlasak.biz/cheng/ | Cheng]]) - for lots of assistance, ideas and fun chat during various online tournaments. Martin also created the optimized compiles for v0.87.\\+  * Martin Sedlak -- [[http://vlasak.biz/cheng/ | Cheng]] and patient explanation of Texel tuning
  * Lars Hallerström - The Mad Swedish Tester! I would never release anything without his (grudging) approval.   * Lars Hallerström - The Mad Swedish Tester! I would never release anything without his (grudging) approval.
  * Dann Corbit -- Without whose generous help, huge speed improvements, bug fixes and general suggestions, the first bitboard version (v0.86) would not have been released   * Dann Corbit -- Without whose generous help, huge speed improvements, bug fixes and general suggestions, the first bitboard version (v0.86) would not have been released
 +  * Bruce Moreland -- [[http://web.archive.org/web/20040202003948/brucemo.com/compchess/gerbil/index.htm | Gerbil]] and well-documented and explained code on his website that taught me the basics
  * Dr. Robert Hyatt -- [[http://www.craftychess.com | Crafty]] (it is impossible to create an engine without thanking him)   * Dr. Robert Hyatt -- [[http://www.craftychess.com | Crafty]] (it is impossible to create an engine without thanking him)
 +  * Ed Schröder and Jeroen Noomen -- [[http://members.home.nl/matador/prodeo.htm | ProDeo]] Opening Book
  * Miguel Ballicora - [[https://sites.google.com/site/gaviotachessengine | Gaviota]] and making his tablebase generating/probing VERY easy to implement    * Miguel Ballicora - [[https://sites.google.com/site/gaviotachessengine | Gaviota]] and making his tablebase generating/probing VERY easy to implement 
  * Mark Lefler and the [[http://chessprogramming.wikispaces.com/ | Chess Programming Wiki]] team.   * Mark Lefler and the [[http://chessprogramming.wikispaces.com/ | Chess Programming Wiki]] team.
-  * Ed Schröder and Jeroen Noomen -- [[http://members.home.nl/matador/prodeo.htm | ProDeo]] Opening Book 
-  * [[http://jim-ablett.co.de/ | Jim Ablett]] -- creating optimized executables  
  * Tom Kerrigan -- [[http://www.tckerrigan.com/Chess/TSCP | TSCP]]   * Tom Kerrigan -- [[http://www.tckerrigan.com/Chess/TSCP | TSCP]]
-  * Bruce Moreland -- [[http://web.archive.org/web/20040202003948/brucemo.com/compchess/gerbil/index.htm | Gerbil]]  
-  * Chris Tatham -- [[https://sites.google.com/site/numptychess | Numpty]] and testing assistance (and great analysis of testing results) 
-  * Vladimir Medvedev -- [[http://sites.google.com/site/grekochess | Greko]] 
-  * Pham Hong Nguyen -- **Firstchess** 
  * And finally, the [[http://www.chessmaster.com | Chessmaster]] Development Team, comprised of lots of brilliant people, but mostly Johan de Koning (programmer of The King engine), Don Laabs (programmer of many of Chessmaster's low-level chess UI routines), James Stoddard (programmer of Chessmaster Live, the winboard UI support, and most of Chessmaster's game-handling routines) and Dave Cobb (programmer of Chessmaster's opening book editor and many other support features).   * And finally, the [[http://www.chessmaster.com | Chessmaster]] Development Team, comprised of lots of brilliant people, but mostly Johan de Koning (programmer of The King engine), Don Laabs (programmer of many of Chessmaster's low-level chess UI routines), James Stoddard (programmer of Chessmaster Live, the winboard UI support, and most of Chessmaster's game-handling routines) and Dave Cobb (programmer of Chessmaster's opening book editor and many other support features).

Personal Tools