Author: Graham Banks
Date: 15:13:22 02/11/06
Go up one level in this thread
Hopefully this will answer many questions before they're asked! :-) Graham. Rybka 1.01 Beta 13d February 11, 2006 Release Audience Rybka Beta testers. Release Features 1) Bug fixes 2) Some changes to hash table FAQ What will Beta 13d handle better than Beta 13b? Beta 13d avoids two clear but rare hash-table-induced blindnesses of earlier versions: 1) Some moves could be completely and permanently overlooked in the search 2) Stalemates could be completely and permanently overlooked in the search In both cases, earlier Rybka versions could simply refuse to ever understand even very simple tactics. Is the playing strength improved? Very little. The bug-fix of the two above cases, plus two tweaks to the hash table, should give a very modest improvement. Are any of the endgame heuristics present in this version? No. They are being included and tested separately, and will be included in Rybka Beta 14. What's Next? The rough, completely unofficial, upcoming schedule: Beta 14: endgame heuristics, Feb 18 or so Beta 15: persistent hash tables & tool for editing/merging them, Feb 20 or so --------------------------------- The rest of this readme is taken from the Beta 13b readme and describes the various configurable Rybka parameters. --------------------------------- Preserve Analysis User Option Target Audience Experienced computer chess analysts. Target Usage Scenario This option should be selected if you plan to ask Rybka to analyze some position very deeply (ie. for at least 30 minutes), and would then like to scroll forwards and backwards through this analysis quickly in your GUI without the engine having to recompute it. Usage Instructions 1) Set up the position which you want analyzed deeply in your GUI. 2) Make sure that the "Preserve Analysis" check box is checked 3) Clear the hash table 4) Run Rybka is infinite analysis mode for as long as you think is appropriate 5) Scroll forward and backwards through the tree of variations arising from the position. In each case, Rybka will automatically remember the most important parts of her analysis from step #4, as well as any additional analysis from the subsequent scrolling around. 6) When you are ready to move to a new position, or for some other reason don't want this analysis preserved any more, either clear the hash table or uncheck the "Preserve Analysis" check box. Failure to perform step #6 will lead to a gradual degregation in program performance. Technical During any normal analysis, Rybka must constantly create space for a new hash entry. In normal circumstances, her first criterion for which entry to replace is so-called "age" - that is, entries from previous searches are replaced first, regardless of how otherwise valuable is the information which they contain. There is little doubt that this is appropriate for game-play, where positions are encountered once and then left in the dust. Unfortunately, this scheme is counterproductive for analysis, where users tend to jump back and forth through their analysis and furthermore may want the engine to pre-compute some important data. When "Preserve Analysis" is checked, Rybka makes the following two changes to her hash table behavior: 1) All hash entries which are deeper than a minimum threshold (hard-coded to 8 ply for the time being) are no longer discriminated against because of their age. In practice, this means that almost all such entries will remain in the hash table. 2) Such "special" entries are treated as fully reliable for the specified depth by the Rybka search, even in scenarios where the normal game-playing Rybka search would not do so. This is again a special case, targeted especially at analysis. User Feedback The implementation found here is likely not the final word on this topic. I am looking for a simple yet powerful solution to include with Rybka 1.2 and welcome all feedback on the topic. Configurable Search Parameter Data The brief conclusions about Rybka search parameters to date are: 1) The Seach Focus parameter seems to have little impact on playing strength (oddly enough), and the default setting of 2 has indeed performed the best overall (also quite odd, it was a wild guess on my part). 2) The Search Soundness parameter should either be "solid" or "ultrasolid". Currently "ultrasolid" scores slightly better, but I'd like to collect more data. The other two settings are now out of the running for default. 3) The Search Direction parameter will continue to have the "slightly positional" default, which has performed slightly stronger than the alternatives. 4) The Search Outlook parameter is very interesting and will now be investigated in more detail. The potential for improvement is large, but a more properly adaptive approach appears to be called for. Please see the section below for more details. Search Outlook Background Of the parameters exposed for testing in the Beta 10 release, the Search Outlook parameter has been the most productive. Under some conditions, optimistic settings appear to give a marked improvement; under other conditions, neutral and even pessimistic settings appear to be better. As a result, Beta 12 contains a greatly expanded set of configurable parameters for playing around with this aspect of search. Disclaimer: these parameters are (at the moment) quite complicated, and if a user doesn't know what he's doing, he can create some configurations which will seriously harm the playing level of the engine. If you are not an expert in these settings, I suggest that you leave them at their default settings until more experienced testers have had a chance to determine which combination is the best. Optimism and Pessimism The Rybka search has a concept of optimism and pessimism. To put this concept into lay terms, a more optimistic search will look harder at alternatives for the side to move which have been previously dismissed, while a more pessimistic search will look harder at alternatives for the opponent. Inside the Rybka search, these two concepts are already handled in a naturally asymmetric manner, and this setting allows the user to control the extent of this asymmetry. The practical effect is that optimistic settings are more likely to quickly find resources for the side-to-move which increase the advantage, while pessimtic settings are more likely to quickly find resources for the opponent which refute the currently intended move (and force the player-to-move to look for a better one). Adaptiveness of Optimism The initial data has suggested that a blanket optimism or pessimism is not the best way. Rather, the search should be optimistic in some settings, and pessimistic in others. Of course, this is done inside the search naturally. The question for these settings is if we can make a global suggestion based on the situation which is known before the search even begins. The following hypothesis currently exist: 1) Weaker opponents call for more optimism 2) Good positions call for more optimism 3) Good positions call for more pessimism : 4) Improving positions call for more optimism 5) Fast time control games call for more pessimism As you can see, at least one of the above hypothesis is guaranteed to be wrong. This investigation is in the early stages. A Bit More Technical The current implementation of the Search Outlook control is complicated enough that I have to go a bit deeper. Rybka has an "iterative" search. That is, it does a pass #1 of the root position, then a pass #2 (which takes longer and comes to a better conclusion), then a pass #3, etc. Almost every engine works iteratively, although the quantities being iterated over may differ. There is always a point where the engine is about to start pass #x of the current position. This is the point at which we compute the level of optimism for that pass (or "iteration"). At the next pass, we compute the level of optimism again - it may be different. The optimism is calculated as follows: 1) Start with the basic optimism value, according to the "Outlook" setting, using the following translation: Very pessimistic: -2 Slightly pessimistic: -1 Neutral: 0 Slightly optimistic: 1 Very optimistic 2 2) Adjust the optimism based on the level of the opponent, taken from the "Opponent Level" parameter. (If "slightly strong" or "much stronger", we use the adaptation from the "Stronger Opponent Adjustment" setting. If "slighty weaker" or "much weaker", we use the adaptation from the "Weaker Opponent Setting". If "equal", we do not adjust the optimism based on the level of the opponent.) An adaptation of "much more pessimistic" subtracts two from the optimism. An adaptation of "slightly more pessimistic" subtracts one from the optimism An adaptation of "none" does not change the optimism An adaptation of "slightly more optimistic" adds one to the optimism An adaptation of "much more optimistic" adds two to the optimism 3) Adjust the optimism based on the latest search score for the position. This is controlled via the "Good Position Adjustment" and "Bad Position Adjustment" parameters. (A good position is considered one with a score of >20 centipawns, a bad one is <-20 centipawns.) 4) Adjust the optimism based on the latest improvement of the position. This is controlled via the "Improving Position Adjustment" and "Deteriorating Position Adjustment" parameter. (A position is improving if twice in a row the search score increased, or if the search score increased by >35 centipawns over the lat three "iterations") 5) Adjust the optimism based on the time control. This is controlled via the "Very Fast Time Control" parameter. (A time control is considered "very fast" if the search allocates less than 8 seconds for the upcoming move.) The final optimism calculated using the above algorithm is used in the search for that pass (or "iteration"). Search Parameters related to Outlook The following parameters are used to control the outlook (more details are found in the "A Bit More Technical" section above.) 1) Opponent Level 2) Outlook 3) Stronger Opponent Adjustment 1) Weaker Opponent Adjustment 2) Good Position Adjustment 3) Bad Position Adjustment 4) Improving Position Adjustment 5) Deteriorating Position Adjustment 6) Very Fast Time Control Adjustment Final Notes I have left the default configuration to be the "neutral" state, with no adjustments. This is done to make sure that the default Rybka Beta 12 configuration is well-tested before release. The hypotheses listed above must be set by users manually. Other Configurable Search Parameters This section deals with configurable search parameters other than "Search Outlook". These are at the moment a bit less important. Search Soundness Values: Ultrasolid, Solid, Speculative, Ultraspeculative Default: Solid Confidence in default: Medium to High Overview: Similar in concept to "search focus". Solid values make fewer assumptions about the position and are less likely to make a really serious search mistake. Speculative values attempt to guess more. Background: As in the case of "search focus", an intelligent search would use an "ultraspeculative" approach. Unfortunately, Rybka's current heuristics don't appear to justify it. Of the four values, probably the "ultrasolid" and "solid" are the best choices at present. Summary of Test Data: Ultrasolid and Solid are both candidates to be the default setting in Rybka 1.2. Ultrasolid leads slightly, and my own intuition is quite neutral between these two. The more speculative settings don't perform well and they are now out of the running to be the default setting. Search Focus Values: #s from 1 to 6 Default: 2 Confidence in default: Medium to high Overview: Small values instruct the search to emphasize searching broadly at the expense of not searching as deeply. Larger values instruct the search to try to look deeply, at the risk of overlooking (or underestimating) moves which are improbable. Background: I have been trying and trying to organize my search in such a way that it can ignore looking at "stupid" variations and concentrate on the important ones. Unfortunately, it has not been easy to do this. The heuristics that I have come up with are controlled by this parameter. A value of 1 uses these heuristics very modestly and continues to spend considerable resources even on moves which are deemed unlikely, while a value of 6 uses them very aggressively. The values of 1 and 6 are unlikely to be best. If I had to guess, it would be that the modest settings of 2 or 3 are actually the strongest. Summary of Test Data: The default has performed the best by a slightly margin, but none of the other settings drops playing strength significantly. The sligthly weird conclusion at the moment is that there is not much to gain by twiddling with this parameter. Search Direction Values: Very Positional, Slightly Positional, Slightly Tactical, Very Tactical Default: Slightly Positional Confidence in default: High Overview: Positional settings are more likely to find good quiet continuations, tactical settings are more likely to find forcing continuations. Background: Unlike the other parameters, this one controls the behavior of the search "at the tips". The more tactical settings perform (or extend) additional tactical investigations into tip positions. There are two types of investigations: slightly positional is conservative is both, very tactical is aggressive with both, while slightly positional is conservative with one and aggressive with the other and slightly tactical is vice-versa. Summary of Test Data: This setting has been included since the very first Beta release and has been thoroughly tested. The original default was "very positional", but slightly positional performed a bit better and I have since aligned my thinking with the data :) The two tactical settings perform noticeably worse than the two positional settings. FAQ Which versions of Rybka feature playing strength improvements? Existing Rybka versions have the following three basic playing levels: 1) Rybka Beta 1 through Rybka Beta 7 - same strength 2) Rybka Beta 9 - first of the search changes, first improvement in playing strength 3) Rybka Beta 10, Rybka Beta 10d, Rybka Beta 11, Rybka Beta 12 - further search changes and further improvement in playing strength Most likely, Beta 13 has a very similar playing strength to Beta 12, but more testing is needed.
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.