Computer Chess Club Archives


Search

Terms

Messages

Subject: Here's the readme file

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.