Page 1 of 1

UCI upperbound and lowerbound

Posted: Thu Dec 01, 2016 8:56 pm
by thevinenator
when viewing output from an UCI compatible engine in Arena, the output shows the ply with either a '+', '-', or nothing behind it, such as

12
12+
12+

When monitoring the output from the engine, the +/-/blanks codes map to:

+ = upperbound
- = lowerbound
blank = ?

in code, when writing to UCI, does the upperbound mean a beta cutoff occurred, or does it mean that alpha is the "upper bound" since the score failed lower than alpha?

and what does blank mean? i thought that that might refer to the exact score, but sometimes there are two blank entries in a row, such as:

14+
13
13
13-

what is the practice here? some possible outputs are anytime alpha is raised, anytime there is a beta cutoff, whenever there is an exact score found.

Re: UCI upperbound and lowerbound

Posted: Thu Dec 01, 2016 11:48 pm
by H.G.Muller
Engines that use aspiration of the search window in the root, instead of setting it to {-INF, INF} can have fail highs (beta cutoffs) or fail lows in the root. The returned score is then a lower bound or a upper bound, respectively. This is what the UCI keywords indicate. How the GUI displays it, is the choice of the GUI designer. Most logical solution would be to write a + or - with the score, e.g. 1.25+ indicating a score of at least 1.25 (i.e. a lower bound).

Some engines print a PV only at the end of the iteration. Other engines print one every time they find a better move. The score then should increase for every next PV of the same depth. That is a choice of the engine designer. Some engines even make that subject to an interactive option that the user can set.