UCI upperbound and lowerbound

Code, algorithms, languages, construction...
Post Reply
thevinenator
Posts: 68
Joined: Tue Jun 02, 2015 11:02 pm
Real Name: Vince

UCI upperbound and lowerbound

Post by thevinenator » Thu Dec 01, 2016 8:56 pm

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.
"An Engine's strength flows from the Search. But beware, pruning, extensions, reductions; the dark side of the Search are they. Once you start down the dark path, it will dominate and consume you, as it has to so many developers before.” -- Yoda

H.G.Muller
Posts: 190
Joined: Sun Jul 14, 2013 10:00 am
Real Name: H.G. Muller

Re: UCI upperbound and lowerbound

Post by H.G.Muller » Thu Dec 01, 2016 11:48 pm

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.

Post Reply