I wrote a little tool some years ago, that calculate the "exact" value for
such racing position. It calculates the probabilities with a top-down
dynamic programming way and uses *-minimax algorithm to fill in the values
and prune useless moves.
It is really unusable in real life situation as the evaluation usually
takes a few minutes (depending on the position, of course), and the
calculation uses a lot of memory! However I was hoping this method could
have been used in establishing a training dataset, but I've not build such
a dataset yet. :-o
I managed to calculate the gammon saving probability of the posted position
in a few minutes using about 15GB of memory. (I also have a slower version
of the tool that uses sparse matrices to store the probabilities, but I did
not try that today)
oystein@LinuxGPU4:~/octopus/twoside$ ./lopsided --mode=gammonsave
2000036300001 2231
#off: 0 board: 2----3|63----|1-----|-----
chk(bb): x----x|xx----|x-----|----- back: 13 #out: 10 #cross: 26
#off: 7 board: 2231--|------|------|-----
chk(bb): xxxx--|------|------|----- back: 4 #out: 0 #cross: 8
Cubeless prob. of saving gammon: 0.129424
If anyone is interested, I'll share some code.
-Øystein
On Tue, Mar 19, 2019 at 10:36 PM Philippe Michel <[email protected]>
wrote:
> On Mon, Mar 18, 2019 at 10:25:52AM +0100, Terje Pedersen wrote:
>
> > I just ran into a huge evaluation difference between XG and Gnu BG:
> >
> > XGID=-B----CFC----A-------acbb-:1:1:1:16:0:0:0:5:10
> >
> > I got dinged with a -0.684 error here while XG says it is a -0.0013
> > error to play 13/6.
> >
> > Desktop version says it is:
> >
> > 7. Cubeful 0-ply 13/6 Eq.: -2,264 (
> -0,328)
> > 0,000 0,000 0,000 - 1,000 0,964 0,000
> > 0-ply cubeful prune [expert]
> >
> > but still wildly off. Perhaps difficult to fix these kind of problems?
>
> The position is of a kind that was probably not common in the racing
> neural net training database. X's formation just doesn't happen in real
> play, does it ?
>
> GNU Backgammon Position ID: 2wUAAAb3OwgAAA
> Match ID : UQmnAAAAAAAE
> +13-14-15-16-17-18------19-20-21-22-23-24-+ O: GNUbg
> | X | | O O O O | OO 0 points
> | | | O O O | OO
> | | | O | O
> | | | | O
> | | | | O
> v| |BAR| | 5 point match
> | 6 | | |
> | X | | |
> | X X | | X |
> | X X | | X X | Rolled 61
> | X X | | X X | 0 points
> +12-11-10--9--8--7-------6--5--4--3--2--1-+ X: You (Cube: 2)
> Pip counts : O 19, X 99
>
> "Fixing" this at the neural net level doesn't look easy. Adding a few
> hundreds or thousands of similar positions in the training data would
> probably help but it is difficult to guess in advance if the improvement
> would be significant.
>
> It wouldn't change the program's strength (it doesn't get into these
> positions) but may avoid or at least mitigate this kind of embarrassing
> result when analysing.
>
> What you can do if it is important for you (for the analysis feature of
> Backgamon Studio, I suppose) is to use the largest one-sided bearoff
> database, available there :
> ftp://ftp.demon.nl/pub/Museum/Demon/games/gnubg/databases/os/
>
> If the download size is an issue, you can compute it yourself with the
> makebearoff utility from gnubg ; os13.bd (with the back checker up to
> the midpoint, as in your position) should take about one day, smaller
> ones would be much faster.
>
> With it, I get :
>
> 1. Cubeful 2-ply 13/6 Eq.: -2.201
> 0.000 0.000 0.000 - 1.000 0.913 0.000
> 2-ply cubeful prune [world class]
> 2. Cubeful 2-ply 8/2 7/6 Eq.: -2.204 (-0.003)
> 0.000 0.000 0.000 - 1.000 0.915 0.000
> 2-ply cubeful prune [world class]
> 3. Cubeful 2-ply 7/6 7/1 Eq.: -2.213 (-0.013)
> 0.000 0.000 0.000 - 1.000 0.923 0.000
> 2-ply cubeful prune [world class]
> 4. Cubeful 2-ply 13/12 8/2 Eq.: -2.234 (-0.034)
> 0.000 0.000 0.000 - 1.000 0.939 0.000
> 2-ply cubeful prune [world class]
> 5. Cubeful 2-ply 13/12 7/1 Eq.: -2.240 (-0.039)
> 0.000 0.000 0.000 - 1.000 0.943 0.000
> 2-ply cubeful prune [world class]
> 6. Cubeful 2-ply 13/7 6/5 Eq.: -2.294 (-0.093)
> 0.000 0.000 0.000 - 1.000 0.984 0.000
> 2-ply cubeful prune [world class]
>
> It may seem radical to use a 1.5 Gb database just for this but, besides
> the disk space needed, it is essentially free. The file is not read, it
> is merely mapped into memory and the relevant blocks are read only when
> needed.
>
> _______________________________________________
> Bug-gnubg mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/bug-gnubg
>
_______________________________________________
Bug-gnubg mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-gnubg