[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-gnubg] Strange analysis of double
From: |
Jim Segrave |
Subject: |
[Bug-gnubg] Strange analysis of double |
Date: |
Tue, 6 Aug 2002 11:32:03 +0200 |
User-agent: |
Mutt/1.2.5i |
Or maybe it's just me...
(No game) load game weird.double
GNU Backgammon Position ID: ZoYxAUtjt4EDAg
Match ID : cARgAQAACAAA
+13-14-15-16-17-18------19-20-21-22-23-24-+ O: gnubg
| X O | O | O X O O | 0 points
| X O | | O O O |
| X | | |
| | | |
| | | |
v| |BAR| | 11 point match (Cube: 1)
| | | |
| | | |
| | | X |
| O X | | X X X O X | On roll
| O O X | | X X X O O X | 1 point
+12-11-10--9--8--7-------6--5--4--3--2--1-+ X: jes
(Game over) analyze game
(Game over) eval
Evaluator: CONTACT
Input Value dE/dI
OFF1 0.000 0.035
OFF2 0.000 -0.182
OFF3 0.000 -0.013
BREAK_CONTACT 0.000 -0.288
BACK_CHEQUER 0.000 -0.049
BACK_ANCHOR 0.000 -0.377
FORWARD_ANCHOR 0.000 -0.075
PIPLOSS 0.000 (0.000 avg) -0.440
P1 0.000 (0.000/36) -0.082
P2 0.000 (0.000/36) -0.483
BACKESCAPES 0.000 (0.000/36) -0.172
ACONTAIN 0.000 (0.000/36) -0.496
CONTAIN 0.000 (0.000/36) -0.273
MOBILITY 0.000 -0.252
MOMENT2 0.000 -0.048
ENTER 0.000 (0.000/12) -0.254
ENTER2 0.000 -0.050
TIMING 0.000 -0.252
BACKBONE 0.000 -0.033
BACKGAME 0.000 -0.266
BACKGAME1 0.000 -0.004
FREEPIP 0.000 -0.187
Win W(g) W(bg) L(g) L(bg) Equity (cubeful)
static: 0.736 0.515 0.047 0.044 0.000 (+1.020 (+1.146))
Double, pass : +1.000
Double, take : +1.809 (+0.809)
No double : +1.146 (+0.146)
Correct cube action: Double, pass
Hint and eval both say that a double is called for, analysis of a match where
a double is played here flags the double as a very bad move (which the equities
agree with, but says the correct play is double/pass. This applies with
analysize set to 'expert', 'world-class' and 'world-class++'
This is with a gnubg built from CVS taken 6 Aug, 8AM GMT. I noticed it last
night with a gnubg built from yesterday morining's CVS as well.
Looking at eval.c, in FindBestCubeDecision:
4550 if ( ( arDouble[ OUTPUT_TAKE ] >= arDouble[ OUTPUT_NODOUBLE ] ) &&
4551 ( arDouble[ OUTPUT_DROP ] >= arDouble[ OUTPUT_NODOUBLE ] ) ) {
This if fails because DP < ND, so we go to the else (line 4596) and following.
4604 if ( arDouble [ OUTPUT_NODOUBLE ] > arDouble [ OUTPUT_TAKE ] ) {
This if fails, we go to the else on line 4636, since DT > ND > DP
4636 else
4637
4638 /* 3. DT >= ND > DP: Too good, pass */
4639
4640 return ( pci->fCubeOwner == -1 ) ?
4641 DOUBLE_PASS : REDOUBLE_PASS;
4642
Which seems not to match the comments :-)
I've just been over the complete set of if's that are there and the rest look
correct to me.
--
Jim Segrave address@hidden
- [Bug-gnubg] Strange analysis of double,
Jim Segrave <=