gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnugo-devel] Restraining thrashing dragons.


From: Gunnar Farneback
Subject: [gnugo-devel] Restraining thrashing dragons.
Date: Fri, 05 Jul 2002 20:34:49 +0200
User-agent: EMH/1.14.1 SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.3 Emacs/20.7 (sparc-sun-solaris2.7) (with unibyte mode)

When the opponent adds stones to an already dead dragon, presumably
hoping to bring it to life due to some mistake or other, we call that
a thrashing dragon. GNU Go has code the generate moves to restrain a
thrashing dragon, but it doesn't seem to work quite right. A good
example showing this is the end of the NNGS game
lindq-gnugo-3.3.4-200207051636.sgf (available in cvs). In particular
the following moves are worth inspection:

192 at A7:
This move is horrible. To a part this is due to a bug in endgame
pattern EE1a which was fixed by a recent patch by Arend. After the
patch GNU Go prefers A8, which is better. The real problem in this
position though, is that the dragon isn't dead but critical. The owl
reading doesn't see the defense at E9 (neither did white).

202 at A9:
This does close to nothing to restrain the thrashing dragon. The
natural move is to cut and contain at J8.

210 at E9:
Also without much effect on the thrashing dragon. Better with a move
around K5.

212 at E11:
Does threaten to cut, but the only move that matters is K4.

214 at J2:
A huge valuation mistake, partly caused by an incorrect B pattern. Of
course H5 is the only move.


Looking closer at the valuation of the moves reveals that
revise_thrashing_dragon() only makes a half-hearted job. It revises
the matcher_status of the thrashing dragon, which causes the pattern
matching to come up with some new move reasons. This doesn't change
the valuation however, which continues to consider the suggested moves
as being inside own territory and having negative territorial value,
unless overridden by explicit territorial values from patterns
(typically endgame patterns). The moves found in this way are only
occasionally effective for restraining the dragon.

If we also revise the safety of the thrashing dragon and make a new
call to compute_initial_influence(), moves that really does restrain
the dragon significantly are valued substantially higher.

The appended patch solves all thrashing dragon problems in the
discussed game and adds regressions for the mistakes with critical
dragons.

/Gunnar

Index: engine/genmove.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/genmove.c,v
retrieving revision 1.42
diff -u -r1.42 genmove.c
--- engine/genmove.c    19 Jun 2002 22:30:04 -0000      1.42
+++ engine/genmove.c    5 Jul 2002 18:29:05 -0000
@@ -843,6 +843,11 @@
     if (ON_BOARD(pos)
        && is_same_dragon(pos, thrashing_dragon))
       dragon[pos].matcher_status = UNKNOWN;
+
+  DRAGON2(thrashing_dragon).safety = WEAKLY_ALIVE;
+  compute_initial_influence(color, 1);
+  compute_refined_dragon_weaknesses();
+  
   return 1;
 }
 
Index: regression/owl1.tst
===================================================================
RCS file: /cvsroot/gnugo/gnugo/regression/owl1.tst,v
retrieving revision 1.8
diff -u -r1.8 owl1.tst
--- regression/owl1.tst 5 Jul 2002 14:48:04 -0000       1.8
+++ regression/owl1.tst 5 Jul 2002 18:29:05 -0000
@@ -34,6 +34,10 @@
 268 owl_defend A3
 #? [2 A1]*
 
+loadsgf games/nngs/lindq-gnugo-3.3.4-200207051636.sgf 192
+269 owl_defend D11
+#? [1 E9]*
+
 
 ########### end of tests #####################
 
Index: regression/nngs2.tst
===================================================================
RCS file: /cvsroot/gnugo/gnugo/regression/nngs2.tst,v
retrieving revision 1.3
diff -u -r1.3 nngs2.tst
--- regression/nngs2.tst        24 Jun 2002 14:08:11 -0000      1.3
+++ regression/nngs2.tst        5 Jul 2002 18:29:05 -0000
@@ -50,6 +50,10 @@
 90 gg_genmove black
 #? [N1]*
 
+loadsgf games/nngs/lindq-gnugo-3.3.4-200207051636.sgf 214
+100 gg_genmove black
+#? [H5]*
+
 
 ############ End of Tests #################
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]