gnugo-devel
[Top][All Lists]
Advanced

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

[gnugo-devel] arend_1_26.2: no experimental influence before owl


From: Arend Bayer
Subject: [gnugo-devel] arend_1_26.2: no experimental influence before owl
Date: Tue, 19 Feb 2002 18:03:53 +0100 (CET)


 - experimental influence taken down for initial influence with dragons unkown
 
Also inclueded is a fix of Pattern Intrusion37 which I had forgotten in
arend_1_26.1.

As I had mentioned when I sent my last patch, the big part of the remaining
additional time cost is caused by more frequent calls to owl. This is
caused by changes in the surrounding moyo sizes of dragons. For the nngs
test suite, this caused 60 more calls to owl_attack (1421 instead of 1361),
and 12 more to owl_defend (for 158 genmove calls).

This patch makes compute_initial_influence use the old influence in the
pre-owl computations. It saves 5% reading nodes (the number of owl calls
reduces to the original figures).  The BREAKAGE of experimental influence
after this patch is 45 PASSes vs 43 FAILS (compared to 53 vs 52 with 3.1.25;
45 vs 43 is before the fix of Intrusion37, so in fact figures should be a
little better).
As remaining time cost of experimental influence, I measured 1%, but
probably someone else should cross-check this, given my sometimes very
unreproducible timing results.
Of course this is a strategic decision of time cost vs potential added
precision. I do favor using the patch for the following reasons:

- The above figures suggest that there were 12 changes in status. This
  not seem cost effective. Also, quite a few of the changes in status
  that I have seen did not exactly convince me.
- Computing initial influence in order to estimate dragon strength (as
  with dragons_known == 0) is s.th. different than computing it in order
  to make a territory evaluation (as with dragons_known == 1). Gunnar's
  Enhance patterns seem to be very useful for the first kind. Also, I
  would think it makes sense in the long term to support e.g. specific
  pattern tuning for these two different things.
  
What I haven't done is trying to play a match between, e.g., GNU Go with
experimental influence before/after the patch, or experimental influence
after this patch vs standard influence. Maybe we should do this before
a final decision.

As for timing in general, I have a patch coming that can apparently
save ~10% reading nodes by a revision of the owl callback structure. I
am still testing it, but it seems it works fine. So maybe we could make
both --experimental-semeai and --experimental-influence default for
3.1.26 and still have a faster engine than 3.1.25.
 
Arend

Index: engine/influence.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/influence.c,v
retrieving revision 1.36
diff -u -r1.36 influence.c
--- engine/influence.c  15 Feb 2002 23:37:31 -0000      1.36
+++ engine/influence.c  19 Feb 2002 16:48:59 -0000
@@ -1599,6 +1599,11 @@
 compute_initial_influence(int color, int dragons_known)
 {
   int i, j;
+  int save_experimental_influence;
+
+  save_experimental_influence = experimental_influence;
+  if (!dragons_known)
+    experimental_influence = 0;
   compute_influence(&initial_influence, OTHER_COLOR(color), -1, -1,
                    dragons_known, NULL, NULL);
   if (experimental_influence)
@@ -1622,6 +1627,8 @@
       delta_territory_cache[POS(i, j)] = NOT_COMPUTED;
       followup_territory_cache[POS(i, j)] = NOT_COMPUTED;
     }
+
+  experimental_influence = save_experimental_influence;
 }
 
 /* Redo the segmentation of the initial influence. */
Index: patterns/barriers.db
===================================================================
RCS file: /cvsroot/gnugo/gnugo/patterns/barriers.db,v
retrieving revision 1.25
diff -u -r1.25 barriers.db
--- patterns/barriers.db        15 Feb 2002 23:37:31 -0000      1.25
+++ patterns/barriers.db        19 Feb 2002 16:49:02 -0000
@@ -1555,7 +1555,7 @@
 Pattern Intrusion37
 
 ?X
-O!
+Q!
 oX
 
 :8,B,value(30)




reply via email to

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