gnugo-devel
[Top][All Lists]

## [gnugo-devel] arend_1_15.1: move valuation

 From: Arend Bayer Subject: [gnugo-devel] arend_1_15.1: move valuation Date: Mon, 19 Nov 2001 00:11:06 +0100 (CET)

```This is the patch for an alternative formula for the inclusion of followup
and reverse followup values as I described it earlier this week in an e-mail.
It is a little more precise with reverse followup values/reverse sente,
and should be a lot more exact with double sente.
Btw, what I wrote in my e-mail was unnecessary complicated.

The patch broke endgame:208, but that is because of a missing followup value
of the correct move N1. It did not change anything else in endgame.tst, nor
in my test suite or Nicklas' (where a few endgame problems are included).
(I did not run full regression tests as this takes ~13h on my PC.)

I guess it should be worth having the more precise formula; where it
breaks s.th., we should then correct the responsible followup/reverse
followup values.

-Arend

- contribution of (reverse) followup values revised in value_move_reasons

Index: engine/move_reasons.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/move_reasons.c,v
retrieving revision 1.39
diff -u -r1.39 move_reasons.c
--- engine/move_reasons.c       2001/11/17 19:47:56     1.39
+++ engine/move_reasons.c       2001/11/18 23:03:13
@@ -3490,24 +3490,28 @@
if (tot_value >= 0.5) {
float old_tot_value = tot_value;
float contribution;
-      /* The usual rule is that a sente move should count at double
+      /* We adjust the value according to followup and reverse followup
+       * values.
+       */
+      contribution = gg_min( gg_min(
+        0.5 * move[pos].followup_value
+             + 0.5 * move[pos].reverse_followup_value,
+        tot_value +  move[pos].followup_value),
+        1.1 * tot_value + move[pos].reverse_followup_value);
+      tot_value += contribution;
+      /* The first case applies to gote vs gote situation, the
+       * second to reverse sente, and the third to sente situations.
+       * The usual rule is that a sente move should count at double
* value. But if we have a 1 point move with big followup (i.e.
* sente) we want to play that before a 2 point gote move. Hence
-       * the factor 1.1 below.
+       * the factor 1.1 above.
*/
-      contribution = gg_min(1.1 * tot_value, 0.5 * move[pos].followup_value);
-      tot_value += contribution;

-      if (move[pos].followup_value != 0.0)
-       TRACE("  %1m: %f - followup (out of %f)\n", pos,
-             contribution, move[pos].followup_value);
-
-      contribution = gg_min(0.75* tot_value,
-                           0.4 * move[pos].reverse_followup_value);
-      tot_value += contribution;
-      if (move[pos].reverse_followup_value != 0.0)
-       TRACE("  %1m: %f - reverse followup (out of %f)\n", pos,
-             contribution, move[pos].reverse_followup_value);
+      if (contribution != 0.0) {
+       TRACE("  %1m: %f - added due to followup (%f) and reverse followup
values (%f)\n",
+              pos, contribution, move[pos].followup_value,
+              move[pos].reverse_followup_value);
+      }

/* If a ko fight is going on, we should use the full followup
* and reverse followup values in the total value. We save the

```