gnugo-devel
[Top][All Lists]
Advanced

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

Re: [gnugo-devel] More on minimum values


From: Arend Bayer
Subject: Re: [gnugo-devel] More on minimum values
Date: Sat, 15 Feb 2003 17:54:14 +0100 (CET)

Evan wrote:

> I decided to look a little bit more at minimum values.  After some
> thinking, I decided that making the minimum value parameter a soft minimum
> made more sense than pushing values above it.  In order to find out how
> big a change this made to playing strength, I ran a 100 game series
> between the unpatched and patched versions.  The patched version won 67 to
> 33.
>
> I think this suggests there is a substantial negative impact as a result
> of minimum values in their current form.  I don't have a great solution to
> propose that solves the problem while keeping some randomness to joseki
> choice for the sake of variation.  I think the patch in its current form
> is reasonable though not ideal, and better than the previous versions.

I agree that we need to do s.th. about this. How about s.th. like the
following (untested) patch?  This makes the random contribution
proportional to the move value, thus generally increasing randomness of play.

(It needs some adjustments for fine-tuning of fixed values. But
hopefully it would allow to kill randomness_scaling instead, thus not
adding any complexity.)

Arend


Index: engine/value_moves.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/value_moves.c,v
retrieving revision 1.82
diff -u -p -r1.82 value_moves.c
--- engine/value_moves.c        13 Feb 2003 20:09:42 -0000      1.82
+++ engine/value_moves.c        15 Feb 2003 16:57:21 -0000
@@ -2686,7 +2686,8 @@ value_move_reasons(int pos, int color, f
     move[pos].min_value += tot_value / 200;
   if (tot_value < move[pos].min_value
       && move[pos].min_value > 0) {
-    tot_value = move[pos].min_value;
+    tot_value = move[pos].min_value - 2 +
+           (2 * tot_value / move[pos].min_value);
     TRACE("  %1m:   %f - minimum accepted value\n", pos, tot_value);
   }

@@ -2735,8 +2736,7 @@ value_moves(int color, float pure_threat
        */
       if (is_legal(pos, color) || is_illegal_ko_capture(pos, color)) {
        /* Add a random number between 0 and 0.01 to use in comparisons. */
-       move[pos].value +=
-         0.01 * move[pos].random_number * move[pos].randomness_scaling;
+       move[pos].value += 0.01 * move[pos].random_number * move[pos].value;
       }
       else {
        move[pos].value = 0.0;





reply via email to

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