[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[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
- [gnugo-devel] arend_1_15.1: move valuation,
Arend Bayer <=