From 8302217cb2ad00957b6192e64b4c750cc9ed2384 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sun, 12 Aug 2012 14:19:17 +0200 Subject: [PATCH] UCT virtual_loss: Revert default change It seems all our virtual_loss tuning was bogus due to a mistake in the option setting code - all tests were in fact done with virtual_loss zero. High virtual_loss has catastrophic effect on gameplay - it transforms the tree to long narrow corridors with high difference between black and white node values. I'm not 100% sure about the cause even though I spent quite long time trying to debug this, but I think it's because the noise introduced by updates lost due to conflicts is just too high. Moreover, with virtual_loss raising with number of threads, both the noise rate and noise magnitude goes up, amplifying the effect. --- uct/uct.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/uct/uct.c b/uct/uct.c index c18cf06..fcd38c1 100644 --- a/uct/uct.c +++ b/uct/uct.c @@ -579,7 +579,7 @@ uct_state_init(char *arg, struct board *b) u->threads = 1; u->thread_model = TM_TREEVL; - u->virtual_loss = -1; + u->virtual_loss = 1; u->fuseki_end = 20; // max time at 361*20% = 72 moves (our 36th move, still 99 to play) u->yose_start = 40; // (100-40-25)*361/100/2 = 63 moves still to play by us then @@ -1159,8 +1159,6 @@ uct_state_init(char *arg, struct board *b) if (!u->shared_nodes) u->shared_nodes = DEFAULT_SHARED_NODES; assert(u->shared_levels * board_bits2(b) <= 8 * (int)sizeof(path_t)); } - if (u->virtual_loss == -1) - u->virtual_loss = u->threads >= 4 ? 4 : u->threads; if (!u->dynkomi) u->dynkomi = board_small(b) ? uct_dynkomi_init_none(u, NULL, b) -- 2.11.4.GIT