1 #ifndef PACHI_UCT_PRIOR_H
2 #define PACHI_UCT_PRIOR_H
16 /* [board_size2(b)] array, move_stats are the prior
17 * values to be assigned to individual moves;
18 * move_stats.value is not updated. */
19 struct move_stats
*prior
;
20 /* [board_size2(b)] array, whether to compute
21 * prior for the given value. */
23 /* [board_size2(b)] array from cfg_distances() */
27 /* @value is the value, @playouts is its weight. */
28 static void add_prior_value(struct prior_map
*map
, coord_t c
, floating_t value
, int playouts
);
30 void uct_prior(struct uct
*u
, struct tree_node
*node
, struct prior_map
*map
);
33 struct uct_prior
*uct_prior_init(char *arg
, struct board
*b
);
34 void uct_prior_done(struct uct_prior
*p
);
38 add_prior_value(struct prior_map
*map
, coord_t c
, floating_t value
, int playouts
)
40 floating_t v
= map
->parity
> 0 ? value
: 1 - value
;
41 /* We don't need atomicity: */
42 struct move_stats s
= { .playouts
= playouts
, .value
= v
};
43 stats_merge(&map
->prior
[c
], &s
);