1 #ifndef ZZGO_UCT_INTERNAL_H
2 #define ZZGO_UCT_INTERNAL_H
4 #include <signal.h> // sig_atomic_t
16 /* Internal UCT structures */
19 /* Internal engine state. */
25 double best2_ratio
, bestr_ratio
;
27 bool territory_scoring
;
29 bool playout_amaf
, playout_amaf_nakade
;
31 int playout_amaf_cutoff
;
36 unsigned long max_tree_size
;
40 enum uct_thread_model
{
41 TM_ROOT
, /* Root parallelization. */
42 TM_TREE
, /* Tree parallelization w/o virtual loss. */
43 TM_TREEVL
, /* Tree parallelization with virtual loss. */
47 bool pondering_opt
; /* User wants pondering */
48 bool pondering
; /* Actually pondering now */
61 int random_policy_chance
;
66 struct uct_policy
*policy
;
67 struct uct_policy
*random_policy
;
68 struct playout_policy
*playout
;
69 struct uct_prior
*prior
;
71 /* Used within frame of single genmove. */
72 struct board_ownermap ownermap
;
74 /* Game state - maintained by setup_state(), reset_state(). */
78 #define UDEBUGL(n) DEBUGL_(u->debug_level, n)
80 extern volatile sig_atomic_t uct_halt
;
81 extern __thread
int thread_id
;
83 bool uct_pass_is_safe(struct uct
*u
, struct board
*b
, enum stone color
, bool pass_all_alive
);
86 typedef struct tree_node
*(*uctp_choose
)(struct uct_policy
*p
, struct tree_node
*node
, struct board
*b
, enum stone color
, coord_t exclude
);
87 typedef struct tree_node
*(*uctp_winner
)(struct uct_policy
*p
, struct tree
*tree
, struct tree_node
*node
);
88 typedef float (*uctp_evaluate
)(struct uct_policy
*p
, void **state
, struct tree
*tree
, struct tree_node
*node
, int parity
);
89 typedef struct tree_node
*(*uctp_descend
)(struct uct_policy
*p
, void **state
, struct tree
*tree
, struct tree_node
*node
, int parity
, bool allow_pass
);
90 typedef void (*uctp_prior
)(struct uct_policy
*p
, struct tree
*tree
, struct tree_node
*node
, struct board
*b
, enum stone color
, int parity
);
91 typedef void (*uctp_update
)(struct uct_policy
*p
, struct tree
*tree
, struct tree_node
*node
, enum stone node_color
, enum stone player_color
, struct playout_amafmap
*amaf
, float result
);
97 uctp_evaluate evaluate
;