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
;
28 bool playout_amaf
, playout_amaf_nakade
;
30 int playout_amaf_cutoff
;
35 unsigned long max_tree_size
;
39 enum uct_thread_model
{
40 TM_ROOT
, /* Root parallelization. */
41 TM_TREE
, /* Tree parallelization w/o virtual loss. */
42 TM_TREEVL
, /* Tree parallelization with virtual loss. */
46 bool pondering_opt
; /* User wants pondering */
47 bool pondering
; /* Actually pondering now */
59 int random_policy_chance
;
64 struct uct_policy
*policy
;
65 struct uct_policy
*random_policy
;
66 struct playout_policy
*playout
;
67 struct uct_prior
*prior
;
69 /* Used within frame of single genmove. */
70 struct board_ownermap ownermap
;
72 /* Game state - maintained by setup_state(), reset_state(). */
76 #define UDEBUGL(n) DEBUGL_(u->debug_level, n)
78 extern volatile sig_atomic_t uct_halt
;
79 extern __thread
int thread_id
;
81 bool uct_pass_is_safe(struct uct
*u
, struct board
*b
, enum stone color
, bool pass_all_alive
);
84 typedef struct tree_node
*(*uctp_choose
)(struct uct_policy
*p
, struct tree_node
*node
, struct board
*b
, enum stone color
, coord_t exclude
);
85 typedef struct tree_node
*(*uctp_winner
)(struct uct_policy
*p
, struct tree
*tree
, struct tree_node
*node
);
86 typedef float (*uctp_evaluate
)(struct uct_policy
*p
, void **state
, struct tree
*tree
, struct tree_node
*node
, int parity
);
87 typedef struct tree_node
*(*uctp_descend
)(struct uct_policy
*p
, void **state
, struct tree
*tree
, struct tree_node
*node
, int parity
, bool allow_pass
);
88 typedef void (*uctp_prior
)(struct uct_policy
*p
, struct tree
*tree
, struct tree_node
*node
, struct board
*b
, enum stone color
, int parity
);
89 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
);
95 uctp_evaluate evaluate
;