> I'd always though playouts, even heavy ones, have a random element. But
> in fact they are a sequence of deterministic if/else statements, at
> least in Fuego [1] and Mogo [2].

In Fuego, there is a random element, but only within a group of moves of the 
same type.
Moves are generated one type at a time in decreasing urgency, according to the 
list you gave.
For each move type, if there is more than one such move, the choice is made 
randomly.
E.g. if there are five pattern moves, but no higher urgency move (such as atari 
defense), then one of the five pattern moves will be chosen at random.

The command
uct_policy_moves

shows all moves considered by the policy in the current position.

You can also get statistics over the move types as follows:

1. set
uct_param_policy statistics_enabled 1
This is off by default since it costs performance.

2. play a game, or generate some moves.

3. choose
uct_stat_policy

You will get a reply such as:

= NuMoves        2683597
Fillboard      0%
Nakade         0%
AtariCapture   4%
AtariDefend    7%
LowLib         15%
Pattern        31%
Capture        5%
Random         29%
SelfAtariCorr  3%
ClumpCorr      0%
Pass           2%
NonRandLen     3.65 dev=4.82
MoveListLen    1.49 dev=0.87

NonRandLen is the average length of sequences of consecutive non-random moves.
MoveListLen is the average length of the move list (moves of the same type) 
from which a random choice is made.

Fillboard, Nakade and ClumpCorr are off by default.

In GoGui, you can do all these commands from the Analyze window. 

This method is the same as how I think MoGo works. My understanding is that 
CrazyStone and Zen use a different approach, where each move has a non-zero 
probability, but e.g. the weight of AtariCapture is huge compared to a random 
move. So in practice it may be quite similar.

        Martin


_______________________________________________
Computer-go mailing list
[email protected]
http://dvandva.org/cgi-bin/mailman/listinfo/computer-go

Reply via email to