> 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