A while back, Sylvain Gelly posted this code:

ChooseMove(node, board) {
  bias = 0.015  // I put a random number here, to be tuned
  b = bias * bias / 0.25
  best_value = -1
  best_move = PASSMOVE
  for (move in board.allmoves) {
    c = node.child(move).counts
    w = node.child(move).wins
    rc = node.rave_counts[move]
    rw = node.rave_wins[move]
    coefficient = 1 - rc / (rc + c + rc * c * b)
value = w / c * coef + rw / rc * (1 - coef) // please here take care of
the c==0 and rc == 0 cases
    if (value > best_value) {
      best_value = value
      best_move = move
    }
  }
  return best_move
}

From this, it appears that each node knows about its own counts and wins, as well as the rave counts and wins of its children.

I understand (correct me if I'm wrong!) that the "value" line is a weighted sum of the win rate among actual moves and the win rate among RAVE moves.

My question is: what is the meaning of this line?

    coefficient = 1 - rc / (rc + c + rc * c * b)

Why this formula?

Thanks for any help you can offer,

Peter Drake
http://www.lclark.edu/~drake/



_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to