Dave Hillis, wrote:

Suppose I can generate scores for all of the moves quickly enough. I still face the problem of quickly choosing a move biased by the scores. Tournament selection is fast, but that is a function of relative ranking of the scores, not the values of the scores. Roulette wheel selection gives me an answer, but it is slow slow slow, the way I implement it anyway. Can anybody describe a good way to do this?

We posted about that before this summer when I was implementing it.
I proposed a "ticket based lottery", but that, of course, restricts
the difference to small values. It can be implemented using a linked
list so that each extra ticket allocation cost few clock cycles (I don't remember exactly how many, but less than 10 asm instruction for sure).

My final version uses 2 values for the tickets HI and LO where

1 HI = 32 LO

The default (when the pattern is not in the database) is 1 HI.

The score goes from 1 (= 1 LO) to 1024 (= 32 HI). If you round the scores
it the database to avoid such values as 927 (= 28 HI, 31 LO) and round it as 928 (= 29 HI) you can have a nice dynamic range from default/32 to
default*32 having not too many tickets to allocate.

Jacques.

PD. Search the threads (about May-June 2007) because other good ideas were proposed. Binary trees, etc.


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

Reply via email to