BubbaTough wrote:bob wrote:BubbaTough wrote:bob wrote:As I said, the scores my eval will produce, using pure random numbers, is -100 to +100. -100 is good for black, +100 is good for white.
only up to 100? Assuming integers, that is not much variety for millions of nodes to choose from. The whole thing makes sense to me if you were using a much larger number. I find it peculiar you are seeing much effect here without using a larger number, but if you are, you are. I wonder how it effects things to use smaller or larger ranges (I thought I knew but apparently my instinct is off).
-Sam
What would be the point of a larger range? The random numbers are uniformly distributed. The range is pretty much irrelevant, you just want enough choices to differentiate between typical mobility extremes. 0 to 100 moves covers almost all cases well enough. I tried other ranges when developing this and found absolutely no benefit. This tends to make the tree a bit smaller since there are fewer distinct scores and there are more "equals" which allow pruning.
Well clearly you are right, because you tested it and it showed...you are right. My thought was that if you have a large tree with millions of leafs, enough of them would be 100 at the edges that you couldn't really distinguish between large mobility and small mobility by the time you propagated back to the root. Clearly if you only generated numbers between 1 and 2 that would be the case. A large enough range counteracts this. But I guess somehow 100 is a large enough range, and you are right, and I am wrong.
-Sam
You are not thinking at the right level. We are talking about a probability P of generating any specific number between 0 and 99 (100 numbers total). To start with, what is the probability of producing any number >= 90? Exactly 0.1, correct? What about any number < 90? Exactly 0.9 correct?
Now, to the tree. At any node, how many moves will you have on average? 35-38 is the generally quoted number. If I have 4 legal moves because I am escaping check, I get 4/100 chances of getting exactly 99, the best possible score. If I have 50 legal moves, I get 50/100 shots at getting that 99 value. If I often had 100+ moves, I would want a bigger range, but we are talking about choices with just one side having N moves, where N is almost always < 100, and most of the time is < 50. That's why 100 works. In fact, I have been experimenting with smaller ranges to break this a bit, since the complaint about skill 1 is still pending. Going from 1 to 10 certainly weakens the thing, because now I have, on average, more moves than possible scores and with 10 moves, I get 10 chances to get a 9, which is a probability of near 1.0. If I have 40 moves, I still can't get a number bigger than 9 so I can't differentiate between those two nearly as well.
I am playing with the idea of shrinking the range as skill is reduced, to get around the "beal effect." I'd prefer that to having an artificial loop to slow the program down so much that the depth is reduced enough that the beal effect is minimized. To understand, think about a 1 ply search. Beal effect does not work at all. I find it irritating that it is just as complicated to make the program play poorly as it is to make it play well...