Milhouse, what are you thinking?

April 11, 2010 | Checkers | By: Mark VandeWettering

Okay, here’s the problem which is driving me crazy. Milhouse gets itself into this position:

Black to move, but Milhouse doesn't get the right answer...

Milhouse should play 6-10, and should respond by winning a checker on the next move by forcing the checker that doesn’t move into a trade. But for reasons which somewhat escape me, milhouse judges that 6-2, 6-9 and 6-10 are all equivalent at high search levels. At 5 ply deep, it gets the right answer: it judges the 6-10 move as valued at 268, instead of the 223 and 224 that the other two positions generate. But 10 ply, it judges 6-2 and 6-9 as 268, and 6-10 at 270. And at 15 ply, it judges them all as 269. I suspect that in the first moves, it is playing a short series of moves which gets us back to the original position, where it then thinks the forced exchange will play out. But milhouse doesn’t gain grown, and just repeats this situation when it searches again.

I do have some code in place which is supposed to deal with repeated positions, and score them as a draw, but perhaps that isn’t working properly.


Comment from Steve Vetter
Time 4/18/2010 at 3:09 pm

I suggest a slight decay function. In other words, a score of 1000 5 ply away should be counted as, say, 990 in the 4-ply evaluations, 980 at the 3-ply level, etc. That helps to avoid the “horizon effect” I believe you are running into. In other words, when faced with a good position in 5 moves, versus the same or slightly better one in 10 moves, will go for the 5-move position.