On Mon, 2008-10-27 at 16:08 -0400, Michael Williams wrote: > By your argument, it would seem to make sense to remove this check > even if you don't use my decaying weight. > > boolean ok = true; // ok to use this move? > // see if either side has used this move before > for (int j=savctm; j<i; j++) { > if ( (mvs[j] & MASK) == mv ) { > ok = false; > break; > } > }
I strongly considered not doing this check. However, in most descriptions I've seen of how AMAF works, this check was considered important. Also, if you don't do the check it's possible to get a move credited SEVERAL times per game EVEN if your opponent plays it first! Somehow that just seems wrong. There are some decisions that HAVE to be made that could be considered arbitrary no matter which direction you go. For instance the eye rule is arbitrary and is not the simplest possible eye rule. So I tried to keep it real simple, but still gave some consideration to tradition, correctness and reasonableness. Tradition dictated the eye rule (it is the one almost everyone uses), AMAF, and this check you mention. Correctness seemed to indicate this check also (although it's also easy to argue that this is not an issue of correctness because AMAF is not correct anyway.) I especially tried to avoid any gratuitous enhancements. It's very easy to do little tweaks that make it play stronger but are blatantly recognizable as improvements that go beyond the basic implementation. This clearly fits in that category. I'm not going to keep modifying the spec every time someone finds a little helpful change. I didn't intend for this to be a forum to gradually evolve a stronger bot. However, the idea of doing that is appealing as a separate project and I would like to track these type of things when I build the web page. We might even have them as options to the program and give them names so that we know what we are talking about. We could call this one the mw enhancement :-) I'm testing your enhancement now, as we speak. It's hard to draw any conclusions after only 184 games, but I'm testing 4096 and it seems to be almost as strong as the reference 8092. I may later try testing only the 2 against each other like you did. I took out the above check and implemented it exactly as you specified. I may later test the reference bot with and without the check to see if it really makes any difference. Rank Name Elo + - games score oppo. draws 1 refbot-008192 2661 25 24 1223 78% 2189 0% 2 mwRefbot-004096 2655 70 66 184 80% 2024 0% 3 refbot-004096 2631 25 24 1223 75% 2174 0% 4 refbot-002048 2532 24 24 1219 65% 2182 0% 5 refbot-001024 2410 25 25 1223 56% 2146 0% 6 refbot-000512 2245 29 30 1214 51% 2015 0% 7 refbot-000256 2003 36 37 1218 44% 1896 0% 8 refbot-000128 1646 45 46 1214 45% 1632 0% 9 refbot-000064 1301 45 45 1208 52% 1288 0% 10 refbot-000032 974 44 45 1214 53% 1019 0% 11 refbot-000016 619 37 35 1208 55% 774 0% 12 refbot-000008 377 29 28 1202 48% 638 0% 13 refbot-000004 248 26 25 1200 43% 533 0% 14 refbot-000002 135 24 24 1199 35% 483 0% 15 refbot-000000 0 25 25 1200 23% 479 0% 16 refbot-000001 -1 25 26 1199 22% 462 0% - Don
signature.asc
Description: This is a digitally signed message part
_______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/