Here’s data from Microwave’s history files, using the same script as for BananaBrain with a little customization. Unlike Microwave’s learning files, which deliberately omit data and include information from pre-learning, the history files tell what Microwave actually did during the games. Microwave didn’t record information about the opponent’s strategy, so that table is left out. That made it look a little sparse, so I added columns giving the first and last games when the opening was tried, where the first game in the history file is game 0. We can see things like when a winning opening was found, and whether it kept winning. If there are fewer than 100 games recorded for an opponent because Microwave crashed, then the game numbers generally do not align with the tournament round numbers.
Against difficult opponents, Microwave experimented widely. Against some opponents that Microwave pre-trained against, it played whatever came out of pre-training. So I don’t have much to say about opponents in the top half of the post. But toward the bottom I’ve made some comments. Especially see the note to AITP.
#1 locutus
opening | games | wins | first | last |
10Hatch9Pool9gas | 8 | 12% | 1 | 52 |
2HatchHydra | 7 | 0% | 0 | 53 |
2HatchLurker | 7 | 29% | 83 | 89 |
2HatchLurkerAllIn | 2 | 0% | 63 | 90 |
2HatchMuta | 12 | 25% | 3 | 56 |
3HatchHydraBust | 3 | 0% | 10 | 57 |
3HatchLingBust | 3 | 0% | 38 | 91 |
3HatchPoolHydra | 5 | 0% | 16 | 92 |
4HatchBeforeGas | 4 | 0% | 27 | 93 |
4PoolHard | 3 | 0% | 15 | 58 |
4PoolSoft | 4 | 0% | 21 | 59 |
5Pool | 2 | 0% | 36 | 60 |
5PoolSpeed | 3 | 0% | 41 | 94 |
6Pool | 3 | 0% | 42 | 95 |
6PoolSpeed | 3 | 0% | 43 | 96 |
7Pool | 2 | 0% | 37 | 61 |
8Pool | 3 | 0% | 44 | 97 |
9Pool | 9 | 22% | 45 | 78 |
9PoolLurker | 2 | 0% | 46 | 79 |
9PoolSpeed | 3 | 0% | 11 | 62 |
9PoolSpeedLing | 2 | 0% | 47 | 80 |
ZvP_10Hatch9Pool | 4 | 0% | 17 | 81 |
ZvZ_Overpool11Gas | 4 | 0% | 18 | 82 |
23 openings | 98 | 8% | | |
#2 purplewave
opening | games | wins | first | last |
10Hatch9Pool9gas | 11 | 9% | 20 | 93 |
2HatchHydra | 6 | 0% | 14 | 87 |
2HatchMuta | 5 | 0% | 35 | 94 |
3HatchHydraBust | 9 | 0% | 3 | 95 |
3HatchLingBust | 14 | 7% | 0 | 74 |
4PoolHard | 1 | 0% | 80 | 80 |
4PoolSoft | 7 | 14% | 30 | 75 |
5Pool | 8 | 12% | 15 | 90 |
5PoolSpeed | 1 | 0% | 81 | 81 |
6Pool | 1 | 0% | 82 | 82 |
6PoolSpeed | 1 | 0% | 83 | 83 |
7Pool | 8 | 0% | 17 | 76 |
8Pool | 4 | 0% | 42 | 91 |
9Pool | 1 | 0% | 84 | 84 |
9PoolSpeed | 3 | 0% | 52 | 92 |
9PoolSpeedLing | 14 | 21% | 4 | 77 |
ZvP_10Hatch9Pool | 1 | 0% | 85 | 85 |
ZvZ_Overpool11Gas | 1 | 0% | 86 | 86 |
18 openings | 96 | 7% | | |
#3 bananabrain
opening | games | wins | first | last |
10Hatch9Pool9gas | 1 | 0% | 54 | 54 |
2HatchHydra | 1 | 0% | 51 | 51 |
2HatchMuta | 1 | 0% | 52 | 52 |
3HatchLingBust | 37 | 49% | 0 | 92 |
4PoolHard | 3 | 0% | 29 | 63 |
4PoolSoft | 4 | 0% | 28 | 67 |
5Pool | 11 | 45% | 22 | 76 |
5PoolSpeed | 7 | 29% | 19 | 78 |
6Pool | 1 | 0% | 62 | 62 |
6PoolSpeed | 5 | 20% | 20 | 68 |
7Pool | 1 | 0% | 55 | 55 |
8Pool | 3 | 0% | 24 | 69 |
9Pool | 7 | 43% | 56 | 70 |
9PoolSpeed | 1 | 0% | 53 | 53 |
9PoolSpeedLing | 3 | 0% | 25 | 71 |
ZvZ_Overgas9Pool | 4 | 0% | 26 | 77 |
ZvZ_Overpool11Gas | 3 | 0% | 35 | 79 |
17 openings | 93 | 31% | | |
#4 daqin
opening | games | wins | first | last |
10Hatch9Pool9gas | 11 | 18% | 2 | 77 |
2HatchHydra | 4 | 0% | 18 | 78 |
2HatchLurker | 4 | 0% | 23 | 79 |
2HatchMuta | 13 | 23% | 17 | 89 |
3HatchHydraBust | 3 | 0% | 20 | 51 |
3HatchLingBust | 31 | 39% | 16 | 76 |
3HatchPoolHydra | 3 | 0% | 25 | 52 |
4PoolSoft | 3 | 0% | 6 | 53 |
5Pool | 3 | 0% | 7 | 54 |
7Pool | 3 | 0% | 11 | 55 |
9Pool | 3 | 0% | 1 | 56 |
9PoolSpeed | 3 | 0% | 10 | 57 |
9PoolSpeedLing | 3 | 0% | 0 | 58 |
ZvP_10Hatch9Pool | 3 | 0% | 5 | 59 |
14 openings | 90 | 19% | | |
#5 steamhammer
opening | games | wins | first | last |
9PoolSpeed | 100 | 75% | 0 | 99 |
1 openings | 100 | 75% | | |
#6 zzzkbot
opening | games | wins | first | last |
9PoolHatch | 1 | 0% | 0 | 0 |
ZvZ_Overgas11Pool | 70 | 80% | 1 | 70 |
2 openings | 71 | 79% | | |
Why are only 71 games recorded? According to the official results, Microwave crashed in 56 games throughout the tournament, and 29 of those crashes happened against ZZZKBot. Microwave recorded every game in which it did not crash. It’s a debugging opportunity. :-/
#8 iron
opening | games | wins | first | last |
10Hatch9Pool9gas | 2 | 0% | 53 | 82 |
2HatchHydra | 1 | 0% | 83 | 83 |
2HatchLurkerAllIn | 2 | 0% | 63 | 88 |
2HatchMuta | 11 | 9% | 0 | 72 |
3HatchHydraBust | 15 | 33% | 5 | 77 |
3HatchHydraExpo | 1 | 0% | 84 | 84 |
3HatchPoolHydra | 1 | 0% | 85 | 85 |
4HatchBeforeGas | 4 | 0% | 18 | 89 |
4PoolHard | 6 | 0% | 13 | 78 |
4PoolSoft | 7 | 14% | 11 | 71 |
5Pool | 1 | 0% | 86 | 86 |
5PoolSpeed | 6 | 0% | 14 | 79 |
6Pool | 2 | 0% | 54 | 87 |
6PoolSpeed | 5 | 20% | 35 | 92 |
7Pool | 10 | 30% | 19 | 68 |
8Pool | 7 | 14% | 17 | 80 |
9Pool | 8 | 12% | 1 | 95 |
9PoolSpeedLing | 4 | 0% | 21 | 96 |
OverpoolTurtle | 4 | 0% | 22 | 81 |
19 openings | 97 | 13% | | |
#9 xiaoyi
opening | games | wins | first | last |
10Hatch9Pool9gas | 2 | 0% | 42 | 47 |
2HatchLurker | 1 | 0% | 48 | 48 |
2HatchMuta | 2 | 0% | 45 | 46 |
4PoolSoft | 38 | 63% | 1 | 38 |
5Pool | 2 | 50% | 0 | 39 |
7Pool | 51 | 76% | 49 | 99 |
9Pool | 2 | 50% | 40 | 41 |
9PoolSpeedLing | 2 | 0% | 43 | 44 |
8 openings | 100 | 65% | | |
As soon as Microwave found that 7 pool worked, it played 7 pool exclusively.
#10 mcrave
opening | games | wins | first | last |
2HatchMuta | 40 | 62% | 0 | 79 |
3HatchHydraBust | 13 | 92% | 86 | 98 |
4PoolHard | 1 | 0% | 80 | 80 |
4PoolSoft | 40 | 62% | 1 | 40 |
9Pool | 1 | 0% | 85 | 85 |
ZvZ_Overgas11Pool | 4 | 50% | 81 | 84 |
6 openings | 99 | 65% | | |
Microwave was late to discover the success of the hydra bust opening. That’s why it was played so little. The example shows the importance of finding good ideas as early as possible. I am adding smarts to Steamhammer to make it better at finding the good tries fast.
It’s interesting that 2HatchMuta
and 4PoolSoft
have the same numbers, but were given up on at different times.
#11 ualbertabot
opening | games | wins | first | last |
4PoolSoft | 100 | 82% | 0 | 99 |
1 openings | 100 | 82% | | |
The choice against UAlbertaBot was determined by pre-training. From scratch, I expect Microwave would have tried a wider variety.
#12 aitp
opening | games | wins | first | last |
9PoolSpeedLing | 100 | 93% | 0 | 99 |
1 openings | 100 | 93% | | |
If the first try wins, keep it up. What if Microwave had an opening that would have won more than 93%? The theory is that, above some winning rate, the risk of losing by trying alternatives is higher than the risk of losing by sticking with a known good opening. But what winning rate is high enough to stick with? It depends on how much you respect your opponents. If you expect to win nearly every game, like Locutus, maybe you should switch to an alternative as soon as you lose a single game. If you expect to finish near the bottom, maybe you should stick with a strategy that wins 50%.
But more: How much do you respect each opponent? Maybe bots should have a “contempt factor” like chess programs may use to decide whether to aim for a draw: Accept a low winning rate strategy against Locutus, but demand 95% wins against the unknown who you’ve decided is a weak newbie. I would rather call it a respect factor! In a UCB algorithm, a level of respect is implicitly encoded in the exploration rate constant. Does any bot already have a respect factor for specific opponents?
#13 bunkerboxer
opening | games | wins | first | last |
5Pool | 100 | 99% | 0 | 99 |
1 openings | 100 | 99% | | |
Apparently the initial choice against an unknown is random.
Comments