AIIDE 2018 - what Microwave learned
Microwave uses UCB and keeps its learning data in the same file format as UAlbertaBot, one file per opponent listing on each line an opening, a count of wins, and a count of losses. It’s a simple format that is also used outside the UAlbertaBot family. Microwave adds a twist: It does not allow the count of wins or the count of losses to exceed 10. I’m not sure what the exact update rule is without reading the code, but the effect is that only the more recent game results are remembered. It’s appropriate if the enemy is expected to be learning too, and to change its strategy rapidly so that Microwave has to keep adapting.
Microwave plays different strategies against each race. Against Terran it has 7, against Protoss and Zerg 8, and against random 6. UAlbertaBot was the only random opponent. The strategies partly overlap. For example, 10Hatch9Pool9gas is played against both terran and protoss, while 9HatchMain8Pool8Gas is played only against zerg. The table has big blank spaces full of unplayed strategies. Maybe I should have sorted it by race, instead of by rank?
# | bot | total | 10Hatch9Pool9gas | 12Pool | 3HatchPoolHydra | 5HatchGasHydra | 5Pool | 9HatchMain8Pool8Gas | 9Pool | 9PoolExpo | 9PoolHatch | 9PoolLurker | 9PoolSpeed | 9PoolSpeedLing | 9PoolSunken | Overpool | OverpoolSpeed | ZvT_12HatchHydra | ZvT_12HatchLurker | ZvT_12HatchMuta | ZvZ_Overpool11Gas |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#1 | saida | 0-70 0% | 0-10 0% | - | - | - | 0-10 0% | - | 0-10 0% | - | - | 0-10 0% | - | - | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#2 | cherrypi | 0-80 0% | - | 0-10 0% | - | - | 0-10 0% | 0-10 0% | - | - | 0-10 0% | - | 0-10 0% | - | 0-10 0% | - | 0-10 0% | - | - | - | 0-10 0% |
#3 | cse | 0-80 0% | 0-10 0% | - | 0-10 0% | 0-10 0% | 0-10 0% | - | - | - | - | - | - | 0-10 0% | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#4 | bluebluesky | 0-80 0% | 0-10 0% | - | 0-10 0% | 0-10 0% | 0-10 0% | - | - | - | - | - | - | 0-10 0% | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#5 | locutus | 1-80 1% | 1-10 9% | - | 0-10 0% | 0-10 0% | 0-10 0% | - | - | - | - | - | - | 0-10 0% | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#6 | isamind | 0-80 0% | 0-10 0% | - | 0-10 0% | 0-10 0% | 0-10 0% | - | - | - | - | - | - | 0-10 0% | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#7 | daqin | 0-80 0% | 0-10 0% | - | 0-10 0% | 0-10 0% | 0-10 0% | - | - | - | - | - | - | 0-10 0% | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#8 | mcrave | 7-68 9% | 1-10 9% | - | 1-10 9% | 0-5 0% | 1-8 11% | - | - | - | - | - | - | 1-10 9% | - | - | - | 1-10 9% | 0-5 0% | 2-10 17% | - |
#9 | iron | 0-70 0% | 0-10 0% | - | - | - | 0-10 0% | - | 0-10 0% | - | - | 0-10 0% | - | - | - | - | - | 0-10 0% | 0-10 0% | 0-10 0% | - |
#10 | zzzkbot | 24-37 39% | - | 5-8 38% | - | - | 0-2 0% | 9-10 47% | - | - | 9-10 47% | - | 0-1 0% | - | 0-1 0% | - | 0-1 0% | - | - | - | 1-4 20% |
#11 | steamhammer | 57-15 79% | - | 10-2 83% | - | - | 6-7 46% | 1-2 33% | - | - | 10-2 83% | - | 10-0 100% | - | 0-1 0% | - | 10-1 91% | - | - | - | 10-0 100% |
#13 | lastorder | 24-21 53% | - | 0-1 0% | - | - | 10-2 83% | 0-1 0% | - | - | 2-4 33% | - | 0-1 0% | - | 10-6 62% | - | 1-3 25% | - | - | - | 1-3 25% |
#14 | tyr | 15-13 54% | 2-3 40% | - | 0-1 0% | 3-4 43% | 10-1 91% | - | - | - | - | - | - | 0-1 0% | - | - | - | 0-1 0% | 0-1 0% | 0-1 0% | - |
#15 | metabot | 41-13 76% | 10-2 83% | - | 8-3 73% | 0-1 0% | 0-1 0% | - | - | - | - | - | - | 10-1 91% | - | - | - | 1-2 33% | 2-3 40% | 10-0 100% | - |
#16 | letabot | 26-18 59% | 4-5 44% | - | - | - | 1-2 33% | - | 10-0 100% | - | - | 8-5 62% | - | - | - | - | - | 0-1 0% | 0-1 0% | 3-4 43% | - |
#17 | arrakhammer | 27-22 55% | - | 7-8 47% | - | - | 10-0 100% | 0-1 0% | - | - | 0-1 0% | - | 3-4 43% | - | 5-4 56% | - | 2-3 40% | - | - | - | 0-1 0% |
#18 | ecgberht | 38-18 68% | 0-1 0% | - | - | - | 10-0 100% | - | 0-1 0% | - | - | 1-2 33% | - | - | - | - | - | 10-7 59% | 10-0 100% | 7-7 50% | - |
#19 | ualbertabot | 50-10 83% | - | - | - | - | 10-1 91% | - | 0-1 0% | 10-0 100% | 10-4 71% | - | - | - | 10-4 71% | 10-0 100% | - | - | - | - | - |
#20 | ximp | 27-15 64% | 2-3 40% | - | 0-1 0% | 0-1 0% | 0-1 0% | - | - | - | - | - | - | 10-0 100% | - | - | - | 5-6 45% | 0-1 0% | 10-2 83% | - |
#21 | cdbot | 46-13 78% | - | 10-0 100% | - | - | 0-1 0% | 1-2 33% | - | - | 4-5 44% | - | 10-3 77% | - | 1-2 33% | - | 10-0 100% | - | - | - | 10-0 100% |
#22 | aiur | 48-15 76% | 1-2 33% | - | 10-1 91% | 7-5 58% | 0-1 0% | - | - | - | - | - | - | 9-3 75% | - | - | - | 1-2 33% | 10-1 91% | 10-0 100% | - |
#23 | killall | 40-5 89% | - | 10-0 100% | - | - | 0-1 0% | 10-0 100% | - | - | 0-1 0% | - | 10-0 100% | - | 10-1 91% | - | 0-1 0% | - | - | - | 0-1 0% |
#24 | willyt | 34-10 77% | 4-5 44% | - | - | - | 0-1 0% | - | 0-1 0% | - | - | 0-1 0% | - | - | - | - | - | 10-2 83% | 10-0 100% | 10-0 100% | - |
#25 | ailien | 28-32 47% | - | 9-10 47% | - | - | 1-4 20% | 0-1 0% | - | - | 3-6 33% | - | 0-1 0% | - | 10-2 83% | - | 5-7 42% | - | - | - | 0-1 0% |
#26 | cunybot | 67-1 99% | - | 10-0 100% | - | - | 10-0 100% | 0-1 0% | - | - | 10-0 100% | - | 10-0 100% | - | 7-0 100% | - | 10-0 100% | - | - | - | 10-0 100% |
#27 | hellbot | 74-0 100% | 10-0 100% | - | 10-0 100% | 6-0 100% | 10-0 100% | - | - | - | - | - | - | 8-0 100% | - | - | - | 10-0 100% | 10-0 100% | 10-0 100% | - |
overall | - 42% | 35-101 26% | 61-39 61% | 29-66 31% | 16-66 20% | 79-113 41% | 21-28 43% | 10-23 30% | 10-0 100% | 48-43 53% | 9-28 24% | 43-20 68% | 38-65 37% | 53-31 63% | 10-0 100% | 38-26 59% | 38-101 27% | 42-82 34% | 62-94 40% | 32-20 62% |
The total column tells how successful Microwave was in recent games against each opponent. You might want to compare the percentages against the overall win rates from the official crosstable; they sometimes vary curiously. When the recorded results were less successful than the total results, it suggests that Microwave may have forgotten too much (though it could be random fluctuation). For example, Microwave scored 80% against LetaBot overall, but 59% in the recent games in this table.
The overall row tells how successful each opening was in recent games. Every opening was successful against some opponents, so there were no useless strategies. The body of the table, from #10 ZZZKBot and down, is full of strong contrasts, meaning that there was a big difference between the successful and unsuccessful openings against each opponent. That suggests that learning must have been useful.
Comments
Jay Scott on :
Jay Scott on :
MicroDK on :
MicroDK on :
Jay Scott on :