Closed BryanSWeber closed 2 years ago
Now use UCB to select build order. Uses values for build parameters determined by several months of GA on Basil. Trimmed to only 6 build orders: 1H muta 2H muta, 2H lurker, 4H before pool, 5pool, 7pool. After build order completes, bot resumes so-called freestyle play.
Tested against a handful of peer bots on fighting spirit. Improvements are statistically significant, p=0.011 based on overall win percentage. I still do not consider map-based complications important, since the gap in general functioning between bots is typically massive. Still, they are beginning to become become relevant (some maps it does not take the proper natural, which is alarming). Some statistically significant drop against Tyr and ICE has occurred, likely from the changes in ready_to_fight. However, the change increases parsimony and improves readability and therefore is acceptable in the long run. Expected wins is calculated from a dump of Basil performances over several months.
Bot Name Games Wins Expected Wins (Based on BASIL History)
Willbot 69 37 37.18333333
WuliBot 122 67 51.85
Dave Churchil 131 62 51.14741036
Megabot 65 44 43.99239544
TyrProtoss 125 49 88.27319588
ICEBot 61 28 39.21428571
ZurZurZur 75 58 6.370656371
Not changed: The build should include Maximums unit counts that are currently contained in the PlayerModel. We still have universal maximums in the PlayerModel. There is a good deal to refactor and it's not clear that this transition is parsimonious. If it is done, it will involve a MAJOR gutting of PlayerModel and rethinking what a "build" is entirely (ex: is a build a unit maximum? A minimum? Or a static sequence of units?).
It seems to make sense that the Learning Manager selects a build.
The build should include Maximums unit counts that are currently contained in the PlayerModel. The build should stay within the LearningManager and not be a separate singleton build.
Inspiration should be taken from bots that work well- McraveZ was suggested, permission was granted.