I am pleased with myself. Before you continue - this post has very little if anything to do with fencing.
Last night, I re-implemented a tool for taking an arbitrary "team" and giving advice about the best choices to minimize the weaknesses of the team. This is because I have been playing a lot of Overwatch. One problem in Overwatch is that sometimes, the character you select is just bad against the other team's composition. However - it's hard to tell the difference between performing badly and being counter-picked. So, we solve the problem with technology.
Originally, the tool was created for fighting the Pokémons online. I naively scraped "weak against" data from Smogon University, and then used that data to create teams for whom there were no un-compensated-for weaknesses.
An example. So, I have added Swampert to my team. Swampert is weak to Celebi and Mamoswine. Celebi is weak to Skarmory and Venusaur, while Mamoswine is weak to Skarmory and Bronzong. We're going to pretend that there are no other weaknesses, for the moment.
So, the program would advise that I use Skarmory, since Skarmory counters both and doesn't add any new weaknesses. Yay!
If the options listed did add weaknesses, then I would check to see if they were weak to anyone currently on the team. If they were, that would be fine. If they weren't, then they would be a less-good option according to the program.
In reality, this relies on having a good, simple data-set. It's a very useful program for Pokémon, for instance, because the data-set is so large and there is a website sitting there with ready, scrapeable data. It's all simple sets though, and didn't take *that* long to implement.
The reason I've done this recently, is because Overwatch has a similar extended-rock-paper-scissors element to it. So, I've implemented the Overtron. What I do is I input my team, then it tells me what the best choices are, in ascending order of awesomeness.
There's some weirdness to the data. In the Pokétron, there are a few Pokémon who, according to Smogon University's dataset, are so dominating of the meta-game that they were almost always the best choice. Skarmory and Scizor were the two particular ones, with Skarmory frequently being between 400% better than the next-best option, and then the next several options being only about 20% different from each other.
It's hard to tell if this is because the data is generated by humans, or if Skarmory was actually that dominating of the meta-game.
Similarly, the data-set I'm using for Overwatch friggin' loves Reaper and Winston. Loves 'em. The brief testing I've undertaken has allowed me to see that yes, they are good options very much of the time. But it's still hilarious to me how this algorithm has such dominant "favorites". It's probably a sign that I either need to modify the algorithm, or I need to edit the data-set.
Part of me believes that this sort of set manipulation could be used to determine effective maneuvers. Because fencing does have a subtle sort of rock-paper-scissors to it, in various maneuvers. Sadly, the data-set is probably too squishy for me to ever create the Fencingtron.
Yeah, Reaper and Winston are hugely valued - in part, I think, because their mobility in-class is so, so good.
ReplyDeleteI'm curious how it'd work if you worked map preferences into that algorithm, now that I'm thinking about mobility.
So, this was also inspired by this thread: https://www.reddit.com/r/OverwatchUniversity/comments/5a87wu/i_made_an_optimal_team_generator_for_overwatch/
DeleteBut that didn't do quite what I wanted. I personally think it is better to work to have a team with no weaknesses, rather than to try to draft for strength.
That said, you could probably do that by adding to the dataset. Like, when you add Zenyatta to your team, you get both ZenyattaSnuggledWithParty and ZenyattaAlone. Winston counters ZenyattaAlone, but is countered by ZenyattaSnuggledWithParty. This would allow for the same naive approach, as well as suggest tactics to you if you input both teams.
Different maps would probably end up being handled by different data-sets. Maybe you just assume that ZenyattaAlone isn't a factor on defense in Volskaya.
(The thing I meant to say, but ENTIRELY DID NOT, is that the team generator on that thread *does* take maps into account, which is pretty cool.)
Delete