I wrote a program that takes the list of pokemon on your team and outputs team recommendations based on the checks and counters listed in Antar's moveset data.
It's very rough right now, but the suggestions it's outputting are surprisingly good. I was expecting to need to ask for a more complete version of the checks & counters data (which would still make it more accurate) but so far it's working.
Example 1:
Example 2:
Example 3:
Algorithm:
Threats scores are found by using counter rates of all of your pokemon, summed, then weighted by how often that counter appears. So if Talonflame is countered by Tyranitar 83% of the time, Espeon is countered by Tyranitar 84% of the time, and Tyranitar has a useage weight of 0.58, then T-tar counters a team with those two by (83+84) * 0.58 = ~97.
Threat scores are then reduced by the counter rates of any of your team members. If the above team has Scrafty, which counters Tyranitar 85% of the time, then Tyranitar's score becomes ~12. There is no useage weighting on this step - we know these pokemon are relevant because they're on your team.
Suggestions are used by going through all threats, finding the counter rates of their counters, multiplying them by that threat's threat score, and adding that to the suggestion's suggestion score.
Code:
This isn't wrapped up to be easy to use. You'll need to understand Java. You'll also need a copy of the moveset data report that Antar provided.
http://pastebin.com/gpnKx64w
I can do a couple of runs for people who can't run the code themselves, but if it gets to be a hassle or blows up the thread, I'll stop.
I have some ideas for how to make this more powerful and more accessible, but I want to stop and see if anyone else is interested in this first.