Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   District Events (http://www.chiefdelphi.com/forums/forumdisplay.php?f=190)
-   -   TamperMonkey script to analyze district standings and predict DCMP invitations (http://www.chiefdelphi.com/forums/showthread.php?t=146518)

rwodonnell 31-03-2016 18:39

TamperMonkey script to analyze district standings and predict DCMP invitations
 
I wrote a TamperMonkey script that will run on the district standings page of your choice and make a very crude attempt at identifying those teams that are in, likely in, on the bubble, likely out and out.

It's located here: https://github.com/BHSRobotix/TamperMonkeyScripts

You need the Chrome extension TamperMonkey and the script at the github link above. I set it up for the New England district - if you want to use it elsewhere, you would have to modify the @match parameter on line 7 to match the URL for the district you are interested in.

The biggest reason I am bringing it to public attention is that I have no idea how to do a real statistical analysis, and so my system is very crude. I'd be interested in hearing how to better go about predicting teams' second event score and what the invitation cutoff might be. I've tried to modularize a little so people can just change the right functions but it's likely there is not enough or the right data being passed. I'm interested in feedback.

otherguy 31-03-2016 19:22

Re: TamperMonkey script to analyze district standings and predict DCMP invitations
 
Per a recent (last?) team update, the NE district invite cutoff will be 64 teams.

That will be the top 64 teams by quality points unless a team that's outside of the top 64 gets an invite to champs through other means (district chairmans award). If that happens then I believe the cutoff by rank moves up.


I've done an analysis independently, and determined the cutoff would be around 63 quality pts.
I took the average difference in points scored for all teams who played two events. On average teams improve their first event score by 3pts.
For all teams that haven't played their 2nd event, I just took their first event score plus 3, then sorted all by pts.

This oversimplifies the problem, as some teams will compete in more than two events, the more they play the better they will likely perform. They'll end up pulling available points out of the pool available for teams who haven't played in two events yet... But the above method was a quick way I cane up with determining rank.

SoftwareBug2.0 01-04-2016 03:50

Re: TamperMonkey script to analyze district standings and predict DCMP invitations
 
I think the numbers that you have are not terribly far off for New England.

I've also had a script to do this for some time. It's set up to automatically come up with estimates for any of the districts without any magic numbers. I've previously shared it here: http://www.chiefdelphi.com/forums/sh...3&postcount=13

Appearantly that's not easy to find though so I've put it on github: https://github.com/errorcodexero/standing_predictor I welcome pull requests.

For comparison, here's the output that I get:

Key:
Code:

in=will have enough points to make it in
out=won't make it
~in=probably going to have enough points
~out=probably won't have enough points
bubble=could easily go either way

Code:

Best-case points to make it to district cmp: 48
Worst-case points to make it to district cmp: 99
Best estimate: 62
{'bubble': 43, 'out': 32, '~in': 38, '~out': 61, 'in': 7}
0        in        1058 - PVC Pirates
1        in        319 - Big Bad Bob
2        in        78 - AIR STRIKE
3        in        4905 - Andromeda One
4        in        230 - Gaelhawks
5        in        5813 - Morpheus
6        in        1831 - Screaming Eagles
7        ~in        1768 - Robo Chiefs
8        ~in        228 - GUS Robotics
9        ~in        176 - Aces High
10        ~in        88 - TJ(Squared)
11        ~in        4048 - Redshift
12        ~in        190 - Gompei and the H.E.R.D.
13        ~in        1153 - Robo-Rebels
14        ~in        1729 - Team Inconceivable!
15        ~in        155 - The Technonuts
16        ~in        95 - Grasshoppers
17        ~in        4761 - The Robockets
18        ~in        131 - C.H.A.O.S.
19        ~in        2370 - iBots
20        ~in        2648 - Infinite Loop
21        ~in        5962 - perSEVERE
22        ~in        4909 - Bionics
23        ~in        1519 - Mechanical Mayhem
24        ~in        2876 - Devilbotz
25        ~in        558 - Elm City Robo Squad
26        ~in        2064 - The Panther Project
27        ~in        1124 - UberBots
28        ~in        5846 - Southcoast Corsairs
29        ~in        1512 - The Metal Vidsters
30        ~in        177 - Bobcat Robotics
31        ~in        2067 - Apple Pi
32        ~in        885 - THE GREEN TEAM
33        ~in        238 - Cruisin' Crusaders
34        ~in        125 - NUTRONs
35        ~in        195 - CyberKnights
36        bubble        213 - The Dirty Birds
37        ~in        6153 - Blue Crew
38        ~in        1099 - DiscoTechs
39        ~out        5112 - The Gongoliers
40        ~out        1277 - The Robotomies
41        ~in        839 - Rosie Robotics
42        ~out        4055 - NRG4055
43        ~out        1735 - Green Reapers
44        ~out        246 - Overclocked
45        ~in        3930 - SMART Spruce Mountain Area Ro...
46        ~out        4151 - SCRAP
47        ~out        138 - Entropy
48        ~out        2342 - Team Phoenix
49        bubble        6161 - Equilibrium
50        ~out        1786 - The Robotics Team
51        ~in        4564 - Orange Chaos
52        ~in        5687 - The Outliers
53        ~in        126 - Gael Force
54        bubble        5686 - Wirecats
55        ~out        501 - The PowerKnights
56        ~out        4473 - Delta Prime
57        ~in        133 - B.E.R.T
58        out        6201 - The Highlanders
59        ~out        348 - Norwell Robotics
60        bubble        3461 - Operation PEACCE Robotics
61        ~in        175 - Buzz Robotics
62        out        3958 - Schrodinger's Cat
63        out        157 - AZTECHS
64        bubble        2084 - Robots by the C
65        out        4929 - Maroon Monsoon
66        bubble        181 - Birds Of Prey
67        out        2836 - Team Beta
68        bubble        467 - The Colonials
69        out        151 - Tough Techs
70        bubble        5746 - Human Error
71        out        3719 - STEM Whalers
72        out        3205 - Patriots
73        out        4311 - Swampscott Currents
74        out        1721 - Tidal Force
75        out        1071 - Team Max
76        bubble        166 - Chop Shop
77        bubble        1699 - Robocats
78        bubble        3182 - Athena's Warriors
79        out        1350 - The Rambots
80        out        509 - Red Storm
81        out        3323 - Potential Energy
82        out        4097 - Devilbots
83        bubble        2877 - LigerBots
84        out        3236 - TRIFORCE
85        bubble        3609 - Duct Tape Dragons
86        out        4474 - Silver Circuit
87        bubble        3467 - Windham Windup
88        bubble        999 - MechaRAMS
89        bubble        4557 - FullMetal Falcons
90        bubble        58 - The Riot Crew
91        out        178 - The 2nd Law Enforcers
92        bubble        236 - Techno-Ticks
93        out        4176 - Iron Tigers
94        bubble        1100 - The T-Hawks
95        bubble        5556 - Carriagetown Robotics
96        out        4169 - Warrior Robotics
97        bubble        5902 - The Wire Clippers
98        bubble        172 - Northern Force
99        out        5958 - Blue Wave Robotics
100        bubble        3464 - Sim-City
101        bubble        4908 - Duxbury Dragons
102        bubble        2168 - Aluminum Falcons
103        bubble        5752 - Beverly Panthers
104        bubble        716 - Who'sCTEKS
105        bubble        811 - Cardinals
106        bubble        69 - HYPER
107        bubble        6224 - The Saints
108        bubble        5000 - Hammerheads
109        out        1517 - The Lumberjacks
110        out        1474 - Master Link Militia
111        bubble        5422 - Stormgears FRC
112        ~out        5856 - Bullbots
113        bubble        121 - Rhode Warriors
114        bubble        237 - Black Magic Robotics
115        bubble        1991 - Dragons
116        bubble        4546 - ShockWave
117        ~out        5844 - Phoenix Tech
118        bubble        1073 - The Force Team
119        out        3566 - Gone Fishin'
120        ~out        5969 - English Skunkworks
121        bubble        3146 - GRANBY GRUNTS
122        bubble        4906 - The Collective
123        out        5494 - Bizarbots Robotics
124        bubble        2170 - Titanium Tomahawks
125        out        5400 - WARP
126        bubble        3654 - TechTigers
127        out        1307 - Robosaints
128        bubble        571 - Team Paragon
129        bubble        3466 - Vikings Robotics
130        out        97 - Bionic Beef
131        ~out        6172 - Team Jupiter
132        ~out        2713 - iRaiders
133        out        1247 - Robotics of Kearsarge (ROK)
134        out        1973 - Brighton Burning Tiger
135        ~out        5506 - Viking Landers
136        ~out        1740 - Ledyard Cyber Colonels
137        ~out        5491 - Cognitive Hazard
138        ~out        5471 - W.Hi.R.R.
139        ~out        5459 - Ipswich TIGERS (Technologicall...
140        ~out        3525 - The Nuts & Bolts of Fury
141        ~out        5122 - robOTies
142        ~out        2079 - 4H ALARM Robotics
143        ~out        4572 - BArlow RobAutics
144        ~out        3623 - Terror Bots
145        ~out        5735 - Control Freaks
146        ~out        5563 - Phalanx
147        out        5163 - The Aluminum Warriors
148        ~out        3780 - Robot Unicorns
149        ~out        4925 - The Resistance
150        ~out        1922 - Oz-Ram
151        out        1027 - Project Jabberwocky
152        ~out        2785 - Prometheus
153        ~out        1289 - Gearheadz
154        ~out        3634 - Spark City
155        ~out        2262 - Robo-Panthers
156        ~out        4628 - Sintian Robotics
157        ~out        5633 - Hyde Phoenix
158        ~out        4796 - Cyber Dragons
159        ~out        1761 - STEAMpunk Tigers
160        ~out        173 - RAGE (Robotics And Gadget Engi...
161        ~out        4041 - Iron Tigers
162        ~out        2423 - The KwarQs
163        ~out        4042 - Murphy's Lawyers
164        ~out        4555 - Sprocketology
165        ~out        1965 - Firebirds
166        ~out        3718 - Junkyard Battalion
167        ~out        5129 - Digital Devils
168        ~out        3451 - The ANOMALY
169        ~out        1757 - Wolverines
170        ~out        5347 - Gryphons
171        ~out        3597 - Robo-Rangers
172        ~out        3585 - Rogue Robots of 4-H
173        ~out        3104 - The Cyber Rams
174        ~out        5265 - Radical Impact
175        ~out        4987 - MegaRams
176        ~out        4958 - Robocats
177        ~out        2523 - Tech Storm
178        ~out        5142 - Robo Dominators
179        ~out        3555 - Aluminati
180        ~out        663 - Robonauts


rwodonnell 01-04-2016 08:46

Re: TamperMonkey script to analyze district standings and predict DCMP invitations
 
Quote:

Originally Posted by SoftwareBug2.0 (Post 1565976)
I've also had a script to do this for some time. It's set up to automatically come up with estimates for any of the districts without any magic numbers.

It's your posts that inspired me to do it with TamperMonkey, and in fact I tried to use your methodology but I struggled to understand the Python code. I only vaguely know the language. I did copy your 5 classifications.

While your posts are awesome and much appreciated, I thought it would be neat to go to the district rankings page and have them automatically do what I wanted right in the browser - the beauty of Grease - er - TamperMonkey. (The original name is so much better!)

My son is taking Python - with your permission, when I get a chance (probably next season at this point) I will, with his help, translate your algorithm into Javascript.

SoftwareBug2.0 01-04-2016 13:23

Re: TamperMonkey script to analyze district standings and predict DCMP invitations
 
Quote:

Originally Posted by rwodonnell (Post 1565990)
It's your posts that inspired me to do it with TamperMonkey, and in fact I tried to use your methodology but I struggled to understand the Python code. I only vaguely know the language. I did copy your 5 classifications.

While your posts are awesome and much appreciated, I thought it would be neat to go to the district rankings page and have them automatically do what I wanted right in the browser - the beauty of Grease - er - TamperMonkey. (The original name is so much better!)

My son is taking Python - with your permission, when I get a chance (probably next season at this point) I will, with his help, translate your algorithm into Javascript.

I wonder if there's some way that we could combine our efforts. Putting them inline with the results webpage is definately more elegant than my output. At the same time, I have no idea how to run a TamperMonkey script, and I bet I'm not the only one. I'm not sure what the easiest way is to let people get results is.

How do you run a TamperMonkey script anyway? I tried installing it and got a page that looked IDE-like so I copied your code in but then I wasn't sure what to do next.

I haven't been keeping up on the latest Javascript stuff, so I feel like there's probably some security rules that will prevent this, but is it possible to make a webpage that loads a remote page and then parses it? Can you make an iframe and then mess with its contents? Could this be done with just a normal webpage?

I feel like the less barriers to entry for someone running the script the more useful it will be. For example, I don't know whether anyone besides me has tried to run my script despite it being publicly available for years. I wonder if ultimately the right thing is to put a CGI script together on a server someplace.

What do you think? Either way, feel free to copy the algorithm. And I know it's a little sparse on comments so I'm happy to answer questions about what it's doing.

rwodonnell 02-04-2016 17:08

Re: TamperMonkey script to analyze district standings and predict DCMP invitations
 
Quote:

Originally Posted by SoftwareBug2.0 (Post 1566105)
How do you run a TamperMonkey script anyway? I tried installing it and got a page that looked IDE-like so I copied your code in but then I wasn't sure what to do next.

Once you install a script on your local copy of TamperMonkey, it should run automatically when you go to a page whose URL matches the @match line in the script. So go to the url that the match field says and it should run. If it doesn't, click on the TamperMonkey extension's icon - it should at least indicate that there is a script that can run. Obviously that matching URL is a little specific, and it should be made more general to work for all districts.

Quote:

Originally Posted by SoftwareBug2.0 (Post 1566105)
I feel like the less barriers to entry for someone running the script the more useful it will be.

I think you're right about this. The TamperMonkey extension is a little work - first you have to install the extension, then you have to go and find matching scripts. It's fun but what would be better is, as you suggest, a web page. There is an API available to pull this data from FRC, so that would probably make the most sense.


All times are GMT -5. The time now is 09:05.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi