Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   General Forum (http://www.chiefdelphi.com/forums/forumdisplay.php?f=16)
-   -   Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting (http://www.chiefdelphi.com/forums/showthread.php?t=75272)

Bongle 27-02-2009 17:09

Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
3 Attachment(s)
5:42 EST (v2): Updated with more DLLs in the binary zip which will hopefully allow it to work.
6:27 EST (v3): Updated with sorting and a reduction in verbosity.

I've spent a bit of time recently cleaning up my offensive power rating code and adding a few new features that I felt would be useful this year. The application is attached, as is the source code.

Features:
1) Automatically downloads current results from usfirst.org, parses them, and outputs the results, with only 3 parameters from the user (which regional, which year, and which statistic you want)
2) Three statistics: Offensive Power Rating, Defensive Power Rating, and Estimated +/-. The +/- is simply the OPR minus the DPR. It may or may not actually be useful (or correct!).
3) Easy to use, by my standards. Just double click, enter the parameters it asks for, and it'll download match results itself. Can also be run from a script with command-line parameters for people that want their statistics automated.
4) The parsing code is written so it can be used before a regional is complete. Obviously this reduces the accuracy of the outputted stats, and it doesn't even work before each team has played 2-3 matches. But this can be useful for the friday-evening scouting meeting to pick out diamonds in the rough.

Disclaimers:
1) There are people that don't believe OPR will be useful this year. I disagree with them, but keep that in mind.
2) OPR does not indicate just a robot's performance, but a whole team's performance. If a team has a weak robot but a stellar human player, they might still have a high OPR.
3) Having a high OPR in this game means very little without also having a low DPR. If you score 80 points in a match but always give away 100, you are not useful to your alliance.
4) I don't know how accurate the +/- stuff is, it is a result of me playing around. Hopefully some teams out at regionals right now can compare with their scouting data and give feedback.


Interpretations:
A high OPR might indicate:
-A robot that is very effective at getting balls into enemy trailers
-A HP that is very effective at getting balls into enemy trailers
-A robot that does the grunt-work at supplying empty cells so that its alliance can always score a couple super-cells
-Any robot that just 'greases the wheels' of its alliance, resulting in higher scores

A low OPR (yes, it can even be negative) might indicate:
-An otherwise good robot that takes a lot of penalties
-A robot that simply doesn't score much
-A robot impedes its alliance-partner's progress at scoring

A high DPR might indicate:
-No-shows or broken robots that spend whole matches with a stopped trailer, thus getting filled up
-Robots that tend to get into positions where they get scored on
-Robots that tend to get their alliance partners into positions where they get scored on
-Robots with no auto mode
-Generally, high DPR means low mobility. It is a robot that gets scored on a lot.

A low DPR might indicate:
-A mobile robot that can effectively keep its trailer out of trouble
-A lucky robot

Really, I should have called DPR something else, because a high DPR actually means you're very bad at defending your trailer.

Without further adieau, the attachments:

Rick Wagner 27-02-2009 17:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Sounds interesting. Before I download, what did you compile it with and for what platform (Windows XT I assume)?

Bongle 27-02-2009 17:17

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Rick Wagner (Post 828579)
Sounds interesting. Before I download, what did you compile it with and for what platform (Windows XT I assume)?

Visual Studio 2005, developed on Windows XP, though I'm pretty sure it'll work on Vista as well. It makes heavy use of Windows API functions for the internet stuff, I think you'll need the windows SDK to compile it.

EricVanWyk 27-02-2009 17:27

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
I got this error :
This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

Rick Wagner 27-02-2009 17:29

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 828581)
Visual Studio 2005, developed on Windows XP, though I'm pretty sure it'll work on Vista as well. It makes heavy use of Windows API functions for the internet stuff, I think you'll need the windows SDK to compile it.

Thanks. I have the SDK.

Bongle 27-02-2009 17:37

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by EricVanWyk (Post 828585)
I got this error :
This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

Hmmm...

Try grabbing the Visual Studio 2005 redistributable:
http://www.microsoft.com/downloads/d...displaylang=en

I'm going to update the .zip with the DLLs I think are necessary, but I don't have high hopes.

Samuel H. 27-02-2009 17:40

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by EricVanWyk (Post 828585)
I got this error :
This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

It appears there is a problem with the manifest for the program. When I viewed the dependencies using Dependency Walker, it provided these errors:

Quote:

Error: The Side-by-Side configuration information for "c:\documents and settings\1880337\my documents\downloads\OPRNET.EXE" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
Error: At least one required implicit or forwarded dependency was not found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
MSVCP80D.DLL and MSVCR80D.DLL seem to be the dlls mentioned by the warnings.

When I googled them, I found several mentions of people getting that error and solving it by selecting the "Embed Manifest" option when compiling. I don't know whether this correct or relevant.

Thanks
- Sam

Edit: Tried installing the redistributable, made no difference.

Bongle 27-02-2009 17:42

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Samuel H. (Post 828591)
It appears there is a problem with the manifest for the program. When I viewed the dependencies using Dependency Walker, it provided these errors:



MSVCP80D.DLL and MSVCR80D.DLL seem to be the ones in question.

When I googled them, I found several mentions of people getting that error and solving it by selecting the "Embed Manifest" option when compiling. I don't know whether this correct or relevant.

Thanks
- Sam

I think there are two problems:
1) The .exe I zipped is the debug version, and so looks for debug DLLs that most people won't have
2) Some (most?) people won't have the VS2005 redistributable anyway.

keehun 27-02-2009 17:44

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Next time you do this sort of stuff, PM me so I can develop a mac version alongside yours!

I may try to port this one

Bongle 27-02-2009 17:45

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Quote:

Originally Posted by keehun (Post 828594)
Next time you do this sort of stuff, PM me so I can develop a mac version alongside yours!

I may try to port this one

Most of the math stuff should be easily portable, its just the downloading that is heavily dependent on windows.

Edit: here's the math library I used.

engunneer 27-02-2009 18:19

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Runs on my vista system


Thanks,

Bongle 27-02-2009 18:32

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Just posted a v3 revision that sorts the output, reduces how much pre-statistic stuff it spews, and fixes a bug where the command-line version would pause for input.

engunneer 27-02-2009 18:50

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
please add a "verbose" option that I can turn off :)

thanks.

EricVanWyk 27-02-2009 21:05

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Results from Jersey below (go 1923!!) :
Code:

OPR    1923    31.6079
OPR    708    29.8004
OPR    25      26.0054
OPR    816    25.0949
OPR    1006    24.1073
OPR    2753    23.9246
OPR    136    23.6915
OPR    1218    22.9299
OPR    223    20.6492
OPR    869    19.7636

Code:

DPR    136    32.7112
DPR    11      29.109
DPR    1616    26.7029
DPR    869    26.0814
DPR    223    25.7706
DPR    1048    24.3491
DPR    486    21.5663
DPR    219    20.9251
DPR    1617    20.6711
DPR    2344    20.3672

Code:

PlusMinus      1218    24.2442
PlusMinus      1923    22.7624
PlusMinus      102    21.6363
PlusMinus      2753    20.7922
PlusMinus      25      19.8969
PlusMinus      75      16.9573
PlusMinus      708    14.669
PlusMinus      423    14.5928
PlusMinus      816    11.5961
PlusMinus      1366    9.48648

I only listed the top 10, you'll have to download this cool chunk of code yourself to see the rest.

engunneer 27-02-2009 21:07

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Also, can you reverse the sort on DPR? (since lower is better, they should be at the top of the list)

great work, thanks.

Zholl 27-02-2009 22:50

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
This is pretty cool. I'm debating whether or not to use this or the matrix system I spent the last couple weeks setting up. I guess depending on the delay, doing it by hand is probably faster though, even if it is a pain. Anyway, seems to work fine on my vista system, and I didn't have to compile it with the SDK or anything. One question, though. Is it supposed to close after you enter a command after it gives you the requested stats?

engunneer 27-02-2009 23:54

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
yes

you're supposed to run it from a terminal, so the window doesn't close.

if you run it from a command line, then you can give it the parameters all at once as well.

Bongle 28-02-2009 06:38

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Zholl (Post 828720)
This is pretty cool. I'm debating whether or not to use this or the matrix system I spent the last couple weeks setting up. I guess depending on the delay, doing it by hand is probably faster though, even if it is a pain. Anyway, seems to work fine on my vista system, and I didn't have to compile it with the SDK or anything. One question, though. Is it supposed to close after you enter a command after it gives you the requested stats?

I wanted it to pause at the end if the user double-clicked on it. I couldn't remember the "press any key to continue" API call, so I did it in the poor man's way:
if(!fRunWithoutCommandLineParameters)
{
int a;
cin>>a;
}

DMetalKong 28-02-2009 19:04

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
My friend and I were talking, and if you use the match points from the opposing alliance in the calculation, you can find the approximate number of points scored ON a robot during matches. Could be useful this year.

Bongle 28-02-2009 19:05

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by DMetalKong (Post 828980)
My friend and I were talking, and if you use the match points from the opposing alliance in the calculation, you can find the approximate number of points scored ON a robot during matches. Could be useful this year.

That's the DPR calculation. It can be phrased as "DPR is the average number of points that a team's presence adds to its opponent's score." aka, DPR is the average number of points scored in a robots trailer. It should be lower for highly mobile robots, and very high for no-shows or robots whose strategies or drivetrain tend to get them scored on.

Samuel H. 01-03-2009 06:11

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Hello,

Using v3 worked for me earlier, but I now have a new problem. Running
Quote:

OPRNet.exe kc 2009 opr
downloads the match data, but fails when parsing with the error:

Quote:

Parsing!
No matches found. This regional may not have run yet, or may have HTML output that the parser does not recognize.
Failure to parse XML. Code: -2147467259
I've attached temp.tmp

Thank you,
- Sam

Bongle 01-03-2009 09:55

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Samuel H. (Post 829263)
Hello,

Using v3 worked for me earlier, but I now have a new problem. Running downloads the match data, but fails when parsing with the error:



I've attached temp.tmp

Thank you,
- Sam

Hmmm... the temp.tmp (which is simply the match results HTML page) simply doesn't have any match data. If you look at the KC results page, you can see that the qualifying matches are no longer up. This looks like a FIRST problem.

Thanks for the bug report though!

billbo911 01-03-2009 11:16

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
I'm currently "evaluating" this app for it's effectiveness with some very positive findings. The one thing that I would really like to do is to "export" the output into an Excel spreadsheet for ease of viewing offline. If I am not mistaken, the results are only sent to the screen. Is there a way to have them go to a ".csv" file, or some other format that can easily be opened in Excel?

Bongle 01-03-2009 12:08

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by billbo911 (Post 829346)
I'm currently "evaluating" this app for it's effectiveness with some very positive findings. The one thing that I would really like to do is to "export" the output into an Excel spreadsheet for ease of viewing offline. If I am not mistaken, the results are only sent to the screen. Is there a way to have them go to a ".csv" file, or some other format that can easily be opened in Excel?

In a command line:
Code:

oprnet (regional code) (year) (stat) > blah.csv
This uses the DOS redirect operator to send it to a text file. The stats are are tab-seperated so that you should be able to copy/paste it into excel and have all the cells line up properly.

billbo911 01-03-2009 12:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 829387)
In a command line:
Code:

oprnet (regional code) (year) (stat) > blah.csv
This uses the DOS redirect operator to send it to a text file. The stats are are tab-seperated so that you should be able to copy/paste it into excel and have all the cells line up properly.

Yep, that'll do it!! (Good ol' DOS, it still has some life left in it ;) )

By the way. I am currently running this on a Vista x64, quad core system with 8GB of ram. It absolutely rips! No mods were needed what so ever to get this running. THX!!

Bongle 01-03-2009 12:55

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
2 Attachment(s)
Quote:

Originally Posted by billbo911 (Post 829390)
Yep, that'll do it!! (Good ol' DOS, it still has some life left in it ;) )

By the way. I am currently running this on a Vista x64, quad core system with 8GB of ram. It absolutely rips! No mods were needed what so ever to get this running. THX!!

Well, it's only solving a TeamCount x TeamCount matrix. Crazier stuff I've done in the past was post-season analysis involving every single team (1300x1300 matrix, or so), and that ends up taking a long time.

Also, v4 is done.

Changes:
-DPR is now called SAA for 'scores against average' to make its name more line up with its values
-You can now choose to sort by team. Command-line looks like this:
Code:

oprnet il 2009 opr t
. If you don't want to sort by team, just put an 'r' there, or leave the parameter off entirely.
-Command-line users can now append a 'q' to completely suppress all non-error messages. For example, this:
Code:

oprnet il 2009 opr r q
will only print out the OPR values (or errors if there were any)
-Sorting for SAA/DPR is now reversed, so that the 'best' values come first.

Vikesrock 01-03-2009 18:37

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
This just keeps getting better and better.

It looks like the SAA/DPR still sorts with the highest number on top (which ismost points scored against, right?)

Michael Corsetto 01-03-2009 19:26

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
I'm running on a mac, is there any way that someone could run the app with the numbers from this week's regionals, export to Excel, and post the results on CD? I loved the OPR last year and it was very useful IMO. Thanks Bongle for making it even better this year!

Vikesrock 01-03-2009 19:31

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Michael Corsetto (Post 829763)
I'm running on a mac, is there any way that someone could run the app with the numbers from this week's regionals, export to Excel, and post the results on CD? I loved the OPR last year and it was very useful IMO. Thanks Bongle for making it even better this year!

Match results seem to have disappeared for a number of events. I'll try and remember to check over the next few days and do this when the results reappear.

engunneer 01-03-2009 20:13

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Here are OPR for the events that do have match results posted; a zip file of Team, OPR, SAA, and +/- (tab delimited for easy excel import).

each event is a separate text file.

I wrote a script that will generate these txt files on the fly in autohotkey. I can post (more or less uncommented) code if anyone wants.

This was made using v4 of OPRNet (yay for the new 'quiet' feature.)

Raul 01-03-2009 20:44

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 828578)
Interpretations:
A high DPR might indicate:
-No-shows or broken robots that spend whole matches with a stopped trailer, thus getting filled up
-Robots that tend to get into positions where they get scored on
-Robots that tend to get their alliance partners into positions where they get scored on
-Robots with no auto mode
-Generally, high DPR means low mobility. It is a robot that gets scored on a lot.
...

High DPR can also mean that a robot purposely scored on his own alliance trailers to increase RS (ranking score) or to prevent a G14 violation.

I can tell you that we did this in 4 of our 7 Q-matches. And it got us the highest RS of all the 2 loss teams and allowed us to be seeded 4th. Without this strategy we would not have gotten to pick 1625 and and probably not have won the regional.

In one case we stopped scoring for ourselves with 30 seconds to go and scored about 40 points for the other alliance. So that also lowered our OPR a little bit. I think many the good veteran teams did this to some extent.

Bongle 01-03-2009 20:46

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Raul (Post 829842)
High DPR can also mean that a robot purposely scored on his own alliance trailers to increase RS (ranking score) or to prevent a G14 violation.

I can tell you that we did this in 4 of our 7 Q-matches. And it got us the highest RS of all the 2 loss teams and allowed us to be seeded 4th. Without this strategy we would not have gotten to pick 1625 and and probably not have won the regional.

In one case we stopped scoring for ourselves with 30 seconds to go and scored about 40 points for the other alliance. So that also lowered our OPR a little bit. I think many the good veteran teams did this to some extent.

Good points. I can't edit the first post anymore or else I'd add that.

Bongle 02-03-2009 21:54

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
I guess this is up to v5 now. The only difference of any substance is the new prediction feature. Basically, this uses the OPRs computed so far to predict the remaining matches at a regional, and prints out the simulated rankings afterwards. If all the matches have been played, it does a self-analysis to see how accurate it would have been. Based on this, I can say that it is about 65-70% accurate when predicting after 40-50 matches, though this seems to depend heavily on the regional. It is much better at predicting GTR 2008 (80%) than it is predicting DC 2009 (55-60). Still, it is generally a good bit better than a coinflip.

Command-line is:
Code:

oprnet <regional> <year> predict <sort style> <quiet flag>

So...
oprnet il 2009 predict t q
or
oprnet dc 2009 predict t
or
oprnet oh 2009 predict
or
oprnet on 2008 predict (this has pretty cool results)

The main problem with predicting match results is that robots evolve quite a bit over the course of a regional. Some break, some get fixed, some get improved tactics or mechanical parts. Without actual 'on-the-ground' knowledge of what is going on with individual robots, any purely mathematical model is going to fail. Getting 65-70% of guesses right isn't bad. But still, the 'predict' feature is an entertainment-only kind of feature.

billbo911 03-03-2009 10:23

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 829387)
In a command line:
Code:

oprnet (regional code) (year) (stat) > blah.csv
This uses the DOS redirect operator to send it to a text file. The stats are are tab-seperated so that you should be able to copy/paste it into excel and have all the cells line up properly.

I just tested this method with v.5. I needed to save it as a .txt file for Excel to open it correctly. No big deal.
I also noted that Excel sorted it backward. In other words, the highest ranked team was listed last.Again, this is no big deal and can easily be dealt with.
I'll test more to see if I can get Excel to import it in reverse sort order.

Bongle 03-03-2009 10:32

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by billbo911 (Post 830944)
I just tested this method with v.5. I needed to save it as a .txt file for Excel to open it correctly. No big deal.
I also noted that Excel sorted it backward. In other words, the highest ranked team was listed last.Again, this is no big deal and can easily be dealt with.
I'll test more to see if I can get Excel to import it in reverse sort order.

Oh sorry, I forgot to fix that. I knew there was something requested...

Rick 03-03-2009 10:39

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Any OPR listing for BAE regional?

Bongle 03-03-2009 10:47

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Ricksta121 (Post 830954)
Any OPR listing for BAE regional?

Nope, because the qualification matches have mysteriously disappeared.

Fireworks 234 03-03-2009 10:57

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 830960)
Nope, because the qualification matches have mysteriously disappeared.

And Buckeye hasn't been updated yet, it's only got a few of the elimination matches in there and they don't even have the cities the teams are from for the awards yet.

Clinton Bolinger 03-03-2009 11:40

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Any chase you can have it run a full report, something like:

Code:

il 2009 opr saa pm t > blah.csv
That way you can bring all the data in to Excel at once instead of running it multiple times.

-Oris-

Bongle 03-03-2009 11:47

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Oris (Post 830998)
Any chase you can have it run a full report, something like:

Code:

il 2009 opr saa pm t > blah.csv
That way you can bring all the data in to Excel at once instead of running it multiple times.

-Oris-

I'll add an "all" option tonight.

engunneer 03-03-2009 12:02

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
attached is a Autohotkey script I wrote (compiled and main source) that grabs every event in the eventlist.txt file, and makes a .txt file of the results. The result file is already arranged as they will be in the "all" option.

Thanks for the continued updates.

Any way you can grab data from TBA when First's rankings aren't available? I guess you would need a lookup table from (year,event) -> TBA eventID.

Killraine 03-03-2009 12:34

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Am I correct in assuming that each of the following should be sorted (best -> worst) like this:

OPR: High (best) -> Low (worst)
SAA (DPR): Low (best) -> High (worst)
+/-: High (best) -> Low (worst)

If I am right, it seems that V5 sorts them wrong, sorting all categories as low -> high

billbo911 03-03-2009 12:37

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 831004)
I'll add an "all" option tonight.

While you are adding options...........


Being that this app is dependent on FIRST updating their postings accurately and in a timely manner...
In the odd situation where there would not be access to that data (ie. no wifi available at the venue) or when FIRST has not updated it completely, is thee a way we could create our own file containing all the match scores and teams in each match from regional we are interested in and then have OPRnet point to that data source?

Bongle 03-03-2009 12:44

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by billbo911 (Post 831043)
While you are adding options...........


Being that this app is dependent on FIRST updating their postings accurately and in a timely manner...
In the odd situation where there would not be access to that data (ie. no wifi available at the venue) or when FIRST has not updated it completely, is thee a way we could create our own file containing all the match scores and teams in each match from regional we are interested in and then have OPRnet point to that data source?

Check my OPR thread from last year. That's how it used to work, and I decided it was an annoying way to do things, which is why this year's version has internet connectivity. Keep in mind you need about 30 matches before it starts being able to run OPR, so that'd be a lot of hand-entering.

I'll see about adding a TBA parser (it'd be pretty nice because TBA uses the same formatting for each year, unlike FIRST), but it looks like it'll be pretty annoying owing to the fact that TBA doesn't use the FRC acronyms for events so I'd need a big mapping from (year,event)->(tbaID).

Quote:

If I am right, it seems that V5 sorts them wrong, sorting all categories as low -> high
Yep, that's on the to-do list.

Tom Schindler 03-03-2009 13:05

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 830960)
Nope, because the qualification matches have mysteriously disappeared.

Anyone know what's going on with the official results from BAE? The only match results listed on FIRST's page are the elimination rounds, even those are not fully up-to-date.

Killraine 03-03-2009 13:17

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Also, since the scores are getting sorted anyway, could you add an actual number rank (ie highest opr would be 1, next would be 2, etc.)?

Bongle 04-03-2009 19:12

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
2 Attachment(s)
v6:

-Sorts OPR, SAA, and PMs in a more logical manner
-New 'all' statistic type that prints out OPR, SAA, and PM in a table. Different output for the console window versus command-line running so that you guys running it for excel will get your tabs, while the console-window people will still be able to read it.

Clinton Bolinger 05-03-2009 11:21

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Looks good...

When you try the following the Pos is just in numerical order:

Code:

OPRNet.exe il 2009 all t q > all.txt
Any chance you can have it show their Rank instead?

-Oris-

Bongle 05-03-2009 11:43

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Oris (Post 832108)
Looks good...

When you try the following the Pos is just in numerical order:

Code:

OPRNet.exe il 2009 all t q > all.txt
Any chance you can have it show their Rank instead?

-Oris-

Rather than 't' (for sort-by-team), use 'r' (for sort-by-rank). That'll sort the table by OPR first, though if you want to sort it, I'd recommend copying the contents of all.txt into excel and sorting there.

Killraine 05-03-2009 12:40

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
When I sort +/- by rank, the highest ranked team is rank "0" rather than "1"

Edit: Also, it would be nice to be able to sort by team, but still see what rank the teams are when sorted by rating. Ie. Sort by rating first to get a rank value for each team, then resort by team number. I know its not really necessary if you just take the data and put it in excel, but it would be nice for the program as a stand alone.

JesseK 05-03-2009 13:07

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Bongle -- do you mind if I port this over to Java? I want to try to get a real-time OPR Scoring program working by the time Atlanta rolls around.

Bongle 05-03-2009 13:16

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 832147)
Bongle -- do you mind if I port this over to Java? I want to try to get a real-time OPR Scoring program working by the time Atlanta rolls around.

Go ahead. If you're running it from a server, I think it'd be easiest to just run oprnet once each match is done and parse the results. Porting the math stuff might be hard.

SteveGPage 06-03-2009 09:56

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
I have a general question that I would love for you all to consider. I am a firm believer in the OPR/DPR concept, and included it in our team's scouting application. But what I found was that in this game, ALLIANCE data in a match is not that helpful. If a really good team has an alliance with two essentially non-functional robots in 2 or 3 of your matches - the numbers look terrible for that team. A case in point, 234 (Cyberblue) at the DC regional - if you look at the OPR numbers for them, they are in the middle of the pack. Our scouting team did NOT look at the alliance data this year. I had scouts answer the following questions:
1) How many MR did they place in a trailer (including their own in the event they were trying to avoid the penalty)
2) How many MR were in their trailer (by either the opposing alliance, or the HP)
3) How many EC did they deliver to be exchanged with a SC

I then calculated the OPR and DPR on those stats. In my example above, regarding 234 - they jumped from middle of the pack, to essentially the same level as 45, which is where they should have been ranked.

Any one else looking at TEAM OPR and DPR, and if so, how are you doing it, and what were your results like.

By the way, when I looked at the predictive nature of the values we calculated, we were right in our predictions more than 85% of the time. Only something like "forgetting to turn on the radio" or some such issue would throw off the results.

Best regards,

Steve

Bongle 06-03-2009 10:11

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by SteveGPage (Post 832462)
I have a general question that I would love for you all to consider. I am a firm believer in the OPR/DPR concept, and included it in our team's scouting application. But what I found was that in this game, ALLIANCE data in a match is not that helpful.

Any team that scouts entirely off of the output of this program (or any OPR program) is doing something wrong. Personally, I use it to get a quick idea of which robots to watch if I'm watching a webcast and haven't been following an entire regional. I completely second your recommendation of in-person scouting. Just like the FRC rankings system often fails an otherwise good team, the OPR ranking algorithm can screw up too.

Quote:

If a really good team has an alliance with two essentially non-functional robots in 2 or 3 of your matches - the numbers look terrible for that team.
That's not necessarily true. If your two non-functional alliance partners are consistently non-functional, then your OPR should be unaffected. The main thing that throws off OPR is inconsistency. If an very good team has a battery fall out during a match, then it affects their alliance partners' OPR scores quite badly, because it 'looks' to the algorithm like their presence resulted in a massive reduction in their alliance's score.

Killraine 06-03-2009 11:27

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
If only we could have some kind of "fluke" marker that we could place on team's whenever they behave inconsitently. I don't know your algorithm, but maybe it could treat a fluke robot performance as a no-name default robot that performs at the low level it does.

JesseK 06-03-2009 13:58

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Surprisingly, I got alot of the backbone of the porting done last night. Luckily Jama makes a Java library as well. I may have a first pass at it completed by the end of the weekend. All I have to do is figure out this silly URL issue...

Manoel 06-03-2009 14:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 832540)
Surprisingly, I got alot of the backbone of the porting done last night. Luckily Jama makes a Java library as well. I may have a first pass at it completed by the end of the weekend. All I have to do is figure out this silly URL issue...

Oh, how I understand you! ;)

I'm working on a MATLAB version since last night and the math is all working IF you input the data (copy from FIRST to Excel then to MATLAB, really easy but cumbersome). Coding to parse the results from FIRST's website is going to take the full weekend, I believe.

Bongle 06-03-2009 14:20

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Manoel (Post 832546)
Oh, how I understand you! ;)

I'm working on a MATLAB version since last night and the math is all working IF you input the data (copy from FIRST to Excel then to MATLAB, really easy but cumbersome). Coding to parse the results from FIRST's website is going to take the full weekend, I believe.

That depends on how flexible you want your parsing to be. I spent 2 hours trying to write an uber-XML parser with MSXML, then I gave up and spent about half an hour hacking together the one that I use now. All of FIRST's score pages from mid-2008 onwards are generated from the same application, and have identical formatting. I just read one line at a time and looked for the text that always preceded a team score. It works well enough for me, though it'll need an update if they ever change their match results page style.

Better idea, if you're not already committed to scraping from FIRST: scrape from TBA - they use the same style for all events, all years. Your program would be able to run OPRs all the way back to 2006.

Edit: Speaking of parsing, I notice that the prediction code doesn't work with a regional underway. I'll have to look at that tonight (I wasn't able to properly test it since all regionals were done when I initially wrote that feature).

Manoel 08-03-2009 00:31

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Quote:

Originally Posted by Bongle (Post 832548)
That depends on how flexible you want your parsing to be. I spent 2 hours trying to write an uber-XML parser with MSXML, then I gave up and spent about half an hour hacking together the one that I use now. All of FIRST's score pages from mid-2008 onwards are generated from the same application, and have identical formatting. I just read one line at a time and looked for the text that always preceded a team score. It works well enough for me, though it'll need an update if they ever change their match results page style.

Better idea, if you're not already committed to scraping from FIRST: scrape from TBA - they use the same style for all events, all years. Your program would be able to run OPRs all the way back to 2006.

Edit: Speaking of parsing, I notice that the prediction code doesn't work with a regional underway. I'll have to look at that tonight (I wasn't able to properly test it since all regionals were done when I initially wrote that feature).

You, sir, are wise. ;)

As a professor used to say, there are always at least two ways to solve a problem. More often than not, the easy ways are not correct and the correct ways are not easy. We chose easy, so eventually it will come and bite us.

I used TBA data so you can get stats for events from 2006 to 2009. It's nearly impossible to obtain a 2007 event matrix that's not ill-conditioned - I believe it's due to FIRST's awful alliance sorting algorithms from that year, but have not looked into in detail. In short, OPR for 2007 will not work. If someone is feeling reminiscent this days, please take a look.

Here's the code, just run OPR from MATLAB's command window and ask for what you want. The script returns three arrays containing ranked OPR, DPR (or whatever you might call it) and +/- stats for that particular event.

I have tested it with several events, but bugs may arise. Please test and let me know.

Bongle 08-03-2009 09:31

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Manoel (Post 832967)
You, sir, are wise. ;)

As a professor used to say, there are always at least two ways to solve a problem. More often than not, the easy ways are not correct and the correct ways are not easy. We chose easy, so eventually it will come and bite us.

I used TBA data so you can get stats for events from 2006 to 2009. It's nearly impossible to obtain a 2007 event matrix that's not ill-conditioned - I believe it's due to FIRST's awful alliance sorting algorithms from that year, but have not looked into in detail. In short, OPR for 2007 will not work. If someone is feeling reminiscent this days, please take a look.

Here's the code, just run OPR from MATLAB's command window and ask for what you want. The script returns three arrays containing ranked OPR, DPR (or whatever you might call it) and +/- stats for that particular event.

I have tested it with several events, but bugs may arise. Please test and let me know.

It is probably a combination of the terrible alliance picking, and that 2007 had non-linear scoring. A robot that always scored 3 ringers in 2007 might contribute 6 points in one match (by scoring 2 points, 3 times), or it might contribute 192 points in another, by extending a row of 5 into a row of 8.

In 2006, 2008, and 2009, a robot that did <game action> 5 times in each match generally generated the same number of points.

JesseK 08-03-2009 11:32

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
2 Attachment(s)
It doesn't seem to matter how I redo the matrices, nor whether I use LU or QR decomposition, I keep getting these numbers and they don't match up with the OPRNet.exe data:

My Output
Code:

Washington DC Regional
01.    Team 2199        W:5        L:2        OPR:25.39        DPR:15.13        PMR:10.26
02.    Team 2377        W:6        L:1        OPR:22.73        DPR:7.89        PMR:14.83
03.    Team 0045        W:7        L:0        OPR:21.54        DPR:5.66        PMR:15.88
04.    Team 0234        W:6        L:1        OPR:19.74        DPR:13.76        PMR:5.98
05.    Team 0365        W:4        L:3        OPR:19.58        DPR:11.78        PMR:7.80

OPRNet.exe Output
Code:

Solve complete.
 Pos  Team    OPR    SAA      PM
  1  2199  44.74    26.5  18.24
  2  365  35.45  13.81  21.63
  3    45  34.37 -0.7267  35.09
  4  2377  32.05  7.856  24.19
  5  234  31.55  23.53  8.021

On another interesting note, if you take the sum of the entire 'PMR' column for all teams within a regional on either, you get 0.

WARNING: Attachment has some gui bugs. It also creates temp files for every regional/year, so I'd recommend putting it in a folder on its own. It also requires Java 1.6 since it does some neat enumeration and comparator stuff. To run it, just double-click it.

Manoel 08-03-2009 12:06

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 833045)
It doesn't seem to matter how I redo the matrices, nor whether I use LU or QR decomposition, I keep getting these numbers and they don't match up with the OPRNet.exe data:

Can you post your M matrix for the DC regional for us to compare?

JesseK 08-03-2009 12:43

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
M:
Code:

  14  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  1  0  1  1  1  0  0  1  0  1  0  0  0  0  1  0  1  0  0  0  0  0
  0  14  0  0  0  0  0  0  1  0  0  0  0  1  0  0  1  0  0  0  0  0  0  1  0  1  0  0  0  0  1  1  0  0  1  1  0  0  1  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0
  0  0  14  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  1  0  0  0  0  0  1  0  1  1  1  0  1  0  0
  0  0  0  14  0  1  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  1  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  1
  0  0  0  0  14  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  1  1  0  0  1  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0
  0  0  0  1  0  14  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  1  1  0  1
  0  0  0  1  0  1  14  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  1
  1  0  0  0  1  0  0  14  0  1  0  1  0  0  1  0  1  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  1  1  0  0  1  0  0  0
  0  1  0  0  1  0  0  0  14  0  0  0  0  0  0  1  0  0  0  0  0  0  1  1  1  0  0  1  1  0  0  1  1  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
  0  0  1  0  0  0  0  1  0  14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  0  0  0  1  1  0  0  1  1  0  1
  0  0  0  0  0  0  0  0  0  0  14  0  1  0  1  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  1  1  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0
  0  0  1  0  0  0  1  1  0  0  0  14  0  0  1  1  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1  0  1  0  0  0  1  0
  0  0  0  0  0  0  0  0  0  0  1  0  14  1  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  0  1  1  0  1  1  0  1  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0
  1  1  0  1  0  0  0  0  0  0  0  0  1  14  0  0  0  1  1  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  0
  0  0  0  0  0  0  0  1  0  0  1  1  0  0  14  1  1  0  1  1  1  0  0  0  0  0  1  0  0  0  0  0  0  0  1  1  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0
  1  0  0  0  0  0  0  0  1  0  0  1  0  0  1  14  0  0  1  1  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0  1  0  0  1  1  0  0  0  0  0
  1  1  0  0  0  0  1  1  0  0  0  0  0  0  1  0  14  0  0  0  0  1  0  1  0  1  0  0  0  0  1  0  0  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0
  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  14  0  0  1  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  1  1  0  0  0  1  0  0  1  0  1  0  0  1  0  0  0  0  1  0  0  0  1
  0  0  0  0  0  0  0  0  0  0  1  0  0  1  1  1  0  0  14  0  0  0  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  0  1  0  1  0  1  0  0  0  0  1  0  0  0  0
  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  1  0  0  0  14  0  1  0  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1  1  0  1  1  0  0  0  0
  0  0  0  0  1  1  1  0  0  0  1  0  1  1  1  0  0  1  0  0  14  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  1  0  0  0  0  0  0
  0  0  0  1  0  1  0  0  0  0  1  0  0  0  0  0  1  0  0  1  0  14  0  0  0  0  0  1  0  0  1  1  0  1  0  0  0  0  1  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0
  0  0  1  1  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  14  0  0  1  0  0  0  0  0  0  0  0  0  1  1  1  0  0  1  0  1  0  0  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  0  0  14  1  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  1  0  0  1  0  0  0  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  0
  0  0  0  0  0  0  0  1  1  0  0  1  0  0  0  0  0  0  0  1  0  0  0  1  14  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0  1
  0  1  0  0  0  0  0  1  0  0  0  0  0  1  0  1  1  0  0  0  0  0  1  0  0  14  0  0  0  0  1  0  0  0  0  0  0  1  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  0  0  0  1  1  0
  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0  0  0  0  0  0  1  0  14  0  0  1  0  0  0  1  1  1  0  0  0  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1
  0  0  0  0  1  0  0  0  1  0  0  1  1  1  0  0  0  0  0  0  0  1  0  0  0  0  0  14  0  0  0  0  1  0  0  0  1  0  1  0  0  0  0  0  1  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0
  0  0  1  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  14  0  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  1  1  0  1  0  0  0  1  1  0  0  0  0  0
  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  1  0  1  0  0  14  0  0  0  1  0  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  0  0  0  0  0  0  1  1
  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  1  0  0  0  0  14  0  1  1  1  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  0  0
  0  1  0  1  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  14  0  0  0  0  0  1  1  1  0  1  0  0  0  0  0  0  0  1  0  0  0  1  0  1  1  0  0  0  0  1  0  0  0
  0  0  0  0  1  1  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  1  0  14  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  1  1  0  1  1  0  0  0  0  0  1  0  0  0
  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  1  1  0  0  14  0  0  0  0  0  0  0  0  0  1  1  1  0  0  1  1  0  0  0  0  1  0  1  0  0  0  0  0  1  0  0
  0  1  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  1  0  0  0  1  0  0  0  14  1  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  1  1  0  0  0  0  1  0  0  0  0
  0  1  0  0  0  0  0  0  0  0  1  0  1  0  1  0  1  1  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  14  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  1  0
  0  0  0  1  1  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  1  0  0  0  0  0  0  14  0  0  0  0  0  0  0  1  1  1  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0
  1  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  1  0  0  0  1  0  1  0  0  0  0  0  14  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  1  0  1  1  0  0  0  0  0  1
  0  1  0  1  0  0  0  0  0  0  0  0  1  0  0  0  1  1  0  0  0  1  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  14  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  0  0  1  0  0  1  1  0  0  0  0
  1  0  0  0  0  0  0  0  0  0  1  0  1  0  1  0  0  0  0  0  1  1  0  0  0  0  1  0  0  1  1  1  0  0  0  0  0  0  0  14  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0
  0  0  0  0  1  0  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  0  1  0  0  1  1  0  1  0  0  0  1  0  1  0  0  0  0  0  14  0  0  0  0  0  0  0  0  0  1  0  1  0  1  0  0  0  0  0  0  0  0  1  0
  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  1  0  14  0  1  1  0  0  0  0  1  1  1  0  0  0  0  0  1  0  0  0  0  0  0  0
  0  0  1  0  0  0  1  0  1  0  1  0  1  0  0  0  0  1  1  0  0  0  1  1  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  16  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1
  1  0  0  0  0  1  0  0  0  0  1  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  1  14  1  1  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  1  1  0  0
  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  1  1  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  1  14  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  0  1
  1  0  0  0  0  0  1  0  1  0  1  0  0  0  0  1  0  0  0  0  0  0  1  1  1  0  0  1  0  0  0  0  0  1  0  0  1  0  1  0  0  0  0  1  0  14  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0
  1  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0  0  1  1  0  0  14  1  0  1  0  1  0  0  0  0  0  0  0  1  0  1  1  0  0
  1  1  0  0  0  1  1  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  14  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0
  0  0  0  1  1  0  0  1  0  1  0  0  0  1  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  1  14  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0
  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  1  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0  1  14  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0
  1  0  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  1  0  0  1  0  0  0  0  0  14  0  0  0  0  0  0  1  0  0  0  0  1  0  0
  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  1  0  0  0  1  0  0  1  0  1  0  0  1  0  0  1  0  14  0  0  0  0  0  0  0  1  0  0  0  0  0
  1  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  1  0  0  1  0  0  0  0  1  0  0  1  1  0  0  1  0  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0  14  0  1  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  1  0  0  0  0  0  1  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  14  1  0  1  1  0  1  1  0  0  1  0
  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  1  0  1  1  1  1  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  1  14  0  0  0  0  0  0  0  0  1  1
  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  1  1  1  0  1  0  0  0  0  0  1  0  0  0  1  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  14  1  0  0  0  0  0  0  0  0
  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  0  0  1  0  1  0  1  0  0  0  0  1  1  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1  14  0  1  0  1  0  0  0  0
  1  0  0  0  0  0  1  1  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  14  0  0  0  0  1  1  0
  0  0  1  1  1  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  14  1  1  0  0  0  1
  1  1  1  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  1  14  0  0  0  0  0
  0  0  1  1  0  0  1  0  0  0  0  0  0  0  0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  1  0  14  0  1  0  0
  0  0  0  1  0  1  0  1  0  1  1  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0  1  1  0  0  0  0  0  0  0  0  0  1  1  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  14  0  0  0
  0  0  1  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  1  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  0  1  0  0  0  0  0  0  1  0  0  1  0  14  0  0
  0  1  0  0  1  0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  1  1  0  0  0  0  1  1  0  0  1  0  0  0  0  0  14  0
  0  0  0  1  0  1  1  0  1  1  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  14

Corresponding SFor:
Code:

310
 358
 388
 328
 409
 365
 541
 336
 345
 326
 410
 368
 348
 242
 335
 300
 481
 384
 312
 308
 361
 369
 322
 395
 321
 302
 387
 317
 317
 279
 327
 365
 406
 396
 228
 342
 360
 260
 365
 359
 319
 370
 589
 346
 438
 336
 312
 228
 312
 297
 454
 300
 273
 322
 414
 270
 331
 409
 356
 292
 412
 445
 324
 402
 328

Corresponding team/row map
Code:

1915
272
2068
1370
7
401
2199
1900
2729
1111
1731
2819
1522
1885
1872
1123
45
1629
1748
53
768
1279
2964
176
2962
2963
181
2961
538
2912
611
2913
2914
614
1849
1699
339
615
623
346
620
3046
2377
1719
1712
1727
1418
2121
449
2537
234
587
709
2421
118
357
116
597
836
2900
1446
365
2911
122
1793


Manoel 08-03-2009 13:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 833076)
M:
Code:

  14  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  1  0  1  1  1  0  0  1  0  1  0  0  0  0  1  0  1  0  0  0  0  0
  0  14  0  0  0  0  0  0  1  0  0  0  0  1  0  0  1  0  0  0  0  0  0  1  0  1  0  0  0  0  1  1  0  0  1  1  0  0  1  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0
  0  0  14  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  1  0  0  0  0  0  1  0  1  1  1  0  1  0  0
  0  0  0  14  0  1  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  1  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  1
  0  0  0  0  14  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  1  1  0  0  1  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0
  0  0  0  1  0  14  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  1  1  0  1
  0  0  0  1  0  1  14  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  1
  1  0  0  0  1  0  0  14  0  1  0  1  0  0  1  0  1  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  1  1  0  0  1  0  0  0
  0  1  0  0  1  0  0  0  14  0  0  0  0  0  0  1  0  0  0  0  0  0  1  1  1  0  0  1  1  0  0  1  1  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
  0  0  1  0  0  0  0  1  0  14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  0  0  0  1  1  0  0  1  1  0  1
  0  0  0  0  0  0  0  0  0  0  14  0  1  0  1  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  1  1  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0
  0  0  1  0  0  0  1  1  0  0  0  14  0  0  1  1  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1  0  1  0  0  0  1  0
  0  0  0  0  0  0  0  0  0  0  1  0  14  1  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  0  1  1  0  1  1  0  1  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0
  1  1  0  1  0  0  0  0  0  0  0  0  1  14  0  0  0  1  1  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  1  1  0  0  0  0  0  0  0  0  1  0  0  0
  0  0  0  0  0  0  0  1  0  0  1  1  0  0  14  1  1  0  1  1  1  0  0  0  0  0  1  0  0  0  0  0  0  0  1  1  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0
  1  0  0  0  0  0  0  0  1  0  0  1  0  0  1  14  0  0  1  1  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0  1  0  0  1  1  0  0  0  0  0
  1  1  0  0  0  0  1  1  0  0  0  0  0  0  1  0  14  0  0  0  0  1  0  1  0  1  0  0  0  0  1  0  0  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0
  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  14  0  0  1  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  1  1  0  0  0  1  0  0  1  0  1  0  0  1  0  0  0  0  1  0  0  0  1
  0  0  0  0  0  0  0  0  0  0  1  0  0  1  1  1  0  0  14  0  0  0  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  0  1  0  1  0  1  0  0  0  0  1  0  0  0  0
  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  1  0  0  0  14  0  1  0  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1  1  0  1  1  0  0  0  0
  0  0  0  0  1  1  1  0  0  0  1  0  1  1  1  0  0  1  0  0  14  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  1  0  0  0  0  0  0
  0  0  0  1  0  1  0  0  0  0  1  0  0  0  0  0  1  0  0  1  0  14  0  0  0  0  0  1  0  0  1  1  0  1  0  0  0  0  1  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0
  0  0  1  1  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  14  0  0  1  0  0  0  0  0  0  0  0  0  1  1  1  0  0  1  0  1  0  0  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  0  0  14  1  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  1  0  0  1  0  0  0  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  0
  0  0  0  0  0  0  0  1  1  0  0  1  0  0  0  0  0  0  0  1  0  0  0  1  14  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0  1
  0  1  0  0  0  0  0  1  0  0  0  0  0  1  0  1  1  0  0  0  0  0  1  0  0  14  0  0  0  0  1  0  0  0  0  0  0  1  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  0  0  0  1  1  0
  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0  0  0  0  0  0  1  0  14  0  0  1  0  0  0  1  1  1  0  0  0  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1
  0  0  0  0  1  0  0  0  1  0  0  1  1  1  0  0  0  0  0  0  0  1  0  0  0  0  0  14  0  0  0  0  1  0  0  0  1  0  1  0  0  0  0  0  1  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0
  0  0  1  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  14  0  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  1  1  0  1  0  0  0  1  1  0  0  0  0  0
  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  1  0  1  0  0  14  0  0  0  1  0  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  0  0  0  0  0  0  1  1
  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  1  0  0  0  0  14  0  1  1  1  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  0  0
  0  1  0  1  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  14  0  0  0  0  0  1  1  1  0  1  0  0  0  0  0  0  0  1  0  0  0  1  0  1  1  0  0  0  0  1  0  0  0
  0  0  0  0  1  1  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  1  0  14  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  1  1  0  1  1  0  0  0  0  0  1  0  0  0
  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  1  1  0  0  14  0  0  0  0  0  0  0  0  0  1  1  1  0  0  1  1  0  0  0  0  1  0  1  0  0  0  0  0  1  0  0
  0  1  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  1  0  0  0  1  0  0  0  14  1  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  1  1  0  0  0  0  1  0  0  0  0
  0  1  0  0  0  0  0  0  0  0  1  0  1  0  1  0  1  1  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  14  0  0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  1  0
  0  0  0  1  1  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  1  0  0  0  0  0  0  14  0  0  0  0  0  0  0  1  1  1  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0
  1  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  1  0  0  0  1  0  1  0  0  0  0  0  14  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  1  0  1  1  0  0  0  0  0  1
  0  1  0  1  0  0  0  0  0  0  0  0  1  0  0  0  1  1  0  0  0  1  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  14  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  0  0  1  0  0  1  1  0  0  0  0
  1  0  0  0  0  0  0  0  0  0  1  0  1  0  1  0  0  0  0  0  1  1  0  0  0  0  1  0  0  1  1  1  0  0  0  0  0  0  0  14  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0
  0  0  0  0  1  0  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  0  1  0  0  1  1  0  1  0  0  0  1  0  1  0  0  0  0  0  14  0  0  0  0  0  0  0  0  0  1  0  1  0  1  0  0  0  0  0  0  0  0  1  0
  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  1  0  14  0  1  1  0  0  0  0  1  1  1  0  0  0  0  0  1  0  0  0  0  0  0  0
  0  0  1  0  0  0  1  0  1  0  1  0  1  0  0  0  0  1  1  0  0  0  1  1  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  16  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1
  1  0  0  0  0  1  0  0  0  0  1  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  1  14  1  1  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  1  1  0  0
  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  1  0  1  1  0  0  0  0  0  1  0  0  1  0  0  0  0  1  0  1  14  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  0  1
  1  0  0  0  0  0  1  0  1  0  1  0  0  0  0  1  0  0  0  0  0  0  1  1  1  0  0  1  0  0  0  0  0  1  0  0  1  0  1  0  0  0  0  1  0  14  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0
  1  1  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0  0  1  1  0  0  14  1  0  1  0  1  0  0  0  0  0  0  0  1  0  1  1  0  0
  1  1  0  0  0  1  1  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  14  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0
  0  0  0  1  1  0  0  1  0  1  0  0  0  1  0  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0  0  0  1  14  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0
  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  1  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0  1  14  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0
  1  0  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  1  0  0  1  0  0  0  0  0  14  0  0  0  0  0  0  1  0  0  0  0  1  0  0
  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  1  0  0  0  1  0  0  1  0  1  0  0  1  0  0  1  0  14  0  0  0  0  0  0  0  1  0  0  0  0  0
  1  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  1  1  0  0  1  0  0  0  0  1  0  0  1  1  0  0  1  0  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0  14  0  1  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  1  0  0  0  0  0  1  0  1  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  14  1  0  1  1  0  1  1  0  0  1  0
  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0  1  0  1  1  1  1  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  1  14  0  0  0  0  0  0  0  0  1  1
  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  1  0  1  1  1  0  1  0  0  0  0  0  1  0  0  0  1  1  0  1  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  14  1  0  0  0  0  0  0  0  0
  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  0  0  1  0  1  0  1  0  0  0  0  1  1  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1  14  0  1  0  1  0  0  0  0
  1  0  0  0  0  0  1  1  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  14  0  0  0  0  1  1  0
  0  0  1  1  1  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  14  1  1  0  0  0  1
  1  1  1  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  1  14  0  0  0  0  0
  0  0  1  1  0  0  1  0  0  0  0  0  0  0  0  0  1  1  1  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  1  0  14  0  1  0  0
  0  0  0  1  0  1  0  1  0  1  1  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  0  1  0  0  0  1  1  0  0  0  0  0  0  0  0  0  1  1  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  14  0  0  0
  0  0  1  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  0  0  1  0  0  1  0  0  0  0  0  0  1  1  0  1  0  0  0  1  0  0  0  0  0  0  1  0  0  1  0  14  0  0
  0  1  0  0  1  0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  1  1  0  0  0  0  1  1  0  0  1  0  0  0  0  0  14  0
  0  0  0  1  0  1  1  0  1  1  0  0  0  0  0  0  0  1  0  0  0  0  0  0  1  0  1  0  0  1  0  0  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  1  0  0  0  1  0  0  0  0  0  14


OK, the only difference is in the main diagonal of the M matrix. S results are correct. You're counting each team twice in the "how much matches played with itself". Dividing the main diagonal by 2 will do the trick, though fixing the logic might be wiser (and just as easy).

I also find it easier to work with the team list sorted from low to high. For instance, with your numbers, I had to sort, transpose, and sort again to match mine.

Let us know when it's fixed! :D

JesseK 08-03-2009 13:32

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

I also find it easier to work with the team list sorted from low to high. For instance, with your numbers, I had to sort, transpose, and sort again to match mine.
The user can sort by 3 statistics, and in the future possibly more. There are additional gui aspects I'm working on, which is why if you run the gui you see a tabbed panel at the top. I figure sorting doesn't matter during calculation due to the fact that it will all be sorted a billion ways after it's calculated anyways ;)

Thanks for the find, it's fixed!

JesseK 09-03-2009 22:48

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
2 Attachment(s)
Here's the top 25 from Week 1 & 2:
Code:

01.    Team 0071        W:7        L:0        OPR:63.55        DPR:13.69        PMR:49.86
02.    Team 0968        W:9        L:0        OPR:52.85        DPR:12.82        PMR:40.03
03.    Team 1625        W:6        L:2        OPR:48.82        DPR:13.99        PMR:34.83
04.    Team 0694        W:5        L:1        OPR:48.05        DPR:17.20        PMR:30.85
05.    Team 2199        W:5        L:2        OPR:44.74        DPR:26.50        PMR:18.24
06.    Team 1622        W:8        L:2        OPR:44.21        DPR:10.39        PMR:33.82
07.    Team 0188        W:6        L:2        OPR:43.56        DPR:23.64        PMR:19.92
08.    Team 1114        W:7        L:1        OPR:43.18        DPR:11.25        PMR:31.93
09.    Team 2753        W:7        L:0        OPR:43.03        DPR:8.07        PMR:34.96
10.    Team 1155        W:6        L:1        OPR:41.84        DPR:7.39        PMR:34.45
11.    Team 1923        W:4        L:3        OPR:41.15        DPR:16.71        PMR:24.44
12.    Team 0111        W:6        L:2        OPR:41.13        DPR:15.06        PMR:26.07
13.    Team 0245        W:10        L:2        OPR:40.52        DPR:3.37        PMR:37.15
14.    Team 1806        W:7        L:0        OPR:39.87        DPR:9.12        PMR:30.75
15.    Team 0040        W:7        L:2        OPR:39.74        DPR:11.28        PMR:28.46
16.    Team 1507        W:6        L:0        OPR:39.63        DPR:17.30        PMR:22.33
17.    Team 1823        W:6        L:1        OPR:38.78        DPR:5.14        PMR:33.64
18.    Team 1218        W:6        L:1        OPR:38.57        DPR:8.18        PMR:30.40
19.    Team 0121        W:7        L:1        OPR:38.44        DPR:2.03        PMR:36.41
20.    Team 0025        W:5        L:2        OPR:37.95        DPR:7.24        PMR:30.70
21.    Team 0395        W:4        L:2        OPR:37.21        DPR:16.10        PMR:21.11
22.    Team 0085        W:9        L:3        OPR:37.08        DPR:6.80        PMR:30.28
23.    Team 0835        W:5        L:2        OPR:36.79        DPR:5.48        PMR:31.31
24.    Team 0175        W:6        L:2        OPR:36.37        DPR:22.71        PMR:13.67
25.    Team 0056        W:6        L:1        OPR:36.36        DPR:14.28        PMR:22.08

Double click the uncompressed jar for it to run. You need Java jre 1.6 (first download link) for it to run.

There's still a couple of bugs, but I'm working on it.

=== updates ===
Now attempts to parse data from multiple sources until it gets valid data, in this order: 1.) local html file, 2.) usfirst.org, 3.) tba.net Buckeye data isn't up on USFIRST or TBA, sorry

You now have the options to show only the regionals up to a given week

You can now rank all teams against each other for the full season (will be fully tested in week 3 when several teams do their second regional)

More to come; most of the methods and classes are setup for easy code reuse.

JB987 09-03-2009 23:22

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Hmm...not many of the top 25 listed are shooters?

JesseK 10-03-2009 09:43

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JB987 (Post 833916)
Hmm...not many of the top 25 listed are shooters?

Being that these numbers are all based on qualification rounds only, I think even more noticable is that there aren't many of the top 25 who have won a regional. Sure, there are some noticable names, but out of the top 5 only 1625 even made it to the finals of a regional.

This just goes to show you that top OPR isn't everything when it comes to winning the big matches (though it definitely helps).

And when running some extra stats, I just noticed that 2753 has completed 2 regionals but only has OPR data for 1 regional... hmm... that's the first thing to fix! The second thing is to refactor the gui and omi into two separate threadpools so it doesn't lock up when you push the 'print' button.

Vikesrock 10-03-2009 13:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 834077)
Being that these numbers are all based on qualification rounds only, I think even more noticable is that there aren't many of the top 25 who have won a regional. Sure, there are some noticable names, but out of the top 5 only 1625 even made it to the finals of a regional.

This just goes to show you that top OPR isn't everything when it comes to winning the big matches (though it definitely helps).

Is the PMR column +/- or CCWM? The program calls it CCWM to sort by it, but the numbers appear to simply be OPR-DPR.

Regardless of what it is sorting by this category results in 3 of the top 5 being regional winners and 5 of the top 7.

Here are the top 25 by PMR:

Code:

01.    Team 0071        W:7        L:0        OPR:63.55        DPR:13.69        PMR:49.86
02.    Team 0968        W:9        L:0        OPR:52.85        DPR:12.82        PMR:40.03
03.    Team 0245        W:10        L:2        OPR:40.52        DPR:3.37        PMR:37.15
04.    Team 0121        W:7        L:1        OPR:38.44        DPR:2.03        PMR:36.41
05.    Team 0045        W:7        L:0        OPR:34.37        DPR:-0.73        PMR:35.09
06.    Team 2753        W:7        L:0        OPR:43.03        DPR:8.07        PMR:34.96
07.    Team 1625        W:6        L:2        OPR:48.82        DPR:13.99        PMR:34.83
08.    Team 1155        W:6        L:1        OPR:41.84        DPR:7.39        PMR:34.45
09.    Team 1939        W:6        L:1        OPR:36.11        DPR:1.92        PMR:34.19
10.    Team 1622        W:8        L:2        OPR:44.21        DPR:10.39        PMR:33.82
11.    Team 1823        W:6        L:1        OPR:38.78        DPR:5.14        PMR:33.64
12.    Team 1114        W:7        L:1        OPR:43.18        DPR:11.25        PMR:31.93
13.    Team 0835        W:5        L:2        OPR:36.79        DPR:5.48        PMR:31.31
14.    Team 0694        W:5        L:1        OPR:48.05        DPR:17.20        PMR:30.85
15.    Team 1806        W:7        L:0        OPR:39.87        DPR:9.12        PMR:30.75
16.    Team 0025        W:5        L:2        OPR:37.95        DPR:7.24        PMR:30.70
17.    Team 0155        W:6        L:1        OPR:34.30        DPR:3.86        PMR:30.44
18.    Team 1218        W:6        L:1        OPR:38.57        DPR:8.18        PMR:30.40
19.    Team 0085        W:9        L:3        OPR:37.08        DPR:6.80        PMR:30.28
20.    Team 0040        W:7        L:2        OPR:39.74        DPR:11.28        PMR:28.46
21.    Team 1126        W:5        L:3        OPR:29.37        DPR:1.21        PMR:28.16
22.    Team 0217        W:7        L:2        OPR:31.74        DPR:3.85        PMR:27.89
23.    Team 2811        W:4        L:3        OPR:33.03        DPR:5.58        PMR:27.46
24.    Team 0102        W:4        L:2        OPR:32.59        DPR:5.26        PMR:27.33
25.    Team 0020        W:7        L:1        OPR:34.83        DPR:7.52        PMR:27.31


Jared Russell 10-03-2009 13:22

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
The lack of correlation between OPR, DPR, and winning a regional is at first surprising. But if you step back and look at how several regionals have been won so far this year, teamwork and strategy seem to be the common theme.

I believe that in Lunacy, the strength of an alliance is not defined strictly by the sum of its parts.

Bongle 10-03-2009 14:37

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Jared341 (Post 834192)
The lack of correlation between OPR, DPR, and winning a regional is at first surprising. But if you step back and look at how several regionals have been won so far this year, teamwork and strategy seem to be the common theme.

I believe that in Lunacy, the strength of an alliance is not defined strictly by the sum of its parts.

The most interesting correlation I've found is that the robots that get to go into eliminations correspond very strongly with the PM rating. At FLR, all but one of the top 20 robots ranked by PMR were either captains or were selected to go into eliminations. The correlation is less strong with OPR.

JesseK 10-03-2009 14:42

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Vikesrock (Post 834185)
Is the PMR column +/- or CCWM? The program calls it CCWM to sort by it, but the numbers appear to simply be OPR-DPR.

Regardless of what it is sorting by this category results in 3 of the top 5 being regional winners and 5 of the top 7.

I found that it doesn't matter if you solve the matrix based upon win margin or if you just subtract DPR from OPR, the number is still the same. The CCWM is based upon the white paper that I saw Ed Law put out at the end of last year, which is what I originially tried to implement in the matrices. When I saw that the numbers were the same, I simplified all of the code and didn't rename the stuff -- oversight on my part.

CCWM = Caclulated Contribution to Winning Margin
aka PlusMinus Rating, i.e. different calculations to arrive at the same solution.

I think you want a high OPR for a first round pick, then a high CCWM for the second round... that is, if you want a high-octane, excitingly offensive alliance (which is my preference).

Bongle 10-03-2009 15:06

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 834223)
I found that it doesn't matter if you solve the matrix based upon win margin or if you just subtract DPR from OPR, the number is still the same. The CCWM is based upon the white paper that I saw Ed Law put out at the end of last year, which is what I originially tried to implement in the matrices. When I saw that the numbers were the same, I simplified all of the code and didn't rename the stuff -- oversight on my part.

CCWM = Caclulated Contribution to Winning Margin
aka PlusMinus Rating, i.e. different calculations to arrive at the same solution.

I think you want a high OPR for a first round pick, then a high CCWM for the second round... that is, if you want a high-octane, excitingly offensive alliance (which is my preference).

I just had an idea, which might resolve to CCWM/PMR, but I don't think it will.

It ends up with a 2N x 2N matrix (for a regional with N teams)

sum[team's scores] = weighted sum of OPRs of alliance members minus weighted sum of DPRs of opponents.

At first I thought that it would be unsolvable (each equation has 6 unknowns, and you'd end up with 2N unknowns and only N equations), until today I had the fairly-obvious brainwave that each match would give you two equations (one OPRred - DPRblue = scorered for red, one OPRblue - DPRred = scoreblue for blue). This approach seems like it would be more predictive of robot performance than simply doing OPR and DPR separately*. I'm going to try to implement it tonight, but if someone wants to try it themselves and report back, that'd be great.

*The problem with the current approach to OPR and DPR, especially in a game like lunacy, is that they assume that a alliance's score comes ENTIRELY from its teams' offensive powers, or ENTIRELY from its opponent's lack of mobility. This proposed new equation seems like it would balance the two, and hopefully give more accurate results.

Ed Law 10-03-2009 16:07

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 834223)
I found that it doesn't matter if you solve the matrix based upon win margin or if you just subtract DPR from OPR, the number is still the same. The CCWM is based upon the white paper that I saw Ed Law put out at the end of last year, which is what I originially tried to implement in the matrices. When I saw that the numbers were the same, I simplified all of the code and didn't rename the stuff -- oversight on my part.

CCWM = Caclulated Contribution to Winning Margin
aka PlusMinus Rating, i.e. different calculations to arrive at the same solution.

I think you want a high OPR for a first round pick, then a high CCWM for the second round... that is, if you want a high-octane, excitingly offensive alliance (which is my preference).

Hi Jesse,

If we look at the system of equations to calculate OPR, it is

A * OPR = B(opr)

and the system of equations to calculate DPR is

A * DPR = B(dpr)

The way I solve for CCWM is

A * CCWM = B(wm) = B(opr)-B(dpr)

A is the same matrix for all 3 systems of equations. I put the winning margin into vector B which is the same as vector B for OPR minus vector B for DPR. Hence the results of CCWM and +/- (PMR) should be identical. Thanks for confirming it Jesse. I never tried it myself.

Regards,

Ed Law

Ed Law 10-03-2009 16:37

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 834221)
The most interesting correlation I've found is that the robots that get to go into eliminations correspond very strongly with the PM rating. At FLR, all but one of the top 20 robots ranked by PMR were either captains or were selected to go into eliminations. The correlation is less strong with OPR.

Hi Bongle,

I referenced your work in my white paper. I didn't realize you are mentoring Team 2702 now. I still associated you with Team 1281 in my presentation. I will update it. I really like your insight/explanation how to interpret these rating numbers.

I want to discuss with you about correlation between OPR and CCWM/PMR. I think we both agreed that it changes from year to year depending on the game. One way, as you suggest in your post, is to see whether the teams that were alliance captain or got picked and went to the elimination round have higher OPR rankings or higher CCWM/PMR rankings. This will tell us whether teams value pure offensive power or contribution to winning margin when they select teams. Perhaps we should exclude the alliance captains when we do this comparison.

Another way to look at correlation is how "predictive" the two different ratings are to outcome of elimination round matches. I did a study of the prediction of match results using OPR and CCWM. Through the first two weeks including those events that have complete data published, in the elimination round, the prediction using CCWM is 59.5% and using OPR is slightly better at 63.6%. One reason the correlation is not that good is because there were a lot of close matches that could have gone either way.

We should be careful not to draw conclusions from just one regional. Each of the two ratings correlate better for some regionals but not for others.

Regards,

Ed Law

JesseK 10-03-2009 19:27

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

At first I thought that it would be unsolvable (each equation has 6 unknowns, and you'd end up with 2N unknowns and only N equations), until today I had the fairly-obvious brainwave that each match would give you two equations (one OPRred - DPRblue = scorered for red, one OPRblue - DPRred = scoreblue for blue). This approach seems like it would be more predictive of robot performance than simply doing OPR and DPR separately*. I'm going to try to implement it tonight, but if someone wants to try it themselves and report back, that'd be great
You would want to have (blueScore = blueOPR + redDPR) and vice versa. Remember, you having a low DPR is better for you, hence you want your opponents to have a high DPR. If you subtract the opponent's DPR then you're lowering your own score just because the opponents are easier to score on ... which doesn't make sense when the opponent's DPR is positive (which is pretty bad).

Some simulation data to come tonight; I have an idea for a quick and dirty Match Prediction method.

<edit> Quick match prediction using the formula above for the DC Quarterfinals:
Code:

blueScore = blueOPR - redDPR:
Teams: (RED) 234, 45, & 620 vs. (BLUE) 1111, 122, 768
Predicted Scores: Red = 43, Blue = 6
Actual Scores: Red = 126, Blue = 100


blueScore = blueOPR + redDPR:
Teams: (RED) 234, 45, & 620 vs. (BLUE) 1111, 122, 768
Predicted Scores: RED=101 BLUE=80
Actual Scores: Red = 126, Blue = 100

Note that the prediction for their second match was identical even when the new match data was added, so predicting the outcome of the second QF match when the scores are that close is nearly impossible. Predictions also don't take into account adjustments for strategy, which is probably why it's best to leave the actual statistics for Qualification Matches only.

Ed Law 10-03-2009 21:52

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by JesseK (Post 834373)
You would want to have (blueScore = blueOPR + redDPR) and vice versa. Remember, you having a low DPR is better for you, hence you want your opponents to have a high DPR. If you subtract the opponent's DPR then you're lowering your own score just because the opponents are easier to score on ... which doesn't make sense when the opponent's DPR is positive (which is pretty bad).

Some simulation data to come tonight; I have an idea for a quick and dirty Match Prediction method.

<edit> Quick match prediction using the formula above for the DC Quarterfinals:
Code:

blueScore = blueOPR - redDPR:
Teams: (RED) 234, 45, & 620 vs. (BLUE) 1111, 122, 768
Predicted Scores: Red = 43, Blue = 6
Actual Scores: Red = 126, Blue = 100


blueScore = blueOPR + redDPR:
Teams: (RED) 234, 45, & 620 vs. (BLUE) 1111, 122, 768
Predicted Scores: RED=101 BLUE=80
Actual Scores: Red = 126, Blue = 100

Note that the prediction for their second match was identical even when the new match data was added, so predicting the outcome of the second QF match when the scores are that close is nearly impossible. Predictions also don't take into account adjustments for strategy, which is probably why it's best to leave the actual statistics for Qualification Matches only.

Hi Jesse,

I think the general consensus in the CD community agrees that OPR should be calculated with qualifying matches only. The extra matches by some teams who made it to elimination round will bias the results if they are used.

Ed

DanDon 10-03-2009 22:44

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Hey y'all...

Can anyone run the program for the NYC regional and post the results?
I reformatted and haven't gotten a chance to install VMWare Fusion on my mac again.

Thanks a bunch!
Dandon

Vikesrock 10-03-2009 22:50

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Here's the NYC results sorted by +/-

Code:

New York City
New York City data retrieved from local HTML file
01.    Team 1155        W:6        L:1        OPR:40.13        DPR:7.71        PMR:32.43
02.    Team 0694        W:5        L:1        OPR:48.45        DPR:16.43        PMR:32.02
03.    Team 2753        W:5        L:2        OPR:40.41        DPR:10.78        PMR:29.63
04.    Team 2344        W:6        L:1        OPR:37.71        DPR:11.32        PMR:26.39
05.    Team 0354        W:5        L:2        OPR:30.65        DPR:5.93        PMR:24.72
06.    Team 0371        W:5        L:2        OPR:24.19        DPR:0.05        PMR:24.14
07.    Team 0271        W:6        L:1        OPR:33.62        DPR:10.62        PMR:23.00
08.    Team 0056        W:6        L:1        OPR:34.82        DPR:13.50        PMR:21.32
09.    Team 1396        W:5        L:2        OPR:16.90        DPR:-1.69        PMR:18.59
10.    Team 3059        W:4        L:3        OPR:16.46        DPR:-0.88        PMR:17.34
11.    Team 0395        W:4        L:2        OPR:34.57        DPR:17.66        PMR:16.90
12.    Team 1302        W:5        L:2        OPR:19.31        DPR:3.41        PMR:15.90
13.    Team 0335        W:5        L:2        OPR:19.48        DPR:3.61        PMR:15.87
14.    Team 0555        W:4        L:3        OPR:31.73        DPR:16.13        PMR:15.60
15.    Team 0743        W:3        L:4        OPR:28.15        DPR:13.62        PMR:14.53
16.    Team 2265        W:3        L:4        OPR:13.59        DPR:0.03        PMR:13.56
17.    Team 2933        W:4        L:3        OPR:27.06        DPR:14.36        PMR:12.70
18.    Team 1807        W:6        L:1        OPR:23.10        DPR:10.70        PMR:12.40
19.    Team 0358        W:2        L:5        OPR:9.30        DPR:-3.01        PMR:12.31
20.    Team 0237        W:5        L:2        OPR:27.48        DPR:16.54        PMR:10.93
21.    Team 0270        W:4        L:3        OPR:16.16        DPR:6.91        PMR:9.25
22.    Team 0806        W:5        L:2        OPR:16.18        DPR:7.07        PMR:9.12
23.    Team 0041        W:3        L:4        OPR:29.08        DPR:20.49        PMR:8.58
24.    Team 1660        W:6        L:1        OPR:25.19        DPR:16.74        PMR:8.45
25.    Team 3017        W:4        L:3        OPR:9.20        DPR:1.35        PMR:7.85
26.    Team 1796        W:4        L:3        OPR:24.28        DPR:17.44        PMR:6.84
27.    Team 1257        W:3        L:4        OPR:18.69        DPR:12.12        PMR:6.57
28.    Team 1211        W:5        L:2        OPR:14.03        DPR:7.46        PMR:6.57
29.    Team 2681        W:5        L:2        OPR:14.22        DPR:8.45        PMR:5.77
30.    Team 0375        W:7        L:0        OPR:28.39        DPR:22.82        PMR:5.57
31.    Team 1881        W:3        L:4        OPR:14.22        DPR:10.59        PMR:3.62
32.    Team 0527        W:4        L:3        OPR:16.86        DPR:13.26        PMR:3.60
33.    Team 1237        W:2        L:4        OPR:12.71        DPR:9.29        PMR:3.42
34.    Team 1156        W:3        L:4        OPR:12.07        DPR:9.84        PMR:2.23
35.    Team 2285        W:3        L:3        OPR:23.47        DPR:21.81        PMR:1.66
36.    Team 2601        W:3        L:4        OPR:18.98        DPR:17.41        PMR:1.57
37.    Team 2070        W:3        L:4        OPR:7.30        DPR:6.57        PMR:0.73
38.    Team 0640        W:2        L:5        OPR:8.66        DPR:11.47        PMR:-2.81
39.    Team 1230        W:5        L:2        OPR:11.28        DPR:15.17        PMR:-3.89
40.    Team 0369        W:5        L:2        OPR:9.11        DPR:13.57        PMR:-4.45
41.    Team 2579        W:3        L:4        OPR:5.34        DPR:12.70        PMR:-7.36
42.    Team 1862        W:2        L:4        OPR:-0.63        DPR:6.93        PMR:-7.56
43.    Team 0333        W:2        L:5        OPR:7.73        DPR:16.31        PMR:-8.58
44.    Team 1563        W:1        L:6        OPR:22.48        DPR:31.97        PMR:-9.50
45.    Team 2577        W:3        L:4        OPR:20.45        DPR:30.12        PMR:-9.67
46.    Team 3111        W:2        L:4        OPR:12.75        DPR:22.44        PMR:-9.69
47.    Team 1989        W:3        L:4        OPR:2.76        DPR:13.64        PMR:-10.88
48.    Team 1600        W:3        L:4        OPR:11.61        DPR:23.95        PMR:-12.34
49.    Team 1520        W:1        L:6        OPR:2.07        DPR:14.43        PMR:-12.37
50.    Team 2205        W:2        L:5        OPR:11.63        DPR:24.03        PMR:-12.40
51.    Team 0329        W:4        L:3        OPR:-3.86        DPR:9.24        PMR:-13.10
52.    Team 2573        W:2        L:5        OPR:6.82        DPR:19.95        PMR:-13.13
53.    Team 1880        W:0        L:7        OPR:3.65        DPR:19.53        PMR:-15.88
54.    Team 0263        W:2        L:5        OPR:20.96        DPR:37.03        PMR:-16.07
55.    Team 3053        W:2        L:5        OPR:9.44        DPR:26.20        PMR:-16.76
56.    Team 1340        W:1        L:6        OPR:10.14        DPR:28.07        PMR:-17.93
57.    Team 2554        W:3        L:4        OPR:4.92        DPR:24.93        PMR:-20.00
58.    Team 0759        W:4        L:3        OPR:2.52        DPR:22.78        PMR:-20.26
59.    Team 0380        W:2        L:5        OPR:0.99        DPR:21.58        PMR:-20.59
60.    Team 0421        W:5        L:2        OPR:1.94        DPR:25.20        PMR:-23.26
61.    Team 3004        W:1        L:6        OPR:6.56        DPR:30.20        PMR:-23.65
62.    Team 1635        W:2        L:5        OPR:8.29        DPR:35.37        PMR:-27.08
63.    Team 2895        W:3        L:4        OPR:2.33        DPR:31.59        PMR:-29.26
64.    Team 3112        W:1        L:6        OPR:0.70        DPR:33.29        PMR:-32.59
65.    Team 0334        W:1        L:6        OPR:-6.96        DPR:32.80        PMR:-39.76
66.    Team 1698        W:0        L:7        OPR:-1.64        DPR:39.21        PMR:-40.86


Manoel 10-03-2009 23:24

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Quote:

Originally Posted by Bongle (Post 834235)
I just had an idea, which might resolve to CCWM/PMR, but I don't think it will.

It ends up with a 2N x 2N matrix (for a regional with N teams)

sum[team's scores] = weighted sum of OPRs of alliance members minus weighted sum of DPRs of opponents.

At first I thought that it would be unsolvable (each equation has 6 unknowns, and you'd end up with 2N unknowns and only N equations), until today I had the fairly-obvious brainwave that each match would give you two equations (one OPRred - DPRblue = scorered for red, one OPRblue - DPRred = scoreblue for blue). This approach seems like it would be more predictive of robot performance than simply doing OPR and DPR separately*. I'm going to try to implement it tonight, but if someone wants to try it themselves and report back, that'd be great.

*The problem with the current approach to OPR and DPR, especially in a game like lunacy, is that they assume that a alliance's score comes ENTIRELY from its teams' offensive powers, or ENTIRELY from its opponent's lack of mobility. This proposed new equation seems like it would balance the two, and hopefully give more accurate results.

I gave it a shot. I'm not sure I implemented it correctly, but matrix A (Ax = b) always comes up with a large conditioning number - nearly singular, which means that small changes in b, or the matches results, would result in huge shifts in OPR/DPR for teams.

Anyway, here are my results for the NY Regional:

OPR:
Code:

            1        1155      32.277
            2          694      31.639
            3          56      29.308
            4          395      24.951
            5        3059      23.105
            6        2344      22.331
            7        1600      22.075
            8          743      21.927
            9        2753      21.897
          10        1257      18.944
          11        1302      16.873
          12        2554      16.547
          13          335      13.228
          14          237      11.405
          15        1796      10.521
          16        1660      10.011
          17        1156      9.9718
          18        3004        9.263
          19        1881      9.2177
          20        2681      8.3132
          21        1862      7.8608
          22        2265        6.898
          23          375      6.6255
          24          270      6.5267
          25        1807      6.2078
          26        1230        5.148
          27        1396      4.5395
          28          527      2.2106
          29          371      1.8905
          30          555      1.7473
          31          41      0.72257
          32          354      0.4532
          33          271    -0.89414
          34        2601      -1.8199
          35          421      -2.437
          36          369      -2.7544
          37        2933      -4.2083
          38        1340      -4.8236
          39        1880      -5.2459
          40          358      -5.4201
          41          263      -6.2038
          42        1563      -6.389
          43        2285      -7.0976
          44        3111      -8.2768
          45        2577      -8.5896
          46          806      -10.413
          47          333      -10.934
          48        3053      -11.506
          49          640      -11.515
          50        1520      -12.58
          51          759      -12.655
          52        2895      -13.538
          53        1237      -13.924
          54        1989      -14.043
          55        2070      -14.541
          56        3017      -14.922
          57        2573      -15.48
          58        1698      -16.094
          59        2205      -16.962
          60        2579      -17.403
          61        1635      -17.776
          62        1211      -18.224
          63          380      -19.378
          64          329      -20.404
          65        3112      -22.538
          66          334      -32.883

DPR:
(and note that now this is how many points on average your presence on an alliance takes points away from the opponent - a negative number indicates you're likely to increase your opponent's score)

Code:

            1        1862      19.379
            2          640        12.14
            3        1155      10.869
            4        1257      8.4759
            5        1396      8.1218
            6        1807      4.3868
            7          56      1.2983
            8        1600      0.60363
            9        2070      0.29453
          10          395    -0.96611
          11        2601      -1.051
          12        1237      -1.2811
          13          270      -1.4666
          14          371      -1.8914
          15        1520      -1.9435
          16        3059      -4.2095
          17        1156      -4.3151
          18        1302      -4.5479
          19        2265      -5.5535
          20        2554      -6.1296
          21          358      -7.8337
          22          380      -9.532
          23        3004      -9.8214
          24          237      -10.27
          25        2344      -10.662
          26          329      -13.279
          27        2753      -13.602
          28        1340      -14.952
          29        2933      -15.027
          30        1230      -15.604
          31        1880      -15.936
          32        3017      -16.672
          33          333      -17.101
          34          527      -17.291
          35        2681      -17.463
          36        1660      -17.746
          37        1989      -18.37
          38          421      -20.028
          39          335      -20.761
          40        1796      -21.286
          41        1881      -21.618
          42          743      -21.675
          43          806      -22.481
          44        2577      -23.904
          45          759      -25.582
          46          271      -25.939
          47        3111      -26.223
          48        1211        -26.5
          49          694      -26.53
          50          369      -26.648
          51          263      -26.796
          52        2895      -27.583
          53        3053      -28.046
          54          354      -28.105
          55          41      -29.584
          56        1563      -30.406
          57        3112      -31.288
          58        2573      -32.228
          59        1698      -32.62
          60          375      -32.85
          61          334      -33.248
          62        1635      -33.382
          63        2205      -33.423
          64          555      -36.653
          65        2579      -37.541
          66        2285      -45.508

+/-:
(just occurred me to calculate that, haven't given it much thought but I don't think it indicates anything)

Code:

            1          694      58.169
            2          743      43.602
            3          375      39.475
            4        2285      38.411
            5          555      38.401
            6        2753      35.499
            7          335      33.989
            8        2344      32.993
            9        1796      31.807
          10        1881      30.836
          11          41      30.307
          12          354      28.558
          13          56      28.009
          14        1660      27.757
          15        3059      27.315
          16          395      25.917
          17        2681      25.776
          18          271      25.045
          19        1563      24.017
          20          369      23.894
          21        2554      22.677
          22          237      21.675
          23        1600      21.471
          24        1302      21.421
          25        1155      21.408
          26        1230      20.752
          27          263      20.592
          28        2579      20.139
          29          527      19.501
          30        3004      19.084
          31        3111      17.946
          32          421      17.591
          33        2573      16.748
          34        3053        16.54
          35        1698      16.526
          36        2205        16.46
          37        1635      15.606
          38        2577      15.314
          39        1156      14.287
          40        2895      14.045
          41          759      12.927
          42        2265      12.451
          43          806      12.069
          44        2933      10.819
          45        1880        10.69
          46        1257      10.468
          47        1340      10.128
          48        3112      8.7504
          49        1211      8.2755
          50          270      7.9933
          51          333      6.1671
          52        1989      4.3263
          53          371      3.7819
          54          358      2.4136
          55        1807        1.821
          56        3017      1.7499
          57          334      0.36525
          58        2601    -0.76893
          59        1396      -3.5823
          60          329      -7.1252
          61          380      -9.846
          62        1520      -10.636
          63        1862      -11.518
          64        1237      -12.643
          65        2070      -14.836
          66          640      -23.656

I don't have prediction software implemented yet, so I can't give any estimates, so... Any ideas? Considering the matrix is ill-conditioned, I'm not sure those numbers can be trusted. It could be that my MATLAB implementation is wrong, so here's the code if anyone wants to check it out.

SteveGPage 11-03-2009 15:15

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Manoel (Post 834552)
I gave it a shot. I'm not sure I implemented it correctly, but matrix A (Ax = b) always comes up with a large conditioning number - nearly singular, which means that small changes in b, or the matches results, would result in huge shifts in OPR/DPR for teams.

(snip)

I don't have prediction software implemented yet, so I can't give any estimates, so... Any ideas? Considering the matrix is ill-conditioned, I'm not sure those numbers can be trusted. It could be that my MATLAB implementation is wrong, so here's the code if anyone wants to check it out.

I think that you are on to something, and I do think that the +/- calculation can and would be important. I've been struggling with the following equation, trying to figure out how to implement it and do the calculation, so let me know what you all think. It is similar to Boggle's concept above, and may be essentially the same result, but can't figure out how to parse the data to actually make it happen, especially since it creates a 2N x 2N matrix...

Two equations:
1. (Xioblue + Xjoblue + Xkoblue) - (Xldred + Xmdred + Xndred) = Scoreblue
2. (Xlored + Xmored + Xnored) - (Xidblue + Xjdblue + Xkdblue) = Scorered

Where ...
............X
..............io (Team i - OPR)
................blue (Alliance)

and likewise, id would represent Team i - DPR.
You would have to solve for both the OPR and DPR for each team.

For the DC regional, which had 65 teams, it would be a 130x130 matrix * {x} = Bio or Bid, which would allow you to then solve for the separate OPR and DPR values. I don't have a good way to parse this, much less see if the results actually mean anything, but the concept came from a friend of mine - Kenneth Massey, who developed one of the BCS algorithms (www.masseyratings.com) so I think it has merit.

For the DC regional, I did the following simple calculation to try and get a similar estimated value for how tough the match was:

AVG[((TotalMatchPoints/TotalAlliancePoints)*TeamOffensivePoints) + (TeamOffensivePoints – TeamDefensivePoints)]

MATCH_ID ALLIANCE_ID TEAM_ID OFF_POINTS DEF_POINTS
.....1................1................1.......... ...20...............10
.....1................1................2.......... ...10...............10
.....1................1................3.......... ...15................5
.....1................2................4.......... ....0................10
.....1................2................5.......... ...10...............20
.....1................2................6.......... ...20...............20

Example:
Total Match Points = SUM(OFF_POINTS), GROUP BY MATCH_ID
Total Alliance Points = SUM(OFF_POINTS), GROUP BY MATCH_ID, ALLIANCE_ID

Team 1
((75/45)*20 + (20 – 10)) = 43.33

Team 2
16.66

Team 3
35

Team 4
((75/30)*0 + (0 – 10)) = -10

Team 5
15

Team 6
50

Alliance 1 43.33 + 16.66 + 35 = 95
Alliance 2 (-10) + 15 + 50 = 55

Alliance 1/Alliance 2 = 1.72 – Alliance 1 72% stronger

Manoel 11-03-2009 23:32

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by SteveGPage (Post 834765)
I think that you are on to something, and I do think that the +/- calculation can and would be important. I've been struggling with the following equation, trying to figure out how to implement it and do the calculation, so let me know what you all think. It is similar to Boggle's concept above, and may be essentially the same result, but can't figure out how to parse the data to actually make it happen, especially since it creates a 2N x 2N matrix...

Two equations:
1. (Xioblue + Xjoblue + Xkoblue) - (Xldred + Xmdred + Xndred) = Scoreblue
2. (Xlored + Xmored + Xnored) - (Xidblue + Xjdblue + Xkdblue) = Scorered

Where ...
............X
..............io (Team i - OPR)
................blue (Alliance)

and likewise, id would represent Team i - DPR.
You would have to solve for both the OPR and DPR for each team.

OK, so either your idea is identical to Bongle's, or I misunderstood him, because what you explained above is exactly what I implemented. Bongle's been away from the topic for a while, hopefully he'll see this and let us know if that's what he meant.

Bongle 12-03-2009 08:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Manoel (Post 834949)
OK, so either your idea is identical to Bongle's, or I misunderstood him, because what you explained above is exactly what I implemented. Bongle's been away from the topic for a while, hopefully he'll see this and let us know if that's what he meant.

Steve's idea appears to be the same as mine, or at least his two equations are. I tried to implement it on tuesday, but it had bugs and I haven't had to time to get back to it. It is unfortunate that the matrix comes out as somewhat ill-conditioned, but I guess that isn't that terribly surprising since the amount of data we're processing is fairly small.

I'll try again to implement this new matrix tonight, and I'll plug it into my prediction code to see if it is any better than the more basic OPR/DPR stats.

We need to come up with a name for this more-complex stat: how about OPR+ and DPR+?

SteveGPage 12-03-2009 10:18

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 835039)
Steve's idea appears to be the same as mine, or at least his two equations are. I tried to implement it on tuesday, but it had bugs and I haven't had to time to get back to it. It is unfortunate that the matrix comes out as somewhat ill-conditioned, but I guess that isn't that terribly surprising since the amount of data we're processing is fairly small.

I'll try again to implement this new matrix tonight, and I'll plug it into my prediction code to see if it is any better than the more basic OPR/DPR stats.

We need to come up with a name for this more-complex stat: how about OPR+ and DPR+?

I figured as much, and am glad you have had more success in implementing it than I have! I tried to get my son, a senior in college - Comp Sci/Math Major to help me ... but "NO" he didn't have time to help me with my "homework'! :) I like the idea of OPR+ and DPR+ to indicate the additional complexity of the stat. I'd love to see what you are able to do, as well as how predictive the resulting values are. Thanks for all your hard work and your efforts! If there is anything I can do to assist or push this along, just let me know!

Steve

Jared Russell 12-03-2009 10:31

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
This is starting to get seriously cool guys...the Sabremetrician in me is very happy.

How about a VORR stat (Value over replacement robot)?

DISS (Defense independent scoring statistics)?

Pythagorean W-L expectations?

Win shares?

The possibilities are endless...

SteveGPage 12-03-2009 10:34

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 835039)
Steve's idea appears to be the same as mine, or at least his two equations are. I tried to implement it on tuesday, but it had bugs and I haven't had to time to get back to it. It is unfortunate that the matrix comes out as somewhat ill-conditioned, but I guess that isn't that terribly surprising since the amount of data we're processing is fairly small.

I'll try again to implement this new matrix tonight, and I'll plug it into my prediction code to see if it is any better than the more basic OPR/DPR stats.

We need to come up with a name for this more-complex stat: how about OPR+ and DPR+?

One other thing, then I'll go back to my day job ... When I was talking to Kenneth Massey (the BCS guy) he also suggested something, that would modify these equations just a bit - but would require team by team scouting. The red or blue score would NOT be the final score as published, but would first, obviously, not include penalties - so we are really measuring "capabilities" not just performance; and secondly, if you were to have added MR to your own alliance - so as to avoid <G22>, the points that you scored on a alliance partner would be removed from the opposing alliance's score. How much of an effect would this cause in the long run, I don't think much - but if we are basing the OPR+ and DPR+ on a limited number of matches, then it could very likely be significant.

Steve

Bongle 12-03-2009 11:22

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by SteveGPage (Post 835077)
One other thing, then I'll go back to my day job ... When I was talking to Kenneth Massey (the BCS guy) he also suggested something,

A good idea (it would certainly increase accuracy), but my goal (for my program, at least), is to try and provide the most accurate scouting-independent ranking possible using only match data.

As for implementation of OPR+/DPR+, how I arranged my matrix was:

Odd Rows (for row i): "Team i/2's total score is equal to the weighted sum of the team i/2's alliance OPRs minus the weighted sum of team i/2's opponents' DPRs"
  • Constant: team i/2's total score
  • Coefficients: Alternating
    • Odd columns (col j): # of times team i/2 played with team j/2 (positive)
    • Even columns (col j): # of times team i/2 played against team j/2 (negative)

Even Rows (for row i): "Team i's opponents' score is equal to the weighted sum of the opponents' alliance OPRs minus the weighted sum of team i's alliance's DPRs"
  • Constant: team i/2's opponents' total score
  • Coefficients: Alternating
    • Odd columns (col j): # of times team i/2 played against team j/2 (positive)
    • Even columns (col j): # of times team i/2 played with team j/2 (negative)

For verification, I'm pretty sure that the sum of the absolute values of each row should equal the number of matches that team played times 6.

SteveGPage 12-03-2009 16:45

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 835092)
A good idea (it would certainly increase accuracy), but my goal (for my program, at least), is to try and provide the most accurate scouting-independent ranking possible using only match data.

As for implementation of OPR+/DPR+, how I arranged my matrix was:

...

I think that is a great goal to have that level of information! Certainly, we will continue to do scouting, and would never expect a particular algorithm to tell us who or who not to select. This is a tool to use in that over all process. My scouts will continue to do pit scouting, as well as individual match scouting, and I think we will be looking at the OPR+/DPR+ type of values to help us find those teams down in the noise of the competition, that may have a very low ranking, but have the qualities we are looking for in an alliance.

I would love to see how you finally implement this, since it is questionable that I will be able to put in my database between now and next weekend, especially since I am using a datawarehouse and a Business Intelligence tool to create the reports. The data interface is still lagging!

The methodology you described is exactly what I was looking doing as well, and I believe it has merit! Good luck with getting it debugged! Good luck at your competitions!

If anyone else is working on these concepts, and will be at the Chesapeake Regional next week, I would love to chat with you there!

Steve

SteveGPage 13-03-2009 08:59

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 835039)

...
I'll try again to implement this new matrix tonight, and I'll plug it into my prediction code to see if it is any better than the more basic OPR/DPR stats.

...

Just heard my Comp Sci/Math Major son is coming home for the weekend. He was excited to hear what we were working on and wants to help me get something up and running this weekend. If you would like, we could work on any issues you may be having and perhaps get something up to the CD community prior to next week's competitions.

Steve

Killraine 13-03-2009 12:09

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by SteveGPage (Post 835431)
Just heard my Comp Sci/Math Major son is coming home for the weekend. He was excited to hear what we were working on and wants to help me get something up and running this weekend. If you would like, we could work on any issues you may be having and perhaps get something up to the CD community prior to next week's competitions.

Steve

So in time for Chesapeake?

SteveGPage 13-03-2009 12:16

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Killraine (Post 835479)
So in time for Chesapeake?

Yes, that is my plan! If I can't get a release on CD by then, I plan on having a working copy on my machine. Just come and find me in the stands on Friday and I'll be happy to either share the app, or at least be able to share the results with you. I try and sit in the upper section of the stands - to the right of the field (near the air exchange vents - which has an outlet to plug into!)

Steve

Joe Ross 14-03-2009 09:30

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
With v6, I was not able to get predictions for the Los Angeles regional (CA). Am I doing something wrong, or did is something on FIRST's side screwy?

Bongle 14-03-2009 10:11

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Quote:

Originally Posted by Joe Ross (Post 835761)
With v6, I was not able to get predictions for the Los Angeles regional (CA). Am I doing something wrong, or did is something on FIRST's side screwy?

Sorry, v6 has a bug with predictions. I'll upload a fixed version soon.

Edit: v7 now up. The only external improvement (I think) is that predictions are fixed and now work mid-way through a regional.
Edit2: Fixed a parsing issue with single-digit teams.

The Lucas 14-03-2009 11:49

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 835768)
Sorry, v6 has a bug with predictions. I'll upload a fixed version soon.

Edit: v7 now up. The only external improvement (I think) is that predictions are fixed and now work mid-way through a regional.
Edit2: Fixed a parsing issue with single-digit teams.

Can you release the source as well?

I m looking into giving it a run offline option (-o) in case there is no internet publically available at the Philly regional. I am thinking about saving all the html results files in a local directory structure (instead of the temp file). That way on Sat I can update the html file by hand and keep re running the calc. I am not sure if I will have time to get this working or not

Thanks,
Brian

Bongle 14-03-2009 11:52

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Quote:

Originally Posted by The Lucas (Post 835777)
Can you release the source as well?

I m looking into giving it a run offline option (-o) in case there is no internet publically available at the Philly regional. I am think about saving all the html results files in a local directory structure (instead of the temp file). That way on Sat I can update the html file by hand and keep re running the calc. I am not sure if I will have time to get this working or not

Thanks,
Brin

See attached.

SteveGPage 15-03-2009 11:14

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
Quote:

Originally Posted by SteveGPage (Post 835483)
Yes, that is my plan! If I can't get a release on CD by then, I plan on having a working copy on my machine. Just come and find me in the stands on Friday and I'll be happy to either share the app, or at least be able to share the results with you. I try and sit in the upper section of the stands - to the right of the field (near the air exchange vents - which has an outlet to plug into!)

Steve

We were able to finally get OPR+ and DPR+ values calculated from the equation that Bongle and I had both posted. Attached is the perl script that my son and I were able to get together this weekend.

Usage: cmd line: perl scouteval.pl {qualmatch}.txt ---- which will create a file called results.txt, and where {qualmatch} is the file created from the usfirst match results page, copied into a text file. Then use whatever software you use to solve the matrix for the team OPR+ and DPR+ values.

The OPR+ and DPR+ values (sorted by OPR+), as calculated for the DC regional, is as follows:

Code:

Team Number        OPR+        DPR+
118        78        38
2199        72        6
116        68        44
1731        66        32
1712        66        26
176        64        8
2068        62        32
1629        60        28
836        60        18
2961        58        26
2964        56        50
181        56        34
597        54        40
122        54        22
1418        54        10
45        52        54
1872        52        30
449        52        20
401        50        36
365        48        0
3046        46        34
1446        46        12
1915        44        36
272        42        34
339        42        26
587        42        26
611        42        12
2913        40        28
709        40        26
2914        40        16
53        40        16
1900        36        32
1748        36        8
620        34        16
1123        32        26
357        32        24
2819        30        40
1522        30        12
234        30        6
2911        30        0
346        28        8
538        26        18
2377        26        10
615        24        22
1719        22        46
768        22        26
1793        22        22
2962        20        12
7        20        12
2421        20        -4
1849        18        6
623        18        -10
614        18        -14
1111        16        6
2963        14        2
1727        12        28
2912        12        4
2900        10        2
1370        10        0
2121        8        -2
1885        8        -6
1279        6        26
2729        6        -4
2537        2        34
1699        -16        16

A couple of things I noticed, if you run the OPR+/DPR+ numbers with incomplete data, the numbers will look wrong, but relative sorting will be pretty close - but expect numbers like +800 to - 800. When all of the matches finish, the numbers should settle out to values like above. Also, we noticed that we could predict the outcome of the elimination matches about 65-70% of the time.

We are working to automate the process.

Let me know what you think!

Steve

martin417 16-03-2009 11:03

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
I get this error when I run Oprnet on some regionals. (BAE for one) I know Peachtree and SanDiego work, but haven't found others that do yet.


Quote:

Downloaded 34342 bytes
File download complete
Parsing!
No matches found. This regional may not have run yet, or may have HTML output that the parser does not recognize.
Failure to parse XML. Code: -2147467259

Bongle 16-03-2009 11:33

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by martin417 (Post 836738)
I get this error when I run Oprnet on some regionals. (BAE for one) I know Peachtree and SanDiego work, but haven't found others that do yet.

Look at the FIRST-provided results for BAE. They don't exist for the qualification matches, and so OPRNet cannot run. Some people in this thread have written parsers that work with TBA results, which are posted. Check the whole thread and see if there is an app posted that can read TBA results.

JesseK 16-03-2009 13:13

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
Quote:

Originally Posted by Bongle (Post 836750)
Look at the FIRST-provided results for BAE. They don't exist for the qualification matches, and so OPRNet cannot run. Some people in this thread have written parsers that work with TBA results, which are posted. Check the whole thread and see if there is an app posted that can read TBA results.

Part of the reason I extended my program to pull from multiple sources was to eventually put all of the data into a standardized, formatted .csv file that any program or Excel sheet could read. That way, we could pass around a master file with our programs for those who do not have the internet immediately available (or are blocked by a firewall for whatever reasons).

The format for a line will be something like

REG_CODE,MATCH_NUM,RED_1,RED_2,RED_3,BLUE_1,BLUE_2 ,BLUE_3,R_SCORE,B_SCORE

Where REG_CODE is the usfirst.org regional code. There will be 1 line for every match at every regional (roughly 48*76 = 3648 lines). Once the matches are verified I'm also going to put in a new 'feature' that writes the parsed lines directly into the Java source code for the next time the code is compiled (which is often for me since I use a similar program to do my Fantasy FIRST picks). The order it will check for valid data is source code --> local parsed file --> local html file --> usfirst.org --> tba.net ... and it will go until it finds valid data. Buckeye data still isn't up though, so I wonder what we'll have to do to get those scores :confused:

Then, eventually I'll put a scouting layer on top of that so you can input data into it at a regional. Then, I'll make a simple version of this input, so someone can input it via PDA, iPhone, or whatever other touchpad technology comes available. This part won't happen publicly till the offseason though.

I've been away from it for a few days since I was at the FL regional, but now it's back to work to have it done in time for Atlanta.

-- edit -- Ooh and a w00t to Greg Marra and crew for simplifying the tba.net urls for each regional and year!

martin417 16-03-2009 17:58

Re: Easy to use Offensive Power Rankings (OPR) program for mid-regional scouting
 
1 Attachment(s)
I ran through all the regionals that worked (three didn't) and put each one on a spreadsheet. I also combined tham all into one sheet (master). hope this is useful to teams.


All times are GMT -5. The time now is 00:38.

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