![]() |
2015 OPR After Week Three Events
The OPR/CCWM numbers after three weeks of events have been posted, please see
http://www.chiefdelphi.com/media/papers/2174 If you find any error or have any questions, please let me know. There are a number of points I would like to make: 1) Calculation of Component OPR has been modified. Surrogate team issue has been resolved. DQ team issue still exist. That is the reason why I am still doing scale and shift operations. I will post more explanation later. 2) Calculation of Component OPR for World Teams is not done this week. I have some problem with memory management in my program. 3) The Component OPR has been republished with the improved method for the Week 1 and Week 2 events. 4) I added Foul OPR. |
Re: 2015 OPR After Week Three Events
After seeing the success of our HP throwing litter in the Dallas playoffs, hindsight and this data certainly tell us we won't be holding back during quals next time out:D
|
Re: 2015 OPR After Week Three Events
Thanks for putting this together!
|
Re: 2015 OPR After Week Three Events
Thanks for sharing this!
|
Re: 2015 OPR After Week Three Events
Quote:
Timing of litter throwing was very important for the Noodle Aces, Noodle Jesus's and Noodle Ali's. |
Re: 2015 OPR After Week Three Events
Quote:
|
Re: 2015 OPR After Week Three Events
I changed how the component OPRs are calculated. I am going to give credit to others who first proposed it. What I decided to do is based on
http://www.chiefdelphi.com/forums/sh...65&postcount=3 except I only make that adjustment for surrogate teams only and not DQ'd teams (more on that later). Then I do what Ether suggested in this post http://www.chiefdelphi.com/forums/sh...08&postcount=5 in order to make it a symmetric positive definite matrix. I calculated the fouls based on Foul points = Qualification Average * Number of matches played - Coopertition points - Auto points - Container points - Tote points - Litter points Based on my testing, if there is no DQ for that event, the sum of all component OPRs is very close to the total OPR, so this is an improvement from before. This is possible now because I can identify easily which are the surrogate teams (negative numbers). However I still cannot identify which teams are DQ'd in which match from the FIRST website. Even if we can, I am still not convinced we can ignore them. Keep in mind that a new method needs to work for all years and not just for a particular year. Just knowing a team got DQ'd does not mean that team did not contribute to the score unless the whole team got DQ'd and they got 0 points. If just one team got DQ'd. It could mean they were not even on the field or they could have scored most of the points but got a red card. I propose we handle this the same way as before, by adjusting based on scale and shift as described in the following post. http://www.chiefdelphi.com/forums/sh...97&postcount=5 |
Re: 2015 OPR After Week Three Events
Thank you for being patient. The World OPR now has the components published. The memory problem I had was due to the A(T) * A operation. With 40-60 teams, that is not a big deal. But when I calculate the World Component OPR, after 3 weeks, we have about 1800 teams. That is a 1800 X 1800 matrix and a total of over 6 billion multiplications and 6 billion additions.
I finally have to swap the rows and columns of the matrix to reduce the amount of memory paging in and out. It still took over 10 minutes on my i5 computer with 4 GB of memory. It is done. I am not looking forward to when there are 2900 teams after 6 weeks of competition. It will take over 40 minutes just to calculate that A(T) * A. I need a faster computer to do this! May be I will borrow our team's CAD workstation to run this. It has an i7 and tons of memory. |
Re: 2015 OPR After Week Three Events
3 Attachment(s)
Quote:
Ed, see the email I just sent you. You can generate the [N] matrix directly (with surrogates omitted) from the raw match results data, bypassing the [A']*[A] operation. [N] will still be symmetric positive definite if you do it right. Let me know if you need more info. FWIW: Tools like Octave support sparse matrices. Perhaps the most recent versions of VBA also do? Using sparse matrix technology, Octave takes only 16 milliseconds to compute [N]=[A']*[A], and another 16 milliseconds to compute [x]=[N]\[d], for 1812 teams and 7292 alliance scores (3646 matches). PS: This might be a quick fix: Does your version of VBA support integer multiplication of integer matrices? Both [A] and [N] are integer. Set the integer size to the native word size of your machine (probably 64-bit). PPS: I attached the [A] and [N] matrices if anyone is curious. |
Re: 2015 OPR After Week Three Events
Quote:
|
Re: 2015 OPR After Week Three Events
Quote:
Perhaps you could answer this question for me. Note: The question is specifically how to do the LAD computation using R. I have already successfully used AMPL & GAMS (MINOS, Gurobi, MOSEK, OOQP), Python (CVXOPT), and Octave (GLPK); I'd like to compare R's performance. |
Re: 2015 OPR After Week Three Events
Quote:
|
Re: 2015 OPR After Week Three Events
Quote:
That is why I did not suggest that he switch to Octave, which is free, and easy to use, and very fast (see my previous post). I made three suggestions: 1) Find out if VBA now supports sparse matrices. If so, that is arguably the best solution. 2) Make the A an N matrices integers and do integer matrix multiply (if VBA supports it) to create N=A'*A . If that works, it would be a fairly simple fix. 3) Generate the N matrix directly from the raw match results data, without incrementing the appropriate 4 matrix elements (2 for each alliance partner) for each surrogate team. This involves more coding, but it would avoid the A'*A computation that is presently taking so much time in the spreadsheet. |
| All times are GMT -5. The time now is 01:40. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi