[FTC]: Championship OPR?

Has anyone done the OPR stats for FTC world championships?

OPR?

maybe theyellowalliance.net

Just curious, what factoring algorithm are you using for the computation?

The average alliance score in the Edison division was about 240, so the average OPR should be 120, right? The average of the Edison OPR’s listed above is about 60.

I used the Cholesky factorization in python’s scipy module following the algorithm given elsewhere on CD.

I’m not aware that the avearge OPR should agree with the average match score. Is that a property?

As Nemo said, average OPR should be equal1 to average alliance score divided by number of teams on an alliance (i.e. 2).

What process did you use to form the normal matrix from the raw scoring data?

1When using min L2 norm of residuals, i.e. least squares, to compute OPR.

Using an Algorithm put together by FTC 3409 - Astromechs, I get very different numbers.

Details on their algorithm can be found at http://www.ftc3409.org/powerscore

Edison 1 185.9 4251 Cougar Robotics
Edison 2 185.2 2753 Team Overdrive
Edison 3 174.6 5069 Robogamers
Edison 4 173.6 4347 Nanogurus
Edison 5 162.7 5939 Team AFOOFA
Edison 6 161.8 7023 HexaSonics
Edison 7 160.5 6433 Neutrinos
Edison 8 159.5 724 RedNeck Robotics Wun
Edison 9 151.7 6337 Metal Marauders
Edison 10 150.3 6424 Oly Cow
Edison 11 147.2 8347 The BOLTS
Edison 12 146.3 4029 2 Bits and a Byte
Edison 13 144.2 5035 WIRED
Edison 14 143.3 3486 Techno Warriors Advanced
Edison 15 142.1 92 Junior Bomb Squad
Edison 16 140.3 577 Wreckers Robotics
Edison 17 135.4 3708 Iron Eagles Optimus
Edison 18 134.6 4318 Green Machine
Edison 19 132.7 5501 USS Enterprise
Edison 20 132.1 3846 Maelstrom
Edison 21 131.3 3550 Beta
Edison 22 130.0 4140 Fish in the Boat
Edison 23 128.6 5140 WACO Aerobotics
Edison 24 127.9 4278 De.Evolution
Edison 25 127.2 4535 RedNek Robotics Too
Edison 26 126.4 5220 Robo Knights
Edison 27 126.1 5414 Techie Tornados
Edison 28 125.0 5421 RM‐ed and Dangerous
Edison 29 124.0 6272 Iron Eagles Prime
Edison 30 123.9 4847 CHROME
Edison 31 120.0 1369 Minotaur
Edison 32 118.4 5114 The Knights Who Say C
Edison 33 117.9 5931 Cru‐Botics
Edison 34 117.7 4112 Warriors
Edison 35 116.9 3785 Beastie Bots
Edison 36 116.2 3162 HHS Gearheads
Edison 37 115.5 7440 Wingus and Dingus
Edison 38 112.0 4982 Café Bot
Edison 39 111.6 7712 H&M Robotics Club
Edison 40 110.7 4220 Landroids
Edison 41 109.3 4965 Animatores Romani
Edison 42 105.2 6109 Punabots
Edison 43 104.0 4150 Dark Matter
Edison 44 103.3 6024 The Enterprisers
Edison 45 100.7 6002 Basilisks
Edison 46 99.0 7591 Voltage of Imagination
Edison 47 98.6 327 Gamma Factor
Edison 48 98.6 5609 Ciberbots
Edison 49 97.8 5977 Cyberswat FTC
Edison 50 97.4 4625 Kings and Queens
Edison 51 93.3 8360 Rawabi
Edison 52 93.1 6100 Chariots of Fire - Black
Edison 53 91.5 3595 Schrödinger’s Hat
Edison 54 86.9 365 MOE
Edison 55 81.7 8359 French Toast Mafia
Edison 56 77.9 8336 Mars Gypth
Edison 57 77.9 4092 Nanites
Edison 58 77.7 8357 Desert Matrix
Edison 59 76.4 8356 LET
Edison 60 72.6 8352 Prime Numbers (5850)
Edison 61 71.2 8207 CanaBot
Edison 62 63.2 8349 I love super big white cat
Edison 63 60.4 4134 Wrench in the Works
Edison 64 52.0 8337 BaCoNeers

Franklin 1 185.9 7013 Hot Wired
Franklin 2 175.8 5257 Eagles Robotics Xperience
Franklin 3 168.4 8221 Cubix
Franklin 4 158.4 6253 Avalanche
Franklin 5 158.4 4250 LIGHTSABERS
Franklin 6 157.4 5026 Tesla Coils
Franklin 7 157.3 3409 Astromechs
Franklin 8 156.2 4507 Robo Chargers
Franklin 9 155.7 7907 Stark Industries
Franklin 10 151.1 4997 Masquerade
Franklin 11 149.4 7398 BLUE CREW
Franklin 12 149.4 4240 Techno Clovers
Franklin 13 149.0 7149 Enforcers
Franklin 14 146.4 4855 Batteries in Black
Franklin 15 144.5 5309 Plan B
Franklin 16 143.9 5555 Option 16
Franklin 17 142.5 6299 ViperBots QuadX
Franklin 18 141.3 4106 Supposable Thumbs
Franklin 19 140.0 5096 Monkey Madness
Franklin 20 138.4 6508 Radioactive Raiders
Franklin 21 137.9 6081 I2R Robotics
Franklin 22 133.6 5279 Positrons
Franklin 23 132.8 4530 Infinite Resistance
Franklin 24 131.6 2888 Oddly Charged Particles
Franklin 25 131.5 4211 The Bombers
Franklin 26 131.0 4443 Sock Monkeys
Franklin 27 130.3 2844 Valley X
Franklin 28 128.8 5661 SHPE Wolves
Franklin 29 126.8 5169 Watts Up?
Franklin 30 126.4 5452 Robots to the Knee
Franklin 31 124.7 6051 Quantum Mechnaics
Franklin 32 122.5 4999 Imagine It
Franklin 33 122.2 248 Fatal Error
Franklin 34 121.7 5815 Disgruntled Robots
Franklin 35 121.2 8338 Shatterdom
Franklin 36 119.2 5972 Patronum Bots
Franklin 37 115.3 7129 Robo Raiders
Franklin 38 112.9 6451 Tarpon Robotics
Franklin 39 109.7 8231 Skyhawks
Franklin 40 109.4 5843 AutoVortex
Franklin 41 109.3 8348 Crazy Shooter
Franklin 42 106.5 7817 TaterBotz
Franklin 43 106.4 4961 Robo Raptors
Franklin 44 105.7 5009 NET ZERO
Franklin 45 105.0 8350 Don’t Throw Block
Franklin 46 104.4 38 The PAKBOTS
Franklin 47 103.8 3781 Pi-Rho Maniacs
Franklin 48 103.7 3141 Bears
Franklin 49 103.1 8361 Garrins Metal-lics
Franklin 50 101.1 5604 Thunderbots
Franklin 51 100.5 6055 GearTicks
Franklin 52 100.1 4924 Tuxedo Pandas
Franklin 53 94.3 8339 Galaxy Robo Techs
Franklin 54 94.1 5875 GENIUS Girls Exploring New Ideas Using Science
Franklin 55 93.3 4475 Purple Reign
Franklin 56 89.7 4745 Orozco’s Army
Franklin 57 87.9 8351 Siberian Beast
Franklin 58 87.2 101 The Indivisibles
Franklin 59 86.5 6935 Paradox
Franklin 60 84.6 6221 Panther Bots Alpha
Franklin 61 81.5 4287 Red Meteors
Franklin 62 72.5 3954 Watt’s Up
Franklin 63 62.1 4107 Mohon Bots
Franklin 64 59.5 4183 ICEBREAKERS

OK, thanks for helping me to understand this. I apologize for reporting those earlier results, which I have removed from this thread.

Here’s what I am doing: N is the number of teams, and M is the number of matches.

–Form the 2MxN matrix A whose entries are zero except where A[2m+c][j] = 1 if team j played on the c (=0 for red and 1 for blue) alliance in match m.

–Form the 2M-dimensional vector S where S[2m+c] is the score of the c alliance in match m.

–We want to solve the overdetermined system Ax = S so we multiply by A^T to get

A^T A x = A^T S

–Write A^T A as L L^T using the Cholesky factorization so that we have

L L^T x = A^T S.

–We solve L y = A^T S and then L^T x = y to find x, which holds the OPRs.

Does this look correct? I’m not seeing the error in my code. Thanks again!

What you posted above looks correct, but the devil is in the details.

Post your A matrix and your S vector here and let me crunch the OPR. If I get the same result you did, then the problem lies in your processing of the raw data into A and S. If I get different result, the problem lies in your Cholesky processing.

By the way, if you are using Python, you can get the min L2 norm of residuals (least squares) solution directly from your A and S using np.linalg.lstsq(A,S), without forming and factoring the normal matrix A’A.

I found a mistake in my code and generated some new results. My average OPR is now the average alliance score. However, my results don’t agree with those posted above.

I’ve attached my A and S matrices along with the ordered list of team numbers.

Thanks for your help with this. I’d really like to understand this better. I’ll also look at numpy’s least square result.

A.txt (36.3 KB)
S.txt (1.11 KB)
teams.txt (314 Bytes)


A.txt (36.3 KB)
S.txt (1.11 KB)
teams.txt (314 Bytes)

The power scores I posted are not based on the same FRC style OPR calculation you’re trying to implement. I would not expect them to be the same. I am curious to see how they compare.

Based on the data you have in Matrix S, it appears you are using the scores that include penalties. If you want, I have a breakdown of the scores by Autonomous, TeleOp, End Game and Penalties. I can deduce a further refinement of End Game scores to identify which Alliances received credit for a Balanced Pendulum, Flag Raised to Low or High level, and Single vs. Double Hangs.

Can you send me the breakdown of the scores? That would give a better comparison of our results.

They are from the Yellow Alliance Live. Not sure if they are still available.

Here’s a .txt of the detailed match scores.

Detailed Matches.txt (22.6 KB)


Detailed Matches.txt (22.6 KB)

OK, I crunched those numbers with Octave.

Here’s the Octave script I used:

format long
A = load(‘A.txt’);
S = load(‘S.txt’);
T = load(‘teams.txt’);
x = A\S;
Tx = [T,x];
save Tx.txt Tx;

Attached is the output list of Team OPR’s generated by the above script using your data.

Thanks for your help with this. I’d really like to understand this better. I’ll also look at numpy’s least square result.

Glad to help. From what I can see, I think you understand it pretty well so far.

When you have a set of overdetermined linear equations:

[A]≈** (notice the approx equal sign “≈” because there is no exact solution since the system is overdetermined)

…if you multiply both sides by [A]T, you get:

[A]T[A]=[A]T** => [N]=[d]

…which is a set of n equations in n unknowns, where “n” in this case is the number of columns in [A] (the number of teams).

Notice the “≈” sign has changed to “=” since the system now has an exact solution. The above are called the normal equations (of the overdetermined linear system), and solving these normal equations for gives the least-squares solution to the original [A]≈** problem.

But if you’re using a language with a linear algebra library, you can solve the overdetermined [A]≈** for the least squares solution directly. In Octave the syntax is called “left division” (x = A\b). In Python you use np.linalg.lstsq(A,b).

Be aware that “least squares” (min L2 norm of residuals) is only one of many possible “best fit” solutions to the overdetermined system [A]≈**.

For example, there’s the “Least Absolute Deviations (LAD)” solution (min L1 norm of residuals). And there are other “robust regression” methods.

***********

Tx.txt (1.7 KB)


Tx.txt (1.7 KB)

Thanks for sending that. It looks like we’re in sync now. Yay!

Here’s what I have for the OPRs. After the team number follows the OPR, calculated without penalties, then autonomous, teleop, and end game.

Edison:
2753 217.8 63.0 71.9 83.0 Team Overdrive
4251 204.8 64.4 48.0 92.4 Cougar Robotics
4347 192.3 52.4 64.2 75.7 Nanogurus
5069 187.6 66.0 55.8 65.8 Robogamers
724 183.2 53.3 64.2 65.7 RedNeck Robotics Wun
7023 182.9 61.7 46.9 74.3 HexaSonics
5939 178.3 55.5 58.1 64.6 Team AFOOFA
6433 172.3 38.4 73.1 60.8 Neutrinos
8347 168.6 41.1 60.5 67.0 The BOLTS
6337 163.5 34.9 56.9 71.7 Metal Marauders
6424 161.6 45.3 69.4 46.8 Oly Cow
92 160.2 35.8 57.5 67.0 Junior Bomb Squad
5035 155.1 35.2 50.3 69.6 Wired
577 154.5 47.2 45.5 61.8 Wreckers Robotics
3486 154.3 44.0 48.3 61.9 Techno Warriors
3846 153.6 49.7 54.0 49.8 Maelstrom
4318 150.4 31.8 61.4 57.2 Green Machine
5414 149.7 53.8 45.6 50.3 Techie Tornados
3550 141.8 52.5 39.5 49.7 Beta
4029 141.1 34.0 46.4 60.6 2 Bits and a Byte
1369 134.5 37.6 46.2 50.7 Minotaur
4278 133.4 30.2 50.4 52.8 De.Evolution
3785 132.5 42.4 31.7 58.4 Beastie Bots
5501 132.3 49.9 36.9 45.6 USS Enterprise
4535 131.8 29.6 52.2 50.0 RedNek Robotics Too
5421 130.8 27.9 39.0 63.8 RM‐ed and Dangerous
5931 130.5 21.7 38.4 70.4 Cru‐Botics
6272 127.1 38.7 34.3 54.1 Iron Eagles Prime
4112 126.0 29.2 39.4 57.3 Warriors
3708 124.3 28.0 42.0 54.2 Iron Eagles Optimus
5140 123.9 26.9 44.2 52.8 WACO Aerobotics
4847 123.7 41.7 37.8 44.1 CHROME
5220 121.9 43.1 36.2 42.6 The RoboKnights
4220 121.3 23.0 48.4 49.9 Landroids
3162 118.5 46.6 27.4 44.5 HHS Gearheads
4140 117.9 51.7 33.4 32.9 Fish in the Boat
7440 114.1 42.3 27.1 44.8 Wingus and Dingus
5114 111.5 23.9 35.0 52.6 The Knights Who Say C
4982 111.2 22.1 34.3 54.7 Café Bot
4965 101.6 42.1 22.1 37.4 Animatores Romani
4150 97.7 31.1 34.9 31.7 Dark Matter
327 95.8 28.5 40.3 27.1 Gamma Factor
5977 95.3 40.5 31.7 23.1 Cyberswat
365 95.0 23.6 33.9 37.5 MOE FIRST
8360 91.8 22.5 26.9 42.3 Rawabi
7712 91.3 30.1 25.8 35.4 H& M Robotics Club
6109 91.3 17.6 40.4 33.3 Punabots
5609 89.4 20.7 21.8 47.0 Ciberbots
6100 89.1 41.6 20.8 26.7 Chariots of Fire ‐Black
7591 86.0 31.2 26.5 28.3 Voltage of Imagination
3595 85.6 35.8 19.3 30.5 Schrödinger’s Hat
4625 83.9 28.3 24.6 31.1 Kings and Queens
6024 83.6 36.2 18.6 28.8 The Enterprisers
6002 78.0 54.8 5.6 17.5 Basilisks
4092 66.5 18.8 30.4 17.4 Nanites
8356 58.7 16.9 10.4 31.4 LET Lead out your Engineering Talent
8359 57.8 17.6 6.2 34.0 French Toast Mafia
8357 56.6 23.9 6.1 26.6 Desert Matrix
8336 54.1 11.8 13.5 28.8 Mars Gypth
8352 51.4 26.6 -0.5 25.3 Prime Numbers
4134 44.9 16.2 13.0 15.7 Wrench in the Works
8207 44.6 30.2 4.8 9.7 CanaBot
8349 25.5 15.9 -1.0 10.7 I love super big white cat
8337 24.4 -3.4 5.3 22.4 BaCoNeers

Franklin:
7013 206.8 51.3 67.2 88.3 Hot Wired
6253 191.1 71.5 53.8 65.8 Avalanche
5257 188.7 48.6 58.4 81.7 Eagles Robotics XPerience
8221 185.8 47.7 57.3 80.8 Cubix
3409 176.1 45.9 51.2 79.1 Astromechs
4250 172.3 47.9 60.9 63.5 LIGHTSABERS
5026 170.2 55.7 52.2 62.3 Tesla Coils
4507 167.9 57.2 34.5 76.2 Robo Chargers
7907 167.2 56.9 42.9 67.4 Stark Industries
5309 164.5 56.5 49.2 58.7 Plan B
4997 164.3 54.3 46.6 63.4 Masquerade
4240 164.0 48.9 37.8 77.3 4‐H Techno Clovers
7398 162.2 38.3 45.6 78.2 BLUE CREW
7149 151.3 60.6 39.2 51.5 Enforcers
6299 148.2 31.6 58.3 58.3 ViperBots QuadX
4106 148.1 34.2 54.2 59.7 Supposable Thumbs
5096 147.9 51.3 46.7 50.0 Monkey Madness
6081 147.7 48.4 43.6 55.7 I2R Robotics
6508 147.2 47.8 46.1 53.4 Radioactive Raiders
4530 142.8 62.3 51.1 29.4 Infinite Resistance
4855 141.6 45.8 40.7 55.1 Batteries In Black
5661 138.7 38.4 46.8 53.5 SHPE Wolves
5555 136.8 58.2 53.0 25.7 Option 16
5279 134.9 35.5 37.1 62.2 Positrons
4211 133.5 40.5 42.4 50.6 The Bombers
5452 129.8 52.8 38.0 39.1 Robots to the Knee
2888 129.4 43.3 43.5 42.7 Oddly Charged Particles
7129 127.6 38.7 39.2 49.8 Robo Raiders
5815 126.0 28.0 43.4 54.6 Disgruntled Robots
4443 125.6 38.3 47.5 39.8 Sock Monkeys
6451 123.1 28.7 28.0 66.4 Tarpon Robotics
5169 123.0 34.6 44.2 44.2 Watts Up?
8338 122.7 19.3 45.5 57.9 Shatterdom
4999 122.0 38.0 43.9 40.1 Imagine It
6051 122.0 51.6 29.6 40.8 Quantum Mechanics
2844 121.3 27.3 34.1 59.9 Valley X
248 120.8 23.8 28.1 68.9 Fatal Error
8231 113.4 24.1 39.7 49.6 Skyhawks
5972 107.3 47.5 21.8 38.0 Patronum Bots
8348 107.2 30.9 36.3 40.0 Crazy Shooter
7817 106.9 51.6 36.2 19.1 TaterBotz
8361 106.5 28.2 49.6 28.7 Garrins Metal‐lics
6055 101.1 33.6 26.2 41.3 Gearticks
4961 100.9 30.5 38.8 31.6 Robo Raptors
38 100.9 36.3 28.6 36.0 Pakbots
8350 99.3 39.3 19.8 40.1 Don’t Throw Block
4745 92.6 26.2 30.7 35.7 Orozco’s Army
5009 92.0 16.0 22.6 53.5 NET ZERO
3141 92.0 11.6 46.3 34.1 Bears
5843 91.9 33.9 34.0 24.0 AutoVortex
5604 90.9 23.4 32.8 34.7 Thunderbots
4924 90.5 24.1 17.3 49.1 Tuxedo Pandas
4475 89.7 8.2 44.6 36.8 Purple Reign
3781 85.3 10.7 22.7 51.9 Westlake Pi‐Rho Maniacs
8339 78.8 17.0 37.5 24.3 Galaxy Robo Techs
6935 78.6 31.5 25.1 22.0 Paradox
6221 78.0 23.8 14.4 39.8 Panther Bots
5875 77.6 29.2 9.7 38.7 GENIUS
101 74.1 20.1 12.2 41.9 The Indivisibles
8351 69.1 3.8 34.2 31.2 Siberian Beast
3954 62.6 10.7 22.2 29.7 Watt’s Up
4287 50.1 24.1 10.7 15.3 Red Meteors
4107 37.4 24.8 7.7 4.9 Mohon Bots
4183 33.7 19.6 2.7 11.4 ICEBREAKERS