OPR for 2019

What was the highest OPR possible?
Who had the highest OPR recorded?

1323 - 48.75 (Newton)
2910 - 46.99 (Newton)
1114 - 45.91 (Curie)
5460 - 45.15 (Archimedes)

Those are who broke 45 at Champs. Likely the highest.

Highest possible would be if you (1) finished all the tasks as an alliance every match (max score) and (2) all your alliance partners scored zero points in every other match. In that case, your OPR = max score.

I was guessing 50-60 as being an upper limit in this game based on reasonable expectations.

1 Like

2056 had 52.64 at McMaster University

I used 16 cycles as a high water mark and came up with 60.

there was no upper bound this year because there is no max score (you can always get more penalties).

For a single event, 2056 at McMaster with 52.64 tops the list.

1 Like

OPR represents the points a robot is expected to contribute to an alliance each match. So if a strong offense robot draws defense nearly every match, their OPR will be less than their maximum scoring capabilities.

ZPR (Zebra Power Rating) takes into account defense and offense under defense to calculate how much a robot would score with no interference. ZPR requires special UWB sensors on all robots, and we only have data from a handful of events. Consistent with your intuition, 2056 had a ZPR of 61.2 at IRI.

So, not sure how much others care, but the question of what the max OPR would be if there was a hard score cap (and no negative scores) is pretty interesting to me, here are my thoughts on it:

The max OPR is unbounded even if there is a hard score cap assuming a schedule has twice or more as many teams as matches (because the system of equations will be underdetermined). After that point, I think the cap is schedule dependant, but will roughly follow this shape (assuming a fair scheduling algorithm, it might be unbounded forever if you can construct ridiculous schedules):
image

All I know for sure is that there is a vertical asymptote at teams/2 and a horizontal asymptote at the max score. The chart above uses a power function of -1 but the actual max OPR is likely derived with a different power, or possibly not even a power function. Whatever the max is, it is certainly dependent on the number of teams, the number of matches, and the schedule. My hypothesis would be that in all cases where # of matches is not an integer multiple of (((# teams) choose 3)/2) then the max OPR will be greater than the max score, but that sounds like it needs a proof.

If you had every possible combination of teams play in a match ((40 choose 3)/2) matches = 4940 matches in a 40 team event, then the max OPR would be equivalent to the max score. This would be assuming your team scores the max in all of their matches and all other matches score 0 points.

1 Like

My theory:

If team X plays with every other team at the event, their max OPR is the max score (they score max points in all their matches, every other alliance scores 0).

If all matches either include team X or one of their alliance partners, their max OPR is also the max score (same scenario).

If there are matches in which neither team X nor any of their alliance partners play, their max OPR is higher than the max score (team X scores the max points in all their matches, other alliances that includes their alliance partners scores 0, other alliances that don’t scores the max points)

I haven’t thought of a mathematical proof for this, but I think it makes sense intuitively.

I disagree with both of these, I’ll see if I can construct a counterexample.

I can easily construct a counter-example for the second point. At Big Bang, team 5 or one of their partners plays in every match. Using the fake scores below, which are hard capped at 154, I can get team 5 to an OPR of 154.04. The boost is due to the blue score of 10 in match 4.

Big Bang fake schedule and scores
match blue 1 blue 2 blue 3 red 1 red 2 red 3 blue score red score
1 862 33 5531 5530 280 862 0 0
2 313 5090 3604 2620 5050 6914 0 0
3 3175 33 7174 815 5907 7191 0 0
4 6618 3604 6528 5 5498 3655 10 154
5 5090 7174 862 2620 5069 5530 0 0
6 3655 5050 862 5498 313 33 0 0
7 5069 6528 33 5907 815 6618 0 0
8 5 5531 280 6914 7191 3175 154 0
9 5907 3655 3604 33 3604 862 0 0
10 6528 280 3175 5530 5050 6618 0 0
11 815 862 3604 3604 5069 6914 0 0
12 33 5090 7191 313 7174 5 0 154
13 6528 815 5498 5531 2620 862 0 0
14 7191 5 6618 3655 7174 862 154 0
15 5069 3175 33 313 6914 3604 0 0
16 280 5050 5498 5907 33 5090 0 0
17 815 2620 3604 5531 5530 7174 0 0
18 5090 5 5069 5498 6528 33 154 0
19 5050 862 7191 3175 5530 5907 0 0
20 6618 313 2620 280 3604 3604 0 0
21 33 862 3175 6914 3655 5531 0 0
22 280 6618 7174 3604 3604 6528 0 0
23 5498 7191 5531 5069 815 313 0 0
24 3655 862 33 5050 33 5090 0 0
25 6914 862 5530 5 5907 2620 0 154
26 3175 6618 5531 5090 33 3604 0 0
27 7191 313 862 5050 5 815 0 154
28 2620 3604 5907 5498 33 5069 0 0
29 5530 7174 6528 6914 3655 280 0 0
30 3604 815 5090 862 7191 3604 0 0
31 6914 5907 5498 5531 6618 313 0 0
32 33 5 3655 280 2620 3175 154 0
33 7174 5069 5050 862 862 6528 0 0
34 5530 7191 280 33 6618 33 0 0
35 3604 862 6914 6528 3175 5050 0 0
36 5069 3604 5531 5 5090 5530 0 154
37 33 313 5907 815 2620 3655 0 0
38 3175 3604 7174 862 5498 33 0 0
39 5050 5531 815 3655 6618 5530 0 0
40 6528 6914 2620 862 5498 7191 0 0
41 5907 280 313 5069 862 5 0 154
42 3604 5090 5498 33 7174 5530 0 0
43 33 3604 2620 5 6528 313 0 154
44 6618 5907 862 5090 3175 862 0 0
45 7174 6914 815 5050 33 280 0 0
46 5531 3655 5090 7191 3604 5069 0 0
47 5498 3175 5 3604 33 815 154 0
48 280 862 5069 3604 5531 33 0 0
49 6528 3655 5907 313 5530 5050 0 0
50 862 6914 6618 2620 7191 7174 0 0
51 313 5069 3655 3175 815 862 0 0
52 3604 5907 5050 3604 5531 5 0 154
53 5530 33 33 7191 6528 5090 0 0
54 862 2620 5498 6618 280 6914 0 0
55 7191 313 3175 7174 6528 3604 0 0
56 815 33 280 862 5090 2620 0 0
57 3604 5530 5050 6618 5498 5069 0 0
58 33 6914 5 7174 5531 5907 154 0
59 862 5530 815 3655 3175 3604 0 0

It’s going to be more difficult to construct a counter-example to the first claim because there are almost no events in which a team is partnered with all other teams. I think I may need to use the cheesy arena schedules.

It would be an amazing feat for 3604 to play in all of their 29 matches (sometimes playing against themselves).

Ugh, darn B teams at off-seasons. I’ll go find another counter-example.

Alright, I’ve got a much better counter-example now that covers both cases described by Rachel (and there’s no B teams to mess it up). Here is the schedule for the Mid-Mitten Roborodeo along with fake scores. Team 703 is partnered with every team at this competition, which covers scenario 1, and as such all matches must contain either team 703 or one of their partners, covering case 2. With these scores, team 703 has an OPR of 154.04, even though all scores are between 0 and 154.

mimm schedule and fake scores
Match Blue 1 Blue 2 Blue 3 Red 1 Red 2 Red 3 blue score red score
1 2767 5316 5460 7056 5173 4130 0 0
2 4967 1684 5685 5256 6591 5448 0 0
3 5460 5843 9988 703 7226 1684 0 154
4 5256 2767 7226 6591 5843 5173 0 10
5 5685 5448 5316 4967 9988 703 0 154
6 5685 703 4130 5843 2767 7056 154 0
7 1684 9988 5173 5460 4967 5256 0 0
8 5448 6591 7226 4130 5316 7056 0 0
9 6591 7056 1684 5173 2767 5448 0 0
10 5316 5256 5843 4967 5460 703 0 154
11 4130 7226 5460 5843 9988 5685 0 0
12 6591 4967 5316 7226 5173 703 0 154
13 5685 5256 9988 5448 4130 2767 0 0
14 5460 7056 4967 5448 1684 5843 0 0
15 5256 5685 7056 5173 7226 5316 0 0
16 703 6591 2767 1684 4130 9988 154 0
17 5843 5256 4130 9988 5316 6591 0 0
18 4967 5448 5173 2767 5460 5685 0 0
19 7226 7056 5685 1684 703 5256 0 154
20 9988 7226 2767 5316 5460 5448 0 0
21 703 5843 4130 5173 4967 1684 154 0
22 6591 5460 2767 7056 703 5256 0 154
23 5316 1684 7056 9988 5685 6591 0 0
24 4130 5173 5448 7226 5843 4967 0 0
25 5256 5316 703 5460 5448 1684 154 0
26 2767 9988 5843 7056 6591 4967 0 0
27 5173 4130 6591 7226 5685 5460 0 0
28 5685 5173 5843 1684 2767 5316 0 0
29 703 4967 7226 9988 7056 5256 154 0
30 5448 703 5460 4130 5685 6591 154 0
31 5316 1684 7226 2767 4130 4967 0 0
32 7056 5448 9988 5843 5256 5173 0 0

The additional 0.04 comes from the 10 points scored in match 4 by red.

An even simpler counterexample I found is the following 5 team 5 match “event” which disproved my first scenario, which I think can be extended to disprove them all:

Match 1 - teams 1/2/5 - 1pt
Match 2 - teams 1/3/5 - 1pt
Match 3 - teams 1/4/5 - 1pt
Match 4 - teams 2/3/4 - 1pt
Match 5 - teams 2/3/5 - 0pt

Which yields the following OPRs, which in this scenario is also the exact solution to the equations:
Team 1 OPR = 1.33
Team 2/3/4 OPR = 0.33
Team 5 OPR = -0.67

I think this occurs whenever the sum of alliance partners’ OPRs multiplied by the times the team plays with them is negative? That was definitely true when I randomly generated two team alliances, I’m not sure about three team. Also still not sure how to extend this to find the max possible OPR.

I wrote up a detailed answer to this question in my Blog Post. Short answer is that the maximum possible unpenalized OPR in 2019 was 269.4.