Open Challenge: Make a better FRC ranking algorithm

I’ve been involved with FIRST for three seasons now, and with the exception of some oddities in the Hatch software forcing a team update to fit it midway through 2005, there hasn’t really been much change to how teams are ranked. Robot sizes have changed, games have changed, weight has changed, point systems have changed, technology has evolved, but at least for as long as I’ve been around, it’s been QPs and RPs equal to the losing score.

So just for the fun of it, how would you rank teams if you ruled the world? Any method is fair game, but bonus points to those that are plausible enough that FIRST could actually use them. And assume the game will be similar in format to Aim High, to keep things simple. (I’ll post mine later.)

winning team gets their own score if the margin of victory is less than 1/3 of the losing team’s score. if not they get the losing teams score.

losing team gets either the margin or their own score whichever is higher.

i think this sounds good. this way blowouts favor the losing team and winning teams will try and keep the margins low.

edit:this is added to the normal ranking by record and is used only to break ties for teams with the same record.

I don’t think that the ranking system should change.
All the things you mentioned (game, weight, size, scoring) are part of the challenge. Determining which robot is the best should not be part of that challenge.
The ranking system is actually similar to many other sports or competitions. If you win all your games, you’ll be ranked well.
The only small twist that FIRST has is the ranking point system and it main purpose is to distinguish between two team whose records are tied.

Whatever people come up with, the Win/Loss record should always be the biggest determining factor. Having a system that rewards close wins over dominant wins seems contradictory to me. If a robot can shutout its opponents each time it plays, why shouldn’t it be ranked #1?

In the eliminations, a win is a win is a win. It doesn’t matter if you win by 100 or tie and win by tiebreaker.

Also, if it ain’t broke, don’t fix it.

I think FIRST should be more like the Olympics

teams are scored not only on technical aspects of the game (whether a ball is placed in a goal…)

but also on style and artistic expression!

At the end of each match the 10 judges along the sideline would hold up cards, with their scores for both the winning and the losing alliance.

This would eliminate the need to base scores on the losing alliance, because, while you can help your opponent fix a mechanical or electrical part before a match, there is no way you can teach a clutzy robot artistic expression in 1 day!

My 2 Cents:

Losing team gets the winning teams score.

Winning team gets the winning teams score + 2x the losing teams score.

Rank is determined by win-loss record, with ties being broken by the team scores.

This would create an atmosphere of offensive scoring and helping the opponents to score.

Yuck! Judges? No thanks!

I think the rankings are fine as they are. However, I think the top eight should stay that way. That is, no building powerhouse aliances by picking within the seeded teams. Scouting would be much more important than it is now.

I realize that it may encourage the seventh or eighth seed to sandbag their last match in order to finish ninth and thereby have a chance to get selected by a top seed, but they also run the risk of not getting picked at all.

Maybe this, and having a 1…8 then 8…1 selection order, would make for better elimination matches than the blowouts we get now.

I’m not so quick to block picking within the top 8. At Duel, 25’s first pick was MOE, the #9 seed. I’m not saying MOE was sandbagging by any stretch–25 just made the best decision they could under the rules. I’d imagine that you’d see a lot of that under a restricted picking system. (And besides, the other teams in the top 8 can always decline.)

If you ask me, I think the best way to go about it would be to go by QPs, then the average QPs of your opponents over the qualifying rounds. If you’re beating other highly-seeded teams, which are usually harder opponents, you’ll do better than if you’re beating teams that are 0-8. Furthermore, it encourages teams to do everything they can to help the very teams they’ll be going against–you want your opponents to win every match (except the ones you’re in, naturally).

I’m glad you brought that up. Because, it sometimes causes hard feelings. It’s as hard to decline as it is to be snubbed. We’ve all seen times when a team seeds high due to the luck of the draw wrt/ alliance partners. Then we see team after team decline them. Now suppose they could only pick from number nine down, and the team they selected had sandbagged their way there. I call that justice. :wink:

Leave as is with win/loss but change the way RP points are tabulated. If you take the losers score, subtract from the winners score, take the remainder and subtract from 100 to give RP. The losing alliance gets 2/3 of the RP. Example:

Red 52 Blue 41
52 - 41 = 11
100 - 11 = 89 RP winning alliance
89/3 x 2 = 60 RP losing alliance

Red 52 Blue 10
52 - 10 = 42
100 - 42 = 58 RP winning alliance
58/3 x 2 = 38 RP losing alliance

Red 89 Blue 0
89 - 0 = 89
100 - 89 = 11 RP winning alliance
11/3 x 2 = 8 RP losing alliance

Red 98 Blue 97
98 - 97 = 1
100 - 1 = 99 RP winning alliance
99/3 x 2 = 66 RP losing alliance

Red 10 Blue 9
works out to the same as above

There would be a max amount of RP per game. This encourages close games which are exciting. Not sure of how to handle ties at this point but maybe 50 RPs for a tie. The closer the score, the higher the RPs for both winning and losing. Would also make strategy much tougher.

Why 100? Would that number change from year to year? What happens if, in the future, a normal score is Red 445 v. Blue 290?

I really like Steve’s idea. But, Jeff brings up a good point, rather than 100, it should be the next highest hundred.

So, say the score is
Red 98 - Blue 90 — use 100
Red 103 - Blue 95 — use 200
Red 205- Blue 115 — use 300
and so on…

That would account for scores over 100, and continued growth in scoring for the future.

I choose an arbitrary number. Your score would still work.
Red 445 Blue 290
445 - 290 = 155
100 - 155 = 0

Both teams get 0 RP

As was asked, I came up with an idea. Numbers can be changed to work with the scoring scheme. I like 100 as it stops blowouts as can be seen by your scores. If the score had been 445 - 444 then the winning alliance would get 99 RPs and the losing 66 RPs.

Another way for ***RP’s ** * would be take the losing teams points as RP’s. Winner gets 2x the points, and 1pt off for every 5pts or 10pts (depends on the game) the winning alliance is higher than the losing team. This would also create close matches.

This year I saw some teams go and shoot balls in the higher goal of the their opponents, so they would have a higher RP. It makes sense, but you can really make some teams think that you think they can’t do it. So you could subtract points from the teams that scores for the other. Example: Red scores 15pts on their own and Blue scores 50+pts in the match. Blue wants more RP’s, and scores 15pts for Red making their total 30pts. All of the Red teams would get the 30pts and the Blue teams would get 15pts. This would mean that either Blue lets Red score more or they don’t score for them. This sounds like its an OK solution but not a perfect one for stopping it.

Edit: RP=Ranking Points - instead of QP=Qualifying Points

I have a problem with Steve W’s idea.

I don’t think QP should be directly related to the opponent’s score like that.

Who’s fault is it if a powerful team is set up against less powerful opponents?
I don’t like the idea having the teams who worked hard to make a strong, competitive robot suffer because of a computer program that randomly generates alliances.

In 2003, I think the QP of the winner = 2x loser’s score + winner’s score. 166 suffered because of that. I wasn’t on the team at that point, but they built a very good robot and would win matches with 90 points or something to 3 points. I think robots who can shut out teams like that deserve to be ranked higher.

That may sound like a biased opinion, but everyone has to have their own biased opinions at some point in their lives.

If FIRST ever wants a system that factors in the difficulty of your opponents, like this, then you can copy many of the sports ranking systems.

Arizona Football does a “power-point” system for seeding, with your team receiving 50 points for every win and 5 points for each of your opponent’s wins. You divide all the points from your wins by the total games you played.

They play a 10 game schedule, and the theory behind the system is that beating a team with no wins (resulting in 50 points for your win) should be equivalent to losing to an undefeated team (resulting in 50 points for their 10 wins).

There are huge flaws in applying this to a system with multiple team alliances and opponents though, and I think I’ve figured out a system but am not sure of how accurate it would really be.

What flaws would there be? The only one that comes to mind (and I haven’t tested it yet) is that everyone would have the same opponent-win percentage if everyone played everyone else once at a regional–but when does that happen?

The system works. No need for change. If a team doesn’t end up a good position, that means they weren’t good enough.

possibly use a combined record to gauge an alliances record to fit into the above power-point system

I meant just using a straight copy of it would be flawed. If instead you factor in each opponents’ wins and also each of your alliance partners’ losses, you could make a better system (the idea then would be a win over 3 winless opponents with 2 undefeated partners would be equal to a loss to 3 undefeated opponents with 2 winless partners).

The bigger problem is I’m not sure how accurate it would be in a system where your opponents can also be your partners, as the original system wasn’t designed for this type of scenario.

I like the current system (especially when compared to the old one from 2003 and earlier), and whether it should be changed really depends on what FIRST wants to promote in matches and design.

If they want high scoring matches, they should keep the current system, which rewards an offensive strategy more than a defensive one.
If they want to account more for opponents’ strength, they need a system like Billfred’s or many high school sports.
If they want close games, they should probably go back to the old system or get one like Steve’s.
If they want something else… well, adjust accordingly.

Regardless of how FIRST does rankings, I will still use something more like my idea when trying to figure out alliance selections, because when I’m doing that I care far more about how good they are performing than how close their matches have been and whether they’re an offensive or defensive robot. FIRST would want to promote exciting matches, but from a success viewpoint I would not want to be part of one because that usually means one team barely wins a shootout or that they come from behind for a close victory.

Instead of not giving the winning alliance the points they scored, take those away from the points the other alliance actually scored. So, using your example the Blue alliance would get 0 points. Reds 15 - their 15 they scored for Red = 0. This would greatly discourage scoring for your opponent.