Pseudo-Swiss alliance assignment during qualifications? - A thought experiment

What would a district/regional event look like if we used a variation of Swiss style pairings for qualification matches.

For people not familiar with the system, the essence of Swiss pairing is that in a given tournament round a player plays against people who have the same score as they do. In the first round of an unrated (I’ll explain in a moment) Swiss tournament, opponents are assigned randomly. In the second round, the people who won in the first round play against other winners. The losers from the first round play against other losers. In the third round, people with two wins play each other, players with one win play each other. Players with no wins play each other.

The Swiss system is most closely associated with Chess, where each player also has a pre-tournament rating that influences who they play in the first (and subsequent) rounds. The pairings are chosen to try and ensure that the top two players meet to decide the championship in the final round, much like seeded brackers are used in FIRST and other sports’ playoff rounds. While it is best known in Chess, it is also used in other game tournaments, and I’ve used it in martial arts tournaments as well.

The advantage of the Swiss system is that you are more likely to end up playing against someone of your own level, at least by the end of the tournament. At the end of the tournament, the great players will be playing each other, and the not-so-great players will be playing each other. Speaking as a not-so-great Chess player, I always figure the first couple of rounds are going to be pretty rough, but by round 3 I ought to be competitive, as I play against someone else who lost their first two rounds.

The only down side that I have encountered over the years is kind of ego related. If you lose all your games in a randomly assigned pairing tournament, you can say that your opponents were very strong. If you lose five games in a Swiss tournament, that means you lost one of those games to someone who was 0-4.

Because of the alliance system, FIRST couldn’t use this system directly, but could we use some variation on it? Could we modify qualification alliance matches so that, after an initial set of rounds, the teams with good records would face each other, and the teams with not so good records would face each other.

I can think of a couple of problems with the idea. One is simply logistics. It would mean that you couldn’t publish the competition schedule at the beginning of the event. I think you could get away, though, with a “lag” system. The first two rounds are random. The third round assignments are based on round 1 results. Fourth round are based on rounds 1 and 2, etc. The last two rounds are paired after the 10th round. (That’s based on a 12 round district schedule) There is also the problem that our competitions aren’t in even “rounds”. The last match of round 1 includes robots that are playing their second match. However, algorithmic modifications can take care of those issues.

The advantage would be the same as in other games. After a while, you are competing against opponents of your own level. You could have some really great alliances at the top end. At the bottom end, the not so great bots would at least have an opportunity to do what they could without “getting in the way” of their high scoring partners.

There are some disadvantages as well. First, the same as with other sports, there might be some bruised egos when a team can’t even win against a skateboard. A Swiss almost guarantees that some team will finish with an 0-12 record, or close to it.

Second, some people might really enjoy competing with, or against, the “super teams”. In a Swiss, if you don’t meet them in the first round, you probably won’t catch up to meet them later.

Finally, and in some years this would be a show-stopper, we don’t always play zero sum games. It not only matters who wins, but how many points are scored. If you start off with tough pairings, or maybe your 'bot needs repairs for the first couple of matches, you are likely to be with weak alliances that will never score bonus ranking points, while the teams that started strong are likely to now be with two other strong teams, so will likely get the bonuses. This can cause the gaps between teams to widen so that catch up play is impossible. This year, I don’t think it would be a huge problem. If there is another “average score” year, as with that 2015 game that must not be named, it would be an absolutely horrible system.

So, what do people think? It’s just a thought. It is not a critical issue that must be discussed right now! I just have spent a lot of time thinking about how tournaments are run, in several different styles of competition over the years, and find the thought interesting. I think the way that things are done at FIRST right now is pretty good, but it’s an exercise I thought I would share with other interested parties.

It’s certainly worth always thinking about ways to improve tournament structure. While it might be fun to see an offseason trying out Swiss pairings out just to see how it works out, in general I suspect the negatives outweigh the positives.

  • More accurate ranking with smaller number of matches. (Which is why it may be particularly useful for offseasons that don’t have the time for a large number of matches-per-team.)


  • As you mention, if one gets a poor start it can be hard to recover once you’re in a “loser’s bracket”.
  • Having the whole qualification schedule up front is really nice. It’s handy to be able to see if any future alliance partners need help, you can provide all your match numbers to the parents watching from home and they can just check in on occasion.
  • If the number of teams each round isn’t divisible by 6, you end up with some odd cases where you either need surrogates, or byes, or otherwise find some way to even things out. Not insurmountable, but it certainly affects things less when all you need is for the number of teams times the number of matches per team to be divisible by 6.

In general, the advantage where you get the “best” teams ranked at the top is more helpful for Chess or other 1-on-1 events, but here, even if the top 8 teams at the end of quals aren’t the “best” 8, the drafting structure means that there are 8 teams that are at least reasonably good, and 16 teams that are selected to be the “best” by informed people in the playoffs, and that’s probably “good enough”. For the people who aren’t likely to be in picking position, qualifications are more about “showing off what they can do” than “attempting to win every match”. I may not have phrased that well, as obviously everybody is trying to win, but I mean that many teams would be in some ways happier losing a close match where their robot/alliance performed great than winning a blowout where their robot never worked right.

An even more important point is that queuing won’t know who to call to the field at the start of each new round.

This caused long delays between QF and SF and between SF and F when advancement was based on averages (in that game that shall not be named). Nobody knew who was playing until the computer could calculate it all, print reports for queuing, call up teams, etc.

We already have enough delays with the field. We don’t have to build them into the schedule too.

Swiss only produces better matches/rankings if you assume competitors are going to compete at a near-constant level throughout the tournament. I’ve found that to be very far from the truth in FRC. Not only is there a fair bit of driver variance and pseudo-random circumstance in each match (which would be somewhat analogous to variance in other forms of competition using a Swiss format), teams actively work on their robots between matches. The result is a non-fixed competitive level. If a team shows up with a mechanism that isn’t quite working and loses their first two matches, only to get it working before their third or fourth, suddenly they’re in the “wrong” portion of the bracket.

That being said, alternative competition structures has been something I enjoyed toying with in my head. I would love to see more discussion of them in general. Random alliances make many competition structures far less workable, but that doesn’t mean they cannot be discussed.

I would also provide a word of caution on using “good/bad team” methods, of any sort. Swiss might be better, though.

Algorithm of DOOM!

That was the word of caution, and for the benefit of those that weren’t around, I’ll explain it. Back in '07, somebody got the idea that the older a team was, the better they were. All teams at any given event were divided into three tiers, by number–low numbers in one, high in another, and if you landed in between those two tiers, you were in the middle tier. Each alliance had one team from each tier. At smaller (and even larger) events, the other constraints on the schedule generally put you against teams and never with them if they were in your tier. Imagine playing 1114 or 2056 every single match… (Or, for that matter, both together…) You get the idea.

Basically, if you pre-set anything, you’re asking for trouble. Randomizing 1-2 rounds and then working from there is more workable, I think, but you could run into the case of a team improving suddenly.

The Bracket of DOOM! was another similar twist done back in the dark ages of FRC. A little harder to pull off now, though.

Probably true. Certainly one thing that can happen frequently in FRC, that doesn’t happen in Chess, is sudden changes in quality based on pit activity and/or wear and tear on a robot.

This could be worked around with the lag system, in which your round 3 pairings are based on your scores in round 1, rather than your scores for round 1+2. Your round six assignments would be based on rounds 1-4.

That uneven numbers of people, meaning that in at least one match, some teams are playing round 1, while others are playing round 2, was a harder thing to deal with in the model that I worked out.

One interesting aspect of the system, which could be considered a positive or a negative, but to my mind is a positive, would be that the most powerful alliance of the day would be a more powerful alliance. It would occur in the last match of qualifications. You don’t have the top alliance dragged down by the tail end of the serpentine draft.

I do tend to agree that the best place for this would be a one day off-season event. The Swiss system “sorts” the teams quicker than the random assignments we use now, which could be a real benefit for shortened schedule events. (Of course, all the other disclaimers, like rapid changes in quality, apply.)

Another option would be to utilize the breaks for generating the next set of pairings, doing several “rounds” in each “block”. That is, for a 2-day event, matches before lunch on day 1 are random, matches for after lunch day 1 are based on trying to match teams of similar scores to the extent possible, and then at the end of day 1 matches are generated for morning of day 2 based on their current scores. So, there’s some level of trying to match up teams in similar “brackets”, but only in a couple blocks, and around when there’s a break in matches anyway.

Of course, relying on this requires the event to be running reliably on time, as it’s not conducive to last-minute schedule changes.

Even if the event were guaranteed to run on time, I still don’t really think you get a whole lot of value over the completely random schedule. We call them “Qualifications” since they’re kind of preliminary to the more traditional tournament Playoffs structure, and are just used to find 8 reasonable choices to be doing alliance selection.

A Swiss-like structure would perhaps work better if it were the “main” tournament. I guess I could imagine the six subdivision alliances on Einstein using some sort of Swiss structure to determine a “winner”, though with only six the current plan for a round-robin-with-top-two-playoff is likely better.

Maybe it’d be interesting if alliances were formed before an event (again, I’m more thinking of wacky offseason ideas here), and the three teams worked together throughout an event in a Swiss structure, maybe with a top 2 or top 4 playoff at the end.

Maybe once FIRST is even bigger and has a ton of championships, the Tournament of Champions might use something Swiss-style.

Just a bunch of random thoughts. Again, while it’s fun to discuss and think about them, I don’t think you’re going to get enough positives to outweigh the negatives of a major change.

Another option is to schedule the matches such that you know who is in which match but which alliance they’re on is not determined up front. This gets rid of the problems of queuing and other problems with not knowing who’s playing when.

After all of the teams in a match have played their previous one the alliances could be chosen to balance win-loss records. This would make it so that teams that were doing well got harder matches because their opponents would improve at the same time as their partners got worse, while teams that were struggling would get easier matches because they’d get better partners.

This would also make for more competitive matches to watch. So far this year the average margin of victory is like 1/3 of the average number of points. This is like a basketball team winning by 30 points.

Back in ye olden days (2001) teams didn’t know their alliance partners until the queue line. I think it was pretty much a universally agreed upon improvement when FIRST moved away from that system.

I’m not really familiar with the old setups. If I was going to read up on them is there a better place to look than the old game manuals?

^^This. All of the reviews of OPR and related stats have shown that a dozen FRC matches do not produce consistent and stable results. Trying to adjust the schedule based on one or two matches would be even worse.

As Sean said, teams get both better (as they continue to develop robots, skills, and strategies) and worse (as things break either on the robot or the field, or other teams figure out how to defend against them) through the course of a single event.

As another key item: If you separate the field into tiers (or even a spectrum) as you go, it deprives the high-level teams (particularly elim alliance captains) of scouting opportunities of the mid-level and low-level teams as they play with and against the upper level teams.

More old game manuals…

TechnoKats History Project is my typical go-to for those.

You might also be able to figure out who’s been around that long and drop a PM to them. (Not quite that long for me…)

I would be really interested in seeing an off-season event try something like this.

In terms of weird competition structures at off-seasons, Hatboro Havoc tested out a 5-alliance round robin as the first stage of their elimination tournament this year (mostly as the result of the number of teams they had participate, and wanting to get as many as possible into the elims). It actually worked really well, but had the benefit of only one match being “meaningless” (neither alliance could advance), no matches where only one alliance cared, and the final match effectively being a play-in to the finals. It will be interesting to see if something similar occurs on Einstein(s) this year, or if there will be matches where only one alliance has a chance to advance.

I thought of another concern.

After the first round, half the teams will have a win and half a loss (let’s dismiss ties for the sake of argument). So matchups for the next round would be able to be made.

But eventually, even with the Swiss balancing, you might get to the point where there are a handful of teams with all losses. These teams would have to play amongst themselves again and again until some might gain 2 wins and move up into the next tier.

What about Swiss balancing with OPR instead of W-L-T?


First round OPRs would literally just be the scores of each alliance. If you sorted after that, each team will instantly be put into the same tier as their match 1 alliance partners. While you would gradually get separation, you’d have a very messy matrix that doesn’t allow teams to separate very cleanly.

I can’t think that any matchmaking system that doesn’t provide a match schedule up front is a good idea.

So then the optimal strategy becomes winning while scoring as little as possible. Doesn’t sound much like FRC’s usual incentives…