"Random" Match List Generation

I’ve searched the forums for a discussion like this and found none. I’m curious to know if others have noticed this (and I’m sure many have) and what you think of it.

Our team attended the Wisconsin Regional a couple weekends ago and were very intrigued by the “randomness” of the alliance pairings in the quailfying matches. In addition to our own team’s awareness of this, many other teams expressed that they noticed the same thing. As an example, our team played four matches in a row with team 525. We played against team 111 three times in a row (won 1 by some small miracle!) and team 111 played against team 494 four times! In our final three matches we either played with our against teams 1714 and 1732, both of whom played on the same alliance for the last three matches.

I’m not sure how the match lists are generated but sometimes it feels like there is a puppet-master working the strings. If the match lists truly are randomly generated then someone needs to work on the sophistication of their generator so there is a bit more mix to things. With 34 teams at the Wisconsin regional we should have played with and against every team there at least once. Instead we ended up playing with our against the same teams over and over again and never played with/against a handful of teams.

I don’t want this to sound like sour grapes because it is anything but that. Regardless how many times we played against the WildStang juggernaut we still ended up seeded third and played respectably and we’re proud of our performance. It would be nice to have the opportunity to play with some of these teams as well as against them. I can’t imagine what it would be like for a rookie team to come in and find the deck “randomly” stacked against them.

Anyone else have thoughts on this or is this regional just a fluke in the pairings?



people have raised this issue before. Maybe its time to drive a stake through the random match generator and make something better.

You are right, during the seeding matches every team SHOULD play against and/or with all of the other teams at least once. So why do we assign matches at random?

Why not take the number of teams at the event, arrange a sliding schedule so the teams at the oppositie ends slide towards each other during the seeding rounds, and then assign the teams to those slots at random.

That way you wont have all the high number rookie teams at one end (together) and the low number veteran teams at the other (allied together). Something like a football pool - every team gets a slot, then those team slots are assigned to the sliding schedule at random?

The only way to verify the random-ness of the current system would be to collect all the data from each regional and do a statistical analysis. When you flip coins sometimes heads does come up 5 times in a row - if you are that team then it will not feel random, but the regional as a whole should average out to a random distribution.

maybe that kind of randomness is not what we really want? Maybe we want something more like the playoff tiers, except your team is not eliminated when you lose.

I don’t believe the problem boils down to just the algorithm used. There’s a few tunable parameters in the generation algorithm and the setting of these will greatly influence the randomness. For instance, one setting is the minimum number of matches a team must “sit out” between rounds that they play in. If this is set too high then the generator becomes very constrained on which teams it can place in any given match. This is especially noticable at events with a relatively small number of teams (such as Midwest and Wisconsin). If they had reduced the match spacing, it would have been much more random but at the expense of some really short breaks between matches. I know at Midwest for example that we played every 20 minutes. It was barely enough time to make a few quick repairs and get back in the queue. It would have been really tough if that number had been reduced even more.

Unfortunately I think there’s a bigger problem here: when you have 6 teams on the field at once, and you only have about ~30 teams in attendance, you don’t have a lot to work with. Maybe FIRST needs to consider a game where it can be either 2-on-2 or 3-on-3 depending on the number of teams at the event or something.

Another option would be to limit the number of matches that each team plays in a regional.

I’m guessing that the smaller regionals play a lot of matches.

Simply extend the time per match from 6 minutes to 8 or 9. Then crank the number of matches that a team sits out to a smaller number to increase the spread.

You’ll have more time between rounds, but you’ll play fewer matches. Which would you prefer?

That’s a real double-edged sword, isn’t it?! The nice thing about six teams on the field at a time is that all teams get more qualifying rounds which equates to more time to tweak an unruly robot and more time to play the game. For those teams that may only attend one or two events a year, more field time is a real bonus. Otherwise these teams are building a robot that sees action maybe a half dozen times.

The downside to more quailfying matches and more teams on the field, like you said, is the short duration between matches for any given team. We’ve dealt with short turnaround times in the past and it can be a real hassle, especially if things aren’t going so well.

How about this for an off-the-wall game concept - not only random pairings but also a random number of robots on the field! Anywhere from 1-on-1 to 3-on-3! That would REALLY mix things up! ANd it would work for this years game! I think you’re on to something Dave!

The problem really is too much randomness, not too little. What we really want is a defined tournament scheme, not a random scheme. Total randomness can create some surprisingly non-random looking results.

There are very well defined schemes for tournaments involving 4 teams/individuals. Bridge, for example. Given “X” players (x divisible by 4), a schedule can be set up so that you are partnered with each other player once, and against every other player twice. (Since at any one time, you have one partner and 2 opponents.) Or for round-robin leagues, where every team plays every other team once.

I don’t know if such schemes are defined for a 3v3 competition.

The restrictions on not playing too many matches within a given time period also puts constraints on the selection process.

How about keeping the number of matches, but extending the day? Allow 8 or more minutes per match (instead of the usual 6 minutes) when the regional is small.

For example - MWR only had 60 total matches (12 per team for 30 teams). At regionals with 60+ teams (such as VCU), they were able to run 59 matches in the first day and 86 total matches. They did this by going from 9:20 AM to 4:12 PM at VCU versus 10:00 AM to 3:56 at MWR. So, if they ran the same schedule at MWR as VCU, they could slow down, still run 60 matches (12 per team) and not rush everyone on and off the field.

I like this idea, but it would have to be part of the game from day one (kickoff).

Some teams have built simple purely defensive robots that are in-capable of scoring. They did this because they know their bot will be valuable when matched with shooters and dumpers

but if you put them on the field alone they will automatically lose every match (because they cannot score).

Most chess tournaments of the size of a FIRST regional are paired with what is called a swiss system. In round 1, the players are seeded (by rating), and split into top and bottom halves. The #1 seed in the top half plays the top seed in the bottom half, the #2 seed plays the second highest seed in the bottom half, and so on and so forth. In subsequent rounds the players are divided into groups by score, seeded inside those groups by rating, and each group is split into top and bottom halves and paired as above. The system’s goal is to pair players who are playing well against one another. A variation is the accelerated swiss pairing system.

While the system as used in chess tournaments is not clearly not viable for a FIRST competition, the concept behind it (pair strong players against one another) should be.

I don’t ever think this match generator is going to be disseappearing anytime soon. Personally at the NYC regionals the matches were fairly random and so were the alliances. It made the event a little bit more exciting to see different alliances. Personally I like the randomness an event has. It gives teams a chance to change stratedgy to compensate for what they don’t have. If anything the amount of robots on the field will be extremely more competitive, the only problem is the day would have to be extended or the time in between matches would have to be shortened so that each team can play all the scenarios.

Any thoughts ?

I haven’t studied algorithms for generating matchlists. Superficially, it seems that repeat alliance partners and/or repeat opponents are more likely to occur

  1. as the number of matches is increased – if the event staff tries to schedule more matches while maintaining a larger minimum interval between appearances of the same team (say four matches off between field appearances) the result is that teams that have been on the field together once will share the field again, probably several times, and

  2. as the number of teams is decreased – for similar reasons.

To allow teams to share the field (as partners or opponents) with a wider variety of other teams, the match list must allow more variability in the interval between appearances of the same team.

It has been proposed here and in previous threads on this topic that, to prevent repeat field partners/opponents, the minimum interval between field appearances should be controlled in minutes rather than matches; i.e., increase the time interval between matches at smaller regionals, and allow more variance in the match interval between field appearances at larger ones. I think a statistical review of repeat field partners/opponents vs. appearance interval might support this proposal, but I don’t have the time to do the analysis now. Any volunteers?

I dont see why a short interval between two matches for one team would be a problem. In the finals you may play three matches back to back, depending on your last match of the semi finals maybe even 4 or 5.

If you have 60 teams at a regional, then there will be an average spacing of 9 matches between each teams time on the field. If a fixed pattern was used (instead of psuedo random) then you might end up with two matches back to back, but then you would also have two matches with 18 or 19 in between - so it would balance out over the 3 days.

at the Midwest, us, 71, and another team (rookie), were on the same alliance in the same sides on the same positions. On the other alliance, only one changed, so basically the match was the same groups of people, except for one team. It was weird. Match 10, and then Match 15, and all the same bots but one were in line for Match 15.

I forgot how the NYC Regional Match list was generated. I think it was 12 matches The Start Time was 9:50 End Time was 4 something for the first day lunch was between 11 / 12 & 1, time in between matches i think was like 4 1/2 minutes - 6 1/2 minutes and the start times for saturday was 9:20 and end was somewhere around 11:30ish so that kinda helped in not seeing any alliance repeats. Like I said I was around when the matches were being generated but I was giving one copy one day and a totally different copy the following day. As I said before there should be a SET amount of matches to be played for each regional based on the amount of teams - like 10 matches for 30 teams so on and so forth that way those volunteers who are at the scoring table don’t have to use their best judgement in how many matches to run.

Do you value your sanity? That is a lot of back and forth between the pits and the stands/field. Not to mention that there is very little time to just sit back and enjoy the surroundings.

At both Midwest and Wisconsin, I helped a few teams with their software. The changes were easy, the testing was easy, but there was a huge problem with timing. I’d be working with them and one of our matches would come up, so I’d run out to barely catch our robot beginning to move in auton. I’d return to their pit after the match to find that they were just about to go to a match. By the time they came back it was time for another one of our matches. It became a huge game of tag trying to coordinate time to work together. If we had an extra 2-3 matches worth of spacing, both of our lives would have been a lot less chaotic…they would have been able to play all of their matches with the changes that they needed, and I would have been able to watch the matches with my team.

Don’t get me wrong, I really enjoyed helping these teams and watching their students go from down to excited, but I’ll tell you what, I sure was exhausted by the end of the day.

I’m all for the extra spacing, even if it means having a 5 minute break every 10 matches. I think it benefits all parties involved.

I dont think that there should be a SET number, but a rough guideline. I know that at VCU, one of the biggest reasons we try to get as many matches in as possible is to give each team all the play time that they can possibly have. I think that those regionals with lower team attendance shouldn’t necessarily take more time inbetween matches. I agree that there should be sufficient time inbetween a teams matches, since i was a driver for my team, but also try to maximize the number of matches that a team can play. Doing this first basically gives the teams what they pay for, but it also helps teams to be able to help out their rank, esp those teams that are able to improve their robot greatly if they came in not up to par shape.

Also just to sum up how the match pairing is generated:
Hatch Technology developed the scoring program that they use at the competitions. The part of the scoring program has the algorithm that generates the matches. The inputs that the competition puts in before it generates the matches are:
-Time inbetween matches for teams
-Ideal number of matches for each team to play
-and, Start and End time for the competition day
I think that is about it, not to sure, can’t really remember that well. After these inputs are put in, the program takes them and the list of the teams that is stored in the program for that event and generates the match schedule.

just my .02

Mike O’Brien

Im not saying we should speed up the timing between all matches.

Right now the ‘random match generator’ is programmed to ensure all teams have at least 3 or 4 matches between games.

Im proposing we take the randomness out of match selection, and use a fixed pattern instead, that will insure all teams will play both with and against all the other teams in at least one match.

This means you might have two matches back to back maybe once at a regional, and the rest would be spaced out more, with at least one pair spaced out by 15 or 16 matches in between.

So for that one back to back pair you would also end up a with a pair having an hour or more in between.

and you would know all this on thursday morning, so you could plan any major changes when you know you will have enough time.

At AZ (45 teams), we were against the same team twice in a row. This happened at least twice for two different teams.

At LA (50 teams), that didn’t happen.

The quick solution: add something that says “If team x plays against team y, then team y cannot play against team x again on that day, but may play with them.” Then add something similar for playing with and you are all set–until you run out of teams or matches to fill.

From what I hear, this year, FIRST used a minumum of 5 matches before each team could repeat. This (as others have suspected) would severly constrain the “randomness” at small regionals, because if you do the math, if you have 30 teams at an event (like FLR) and there are 6 robots, thats only 5 matches total, so there isnt much room to move the robots around at all.

Personally, I agree with the 2-3 matches, 3 being what I think would be ideal. I can remember in the “old days” where we had potential to have every other match (ie you get off the field and jump right into the loading station). This to me, while hectic and hard if you are damaged, was cool because you did play against so many more teams.

I like that idea, but here’s another one that I thought of while reading:

When TeamA plays in a match, they cannot play in the next match that any three robots from their previous match were in.
Adding that ensures that only two teams from their previous match are in the next match they’re in. This may cause some problems at smaller regionals where there aren’t as many teams, but I’m sure teams won’t mind if the number of matches decrease between a team coming up decreases to 3 or 4 if it ensures that the matches will be a bit more randomly paired.

Those two robots may not also be on the same alliance configuration that they were in last match either.
If TeamA was playing against TeamB and TeamC, one of those two must be on TeamA’s alliance in the next match. If TeamA played with both of those teams, one of them must also be playing against TeamA. If TeamA was playing with TeamB and against TeamC, then TeamC must play with TeamA, and TeamB must play against.