So I have heard people talking about how schedules being changed have affected outcomes. Are the schedules changed every year? If so when would they be? If not why is it done? Thanks
They are generated on the fly at the event by an algorithm to satisfy certain criteria, such as color and time between matches. Notably, none of which has to due with robot strength.
Many here have advocated for using preset audited schedules and just randomizing the teams within them.
Schedules are generated randomly for each event as the last poster said. You can check out Section 11.6.2 in the manual for an explainer of what the schedule generator prioritizes. Before an event, once all teams are checked in, FMS generates hundreds of thousands of random schedules, scores them based on the criteria in Section 11.6.2, then picks the best one and shows it to the scorekeeper (or other event staff setting up the event).
FMS will warn staff of any outliers in the schedule (like if team XXXX plays against team YYYY three times for some reason), and they can re-generate a schedule with the permission of the FTA and/or FIRST HQ. Generally though, this doesn’t happen, and would happen before anyone else can see the schedule. Once a schedule is published to the public (usually a few hours before qualification matches begin) it’s more or less permanent.
While schedules can be frustrating and the way they’re created can be pretty controversial, they really don’t change much. You are always going to have favourable and unfavourable matches - the only way to swing that is to be an EXTREME outlier team. A team that fields a robot that does nothing will lose 90% of their matches; a team that fields the best robot in the world will win 90% of their matches. It’s just how the game works.
While some people argue that schedules should be pre-generated for every combination of X teams and Y matches, they sometimes miss that there is no perfect schedule that everyone will be happy with. Random schedules try to strike a balance between spacing out your matches so you have time in-between and giving you the widest possible range of teammates and opponents - you can’t always have both.
Thank you
One should not let perfect be the enemy of good.
Because what we have now is not good.
Cheesy Arena, 254’s homebrew FMS alternative, uses pre-generated schedules. Caleb Sykes found that Cheesy schedules aren’t much better than FMS schedules.
By “there is no perfect schedule” I mean that there isn’t a pre-generated schedule that will consistently be “fairer” than FMS’ method of generating schedules. Any schedule with a wider range of teams that play with and against each other will inevitably have very short turnaround times for some teams, and any schedule with longer turnaround times will inevitably have very poor distribution of who plays who.
I’m not familiar with the Cheesy Arena implementation, but I know that the official scheduler uses “rounds” in which every team has to play once by the time any team plays a second time. Given that, I wonder whether it could make sense to build in short, regularly scheduled field breaks between the rounds at smaller events. They could be as little as ~8 minutes, or one match cycle time, but they would allow the scheduler to permit turnarounds one match shorter than the current limit without decreasing the actual time between matches for teams. As has been discussed previously, relaxing that constraint strongly reduces the number of duplicate partners/opponents in the schedule. Depending on the implementation, you could even schedule a break for every other round rather than every one to limit the added time pressure on the match schedule, but the events most in need of improved schedules are the ones that run the fewest matches, which should have the most buffer time to give.
The breaks would double as predefined field maintenance time to address things like sticky charge stations without putting the event behind schedule, which this year showed the utility of.
This is actually a fantastic idea and I’m not sure how no one’s thought of it yet. As long as we’re not expecting teams to be ready on the field during the timeout which defeats the purpose - I would gladly play 8-9 rounds instead of 10 to take this tradeoff.
Most of the issues with FMS’s “round” scheduling is that it essentially avoids giving a team matches late in round N and early in round N+1, which drastically reduces the pool of teams that can play early in round N+1, causing a lot of duplicate pairings. I wouldn’t have a problem playing two matches in a row if they were separated by a decent length field timeout, which of course won’t be a one size fits all fix, but it’s really something HQ should consider for 2024.
The one detail to consider is that at any event where the number of teams is not divisible by 6, not all rounds are separated cleanly; instead, one match straddles some of the boundaries, with some teams in round N and the rest in round N+1 simultaneously.
For example, at an event with 32 teams, round 1 consists of Q1-Q5 and 2/6 of Q6; round 2 is 4/6 of Q6, Q7-Q10, and 4/6 of Q11; round 3 is 2/6 of Q11 and Q12-Q16; etc.
So in Q6, you have to watch out for teams who were in Q4 as well as teams who will be in Q8, and you can only schedule the break to accommodate one of those two cases (of course it’s preferable to pick the place that benefits more teams, which is before Q6). But aside from the implementation complexities it would introduce, I think it’s a reasonable restriction to say the schedule can allow a 2 match turnaround across the break but only 3 or more if not across it.
Never actually realized this, thank you!
I think the solution is to just treat the turnaround time between matches to be ~4 minutes plus the length of the match (~6-7 minutes, longer in practice), and calculate the schedule’s turnaround times based on time number of MINUTES between matches, rather than the number of matches between matches. Then field timeouts in between rounds can just count as a longer turnaround time, rather than trying to do some convoluted method of giving each team a similar number of field matches between field timeouts.
Per the MatchMaker whitepaper
Match Separation Teams need time for queueing and robot maintenance between matches, so we require a minimum gap between matches for each team. For maximum scheduling flexibility, this minimum gap is measured strictly by match numbers without regard to breaks, so the minimum gap is preserved even if schedule problems force the matches to be moved relative to the scheduled breaks.
I am curious - do you have links to previous discussions/research on this? My understanding from a naive reading of 11.6.2, specifically
is that simply allowing shorter turnarounds between matches may not necessarily result in schedules with shorter turnarounds being selected. For instance, if 2-match turnarounds become possible, how would Matchmaker penalize schedules that contain them relative to schedules that only contain 3-match turnarounds? (Matchmaker is selecting from several million possible schedules here, and I don’t see 3-match turnarounds very often at my usual 40-team events, although they can happen.)
My understanding of the algorithm is that it only judges match separation on an allow/disallow basis. A schedule cannot require any team to play two matches closer together than the minimum match separation, but beyond that the “score” that a generated schedule is judged on is only a function of partner and opponent duplication. There is no preference for a schedule that gives the average team a more even distribution of breaks above the minimum requirement.
From the IdleLoop whitepaper:
Minimum Match Separation Some care must be given when choosing the minimum match separation. Consider a tournament that consists of 42 teams playing some number of rounds. Since there are six teams per match, this means that on average, each team has to play once every seven rounds, for an average match separation of seven. Obviously, we can’t require a minimum match separation greater than seven, since the average of numbers larger than seven can’t be equal to seven. Said another way, such a restriction would require every team to appear later in the second round than in the first, which clearly can’t happen. Even requiring a minimum match separation of 7 would restrict the schedule to require that every team appears in the same group of six in each round, so every team would have to play with the same five teams in every single round. As the minimum match separation is lowered, the algorithm gets more flexibility in how it permutes the teams within rounds and thus can better increase the pair uniformity. Setting the match separation to 1 says teams can be scheduled to play in back-to-back matches, which gives the algorithm too much freedom.
Each schedule generated, which is guaranteed to satisfy the first two criteria [round uniformity and match separation], is assigned a score based on the amount of partner and opponent duplication. For each team, we count the number of times that team (in a non-surrogate match) sees each other team as a partner, as an opponent, or in either role. Penalty points are added for each duplication, doubled by each additional time a given team is seen in any category. The weighting for duplication in partners is slightly heavier than for opponents, since there are only two partners, but three opponents, per round.
(Emphasis mine)
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.