![]() |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
Are you implying that FIRST staff and the GDC are searching for an algorithm, or that they have chosen this algorithm from among a list of candidates solicited earlier? If there was a solicitation, I'm surprised that I missed it. If there is going to be a solictation, can you tell us when? If there isn't going to be a solicitation, I'm a bit disappointed. About this algorithm, some quick questions are listed below. If the answer to some of them is "Read the description at ___"; that answer won't hurt my feelings. I think the answers to some of these questions might turn up points that should become part of a match scheduling algorithm's requirements; and that the others might turn up points that should constrain the implementation of those scheduling requirements. 1) Does it allow one to start with a partial schedule and then compute only the rest of the schedule? 2) Does it allow users to create a schedule and then submit it to the algorithm (as input data) for initial or further annealing? 3) Does it allow users to request that each team have at least one long break (perhaps at a user selected time) (for things like giving a team a chance to have a chat with the judges)? 4a) Does it currently anticipate matches in which only 2 teams comprise an alliance, or in which more than 3 teams ally? 4b) In a long shot I'll ask if it anticipates matches comprised of more than 2 alliances? 5a) Are the results deterministic (same input always yields the same outputs)? 5b) If the results are deterministic, unless one wants to do some of the iterative activites I mentioned in questions #1 and #2, why pass out the results of this work as a black-box algorithm? Instead just run it for a large-enough number of matches (25 or so) for each possible number of teams from 6 to N (N would be 100 or so); and then just publish the resulting schedules. Those schedules can be analyzed by people and the people can adjust them to fix any glitches that survived the annealing. 6) Does the implementation allow us to vary the importance of each of the five constraints you listed in your request? 7a) Does the algorithm search forever (until a user spec'ed time limit is reached) for a globally optimal schedule, and in that search recognize when it finds a globally optimal one? If we run it for a long time do we get a better answer? 7b) When searching for an optimal schedule, if the algorithm gets stuck on a locally optimal one, does it recognize that situation and then tunnel over to some new part of the search space to look for the globally optimal one? 8) During the annealing, when evaluating whether a match should be changed, are the five criteria you listed applied in a sequence of decisions or are they the basis for a metric (aX + bY+ cZ +... = evaluation) that is compared to a threshold or is compared to the other matches' evaluations? 9) Does the algorithm insure that when teams face repeat opponents (let's say that everyone has faced everyone else already, and teams have to start facing repeat opponents), does it ensure that the team is not facing the same alliance in which it encountered those opponents the first time around? What about avoiding making a team face alliances that contain pairs of teams that were paired when the team faced them in an earlier match? MM and I started on some similar algorithmic work earlier this year (http://www.chiefdelphi.com/forums/sh...4&postcount=42) (http://www.chiefdelphi.com/forums/sh...7&postcount=40) (http://www.chiefdelphi.com/forums/sh...9&postcount=43) and the constraints I set for myself are listed below (I have some preliminary results for two algorithms for 2-team FTC alliances). I think that the constraints net out to be identical (or nearly so) to the five constraints you set out above; but some implementation differences might show up in the resulting schedules. That is one reason why I asked question 8 above. Near term
Blake PS: I'm jealous :) of the folks who put together the simulated annealing, that is one of the many fun/hobby projects I have taken a bite out of in the past, but have not finished. I want to write my own routine that will rearrange graphs of connected nodes in order to minimize the greatest distance between any two connected nodes (or perhaps minimize the average of the lengths of the links connecting the nodes, or....) when the graph is projected onto a plane. |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
So, teams, would having more time between matches be worth giving up one round of matches at smaller events? Of course with this scheduling, we'd have to reign in us FTAs and Field Managers - whose natural tendency is to drive the teams and field reset crews with whips cracking, to minimize match turnaround time... |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
|
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
I'll attempt to answer the ones that I know from playing with the program and general knowledge of simulated annealing. In some cases the implementation that was provided doesn't have a particular option, but it seems that it would be trivial to add. Quote:
As a small team, having the option to have a longer break where we could guarantee that there are people to talk to the judges would be great. I'm not sure I've ever seen someone suggest this, but I think it is definitely something that FIRST should consider. Quote:
Quote:
Quote:
Quote:
|
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
So, I'm guessing that either this code has multiple threads that are racing one another, or that it explicitly includes pseudorandom operations as part of its use of simulated annealing methods. I don't think (however, my recollection could certainly be fuzzy...) that non-deterministic results are inherently a part of simulated annealing. Regardless, I definitely thank you for the bottom line answer - Given identical inputs, separate invocations of this software will produce results that are likely to differ. Thanks for that and the other answers! Blake |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
|
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
|
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
Just randomize the assignment of actual teams to the hypothetical teams in the approrpiately-sized, precomputed schedule each time an event's staff knows the final team list for the event. I think doing this would be "best for FIRST" because teams could come to events already knowing the pattern in each pre-computed schedule and could fill in the actual team assignments quickly once the event staff announces them. That would mean that teams could create elegant tools for scouting and related matters, and could use them at events without having to waste time punching a jilliion numbers (the match pairings) into them at the events. I think doing this would be best for FIRST because it would eliminate the need to be able to execute a program to create match schedules. Instead anyone with a text editor and a printer could produce a fine schedule quickly. A simple, optional, runs-almost-anywhere, Java program could make the process nearly painless, would be more portable than a .net program, and would ice the cake. Blake PS: Maybe you were asked to evaluate the statistics of a simulated annealer's outputs; but I don't recall seeing that question posted here. Scheduling approaches exist that are deterministic, and given that I prefer them (for the reasons given above), I hope you can better understand my line of questioning. PPS: I'm not sure that the current algorithm satisfies the criteria Mark listed. It does minimize and maximize appropriate features of the schedules it produces; but I don't think that we can claim yet that it produces schedules that exhibit the minimum and maximum values of those features (requested in Mark's criteria). We might be able to come up with a set of deterministic heuristics that do produce true minimum numbers of repeats, etc. MM and I are already reasonably close (but can not guarantee success) for the 2-teams-per-alliance version of the problem. |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
It appears my recollection was rather fuzzy, and at the same time a bit correct. In general, folks using the term "simulated annealing", almost always are referring to both the metric simulated annealers use to evaluate candidate solutions and the typical pseudo-random searching process used to generate those candidate solutions. On the other hand, it is only that metric, and not the searching process, that gives the method its name. Using a pseudo-random exploration of the search space is just one way to explore it. However, by doing the suggested reading I was reminded that using a deterministic heuristic to generate candidate solutions would be a very rare thing to combine with a simulated annealing metric. Thanks. I think I was wise to insert the "fuzzy recollection" escape hatch into my earlier post. ;) Blake |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
http://www.issaquahrobotics.org/MatchMaker/ This is the article that describes the general algorithm used: http://grids.ucs.indiana.edu/courses/xinformatics/Scientific%20American%20Analysis%20Algorithm%20of% 20the%20Gods%20March%201997.htm Most of the questions have been answered correctly. I'll just answer the ones not already covered. Quote:
Quote:
Quote:
The minimum number of matches between each team's successive matches is a fixed rule, no schedule that breaks that rule is even considered. The minimum number of surrogate teams is just a matter of structuring the match so that only one match at the end has surrogate teams to fill in any odd slots for the last team getting their last match. The red/blue balancing is done after the schedule is computed by swapping red/blue sides, so it has no effect on the other criteria. The only criteria that play against each other is avoiding duplicate opponents and avoiding duplicate partners. Slightly extra weight is given to avoiding duplicate partners. Quote:
Quote:
Quote:
Quote:
|
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
I couldn't figure out a way to get the latest version of Visual Studio to produce an executable that doesn't require the very latest version of the C runtime libraries. That's a problem with VC, not an inherent dependency of the program. It's pretty easy to generate the schedule with our program: just give it the list of team numbers in a text file, hit enter, and wait a few seconds or a minute for the schedule to pop out. It you don't like that one, do it again. |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
1 Attachment(s)
I used the program to generate schedules with a variety of parameters... 12 to 144 teams playing 7 to 10 rounds with minimum match separation between 1 and the maximum possible separation. Each of these nearly 6700 schedules was made using the "fair" setting, but only for lack of processing power. I then used a variety of tools to aggregated the data into a spreadsheet.
Interesting trends I noticed: -The program was able to produce optimal schedules whenever the match separation was at least 5 less than the maximum possible separation. It usually produced optimal schedules when the minimum separation was 4 less then the maximum. -The program created the worst schedules when team size was a multiple of 6. I have attached the aggregated raw data spreadsheets. If anyone is interested in the entire data set, contact me with a way to receive a large file, and I'll give it to you. ~Phil |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
Quote:
Quote:
|
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
~Phil |
Re: **FIRST EMAIL**/Updated Alliance Pairing Algorithm
Quote:
|
| All times are GMT -5. The time now is 17:09. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi