Today in my computer science course we learned about sorting algorithms (insertion sort, merge sort, etc). These are methods of sorting a list of values using some comparison operation (using < or >).
The whole idea of making a pick list is essentially to sort a list of teams in order of desirability. It occurred to me that these algorithms could possibly be applied to making this list. Does anyone have any experience applying a computational sorting algorithm for this, or any other thoughts on how well it would work?
The trick with creating a pick list isn’t in sorting the teams - it’s in giving each of them a numerical value. Find a way to give each team a value, then you can use whatever sorting function you want to order them. The easiest way is to just stick it in excel and let it sort them for you.
Ideally, you’d create multiple lists - using this past list as an example, you might create a list of landfill-bots, a list of human station bots, a list of bots that are good at scoring cans, a list of canburgler bots… Then figure out your strategy and what is going to benefit you the most and pick the top team off that list. Or the top team that represents a combination of two or more of those lists. It can get complicated, but the difficulty isn’t in sorting the numbers.
Generally, sorting algorithms such as merge sort, heap sort, or bogo sort, exist as a method of sorting; All of them will give you the same list at the end given the same input. The real challenge is figuring a good metric to sort by. A good mix of objective and subjective data usually gives great results, especially if sorted manually.
EDIT: Ether pointed out that different sorting algorithms may give different outputs if your data set has elements with the same key.
There’s a difference between ordinal and cardinal ranking. Ordinal means that your teams are ranked, in order. Cardinal means that your teams are ranked, in order, by a value associated with each team (points scored, OPR, etc). You don’t need to know how many points each team scores to make an ordinal ranking, just which teams are better than which other teams.
For picklisting, creating an ordinal ranking is functionally identical to cardinal if you don’t have to worry about whether or not you want to decline.
For elims strategizing, it’s nice to know the cardinality of each team so you can sum your sort values (like average points scored) for each alliance to know what you’re up against.
@OP I usually do a cardinal ranking sort for these reasons. Like Jon said, Excel works great for sorting if you have the scout data to determine the cardinality of each team.
We’ve developed a system that 1) creates cardinal rankings for qualitative assessments of robots using the transitive property and 2) combining those qualitative rankings with quantitative rankings to generate pick lists. We have different pick lists for our 1st and 2nd picks. Some of this is covered in our scouting white papers posted on Chief Delphi. We’ll be posting workshop videos in the next few weeks that cover this in more detail.
Since you are dealing with a relatively small number of teams, using a sorting algorithm won’t help you speed up your sorting of your list. Humans are very good at just placing an item in the correct spot, and we are much less good at following algorithm instructions. As others have said, they hard part of pick ordering is just choosing who is better than who - not sorting them once that has taken place.
It should be worth noting that not every team’s rank preference will be the same. For example in 2014, you’d want 4 potential lists - All-Around, Finishers, Trusser and Inbound/Assister’s. Once your team decides what role your robot will fill, it’s a matter of finding the best robot for the other roles (and sometimes splitting up other alliances).
In 2015 there could be lists for All-around, Tote stackers, stack cappers and RC grabbers. Again - it all depends on your role and what roles the robots at the events have chosen to fill. Cheesecake throws a wildcard into the whole thing though :rolleyes:.
The bottom line (as hinted and presented several places above) is that with the small number of teams at an event (or CMP division), sorting on any reasonable number of criteria is going to be essentially instantaneous on a decent laptop. (That is, for less than 100 items to be sorted, don’t sweat the “big O”; simple sort algorithms are good enough).
The key is to decide which team attributes are most important, and how they rank relative to one another. Picking according to a team rubric is a “safe” course; no one will ask why you went that way. But if your gut and your spreadsheet give you different answers, my best advice is to make sure you understand **why **your spreadsheet gave the answer it did, and determine for yourself whether your gut instinct is better, and if so, why. If you pick right, you’ll probably be considered a prodigy or genius, but if you pick wrong, it’s essential that you be able to clearly communicate to your team mates why you overrode “team wisdom”.