[My personal web site]


Thoughts on creating random matrix assignments for sail race heats

Recently I was asked to be the RD for the AMYA Region 5 Seawind Champtionships. It caused be to revisit a computer program I created 10 years ago when I was the RD for the AMYA 36/600 Championships, in which we had 24 boats with several of the top skippers in the country and used what I would call a "filter" random system of heat assignment.

For the regionals I used a modified “odd&even” heat assignment system, that can be prepared in advanced; it is not necessary to "wait" until the end of races, all during the regatta, to determine heat placement. But there seems to be a great deal of confusion about heat placement so I thought I would make an attempt to clarify it.

It starts with the conclusion that at some point, we have too many skippers racing in the same race and we need to split it into parts. There are several alternatives:

1. You could have separate races, with what one predetermines are the "good skippers" in one set of races and everyone else in a totally separate set races that do not interact.

You could have separate sub-heats, for a series of races, that interreact with each other in any number of ways. There are two basic types of such systems:

A. A system in which one's performance on "race day" has a dominant influence in how you are assigned in each group of heats constituting "one race". Promotion-Relegation is one form of such a system. There are others. Incidentally, there is an extensive section of the Winter 2004 issue of Model Yachting, that describes several systems.

B. What could be basically described as "random system" that tries to divorce themselves from making a distinction between "good skippers" and the rest of the skippers, and treat each other equally.

It is not my purpose, to deal with how you make the above decisions. There are many very rational reasons to choose any of the above paths.

What I will try to do, is to deal with alternative B,

First of all, using the term "random" is, to my mind, an incomplete description of what probably are the universal goals we seek in such a system. It is used primarily to simply differentiate it from race day performance based systems, which admittedly are not random. What we are really seeking is an "equal" and fair distribution of the various criterion that result from a random assignment in the following areas, particularly:

a) The obvious, that each heat has the same number of boats.
b) Equally experiencing sitting out one race, sitting out two races in a row, and racing two successive races. [INHERENT TO ANY HEAT SYSTEM}
c) Each skipper racing against each other skipper the same number of times, Hopefully spread out over the regatta. That is you don't race a skipper many times in a row and never see them again.
d) As Mr. Steve Lang noted in his article, in the above referred to issue of Model Yachting, one problem of the "Odd& Even" system he describes is that you can't determine who is in what race until all heats in a particular race have been completed. It is desirable to have a pre-regatta determination of the heat matrix, and perfectly possible.
e) It is always possible that one or more skippers will drop out at some point in the regatta and indeed, if one allows "last minute registrations" skippers added, at the last minute. Therefore it is desirable that any preregatta determination of heat placement, so it is available to skippers well ahead of each race; be able to relatively easily adjust to such changes; so at least, in one particular, "a)" above, the number of boats in each heat, are as even as they can be, which is again, quite possible.

The AMYA guidelines on regatta procedure set forth that a matrix type of system, in fact, BE RANDOM. They also suggest that the person creating the matrix, SHOULD NOT BE ABLE TO DETERMINE WHO IS IN ANY PARTICULAR HEAT. Unfortunately, that is a real problem with the "odd/even" system. It is not a random system, unless you are willing to conclude that the next time you come in first, that it was a "random event".

In fact, it is each skipper that creates the race matrix by the place in which they finish. The idea is perhaps, that yes although whether you finish high or low in a race, is in large part not a random occurrence, whether it happens to be an even or odd number is random. That is only partially true. First and last place are not random occurrences usually. More importantly however, since skippers by their finish determine what heat they are in......One could specifically determine which heat they were in, in the next race, by simply staying where they are as they begin to finish, OR TO DELIBERATELY DROP BACK A POSITION. That would not be random, in any sense of the word.

However, back to the concept of "randomness". Actually, we do NOT WANT "PURE" RANDOMNESS. That is very undesirable. What we want, is what I would call "filtered randomness". Why?

As we all know, that are familiar with gambling; the roulette wheel, or dice are pure random producing machines. But we also know that they can result in the same number being created MANY TIMES IN A ROW. In fact over a few number of rolls, the chances of a "pure random machine" actually producing an equal distribution are NIL. Over many rolls it does even out

When we produce a matrix, we are always dealing with a very small sample segment of a series of random occurrences. And if you simply assigned skippers in a pure random fashion, ie: for example, using a deck of cards as a random generator, where the heat selection for the last boat to be determined had an equal chance of being in one heat as the other……those that drew a red card would be in heat 1 and those who drew a black card would be in heat 2, It is quite likely that the heats would not be even.

But what if I "filter" the process a bit, so that it is no longer "a pure random system"? If there are twenty skippers to race and if I select from a deck of cards 10 that are red and 10 that are black. Then shuffle that "filtered" deck and use it to make heat assignments…….then it results in an equal number of boats in each heat. You can repeat that process for however many races you are running, and you would produce a randomly made matrix, except that it would be limited to and equal number of boats in each heat. And it can be done ahead of time; thus avoiding the problem with the "odd/even" system.

But what about the other criterion we would "prefer" to have in any matrix? Can I "filter" the deck to make them have the "equality" we seek? The answer is mathematically clear. It just isn't possible to make any of the other desirable criterion equal. There just aren't enough slots in any matrix, to provide for all the combinations that such equality would take.

So what can I do? Well let's go back to determining ONLY THE HEAT PLACEMENT AS ABOVE. Let's assume taking cards from the deck were not possible, I had to use the whole deck. Is there anything I could do? With a computer that all of us have, these days, the answer is yes. Simply have the computer deal the top twenty cards from a shuffled deck AND assign them to the skipper's list. AND KEEP TRACK OF HOW MANY BOATS ARE IN ONE HEAT AND IN THE OTHER. Then simply add the following filter. If the number of boats in the heats are not equal, then reshuffle and do it again and keep doing it again until you finally have an equal number of boats in each heat. Then stop and print the results. It won't take long, .

Unfortunately, with the other criterion, if you created filters that demanded that they also be equal or reset and try again, what you would find is that, as we mentioned above, it would never stop because such is not possible.

So now what do we do? Nothing? No. You back off from total equality for each criterion, either one at a time, or more if you like and simply change the filters to "not less than" and "not more than" Let the computer run. If after a while it doesn't stop and print, then you have to go back and widen the spread of the limits" Then try again. Finally, the computer will stop and print a matrix within the limits you set.

What have we accomplished? We have a matrix THAT IS AS RANDOM AS IT CAN BE, when all the criterion are considered. Most skippers will sail against most other skippers a reasonable number of times together, even it not "perfectly equal", for example. And what it will prevent, which you can easily get if you "track" a pure random system; that one skipper seldom and perhaps never races against some other skipper. Or one skipper mostly has only one race to sit out; whereas some other skipper finds themselves either sitting out two or almost always racing in two successive heats.

Those kinds of really negative results are not necessary. Much of the extremes can be filter out.

And of course, you do not need to reprogram your computer, each time it can't find a "fit". You simply start out with the limits set close enough that they are not possible and then have the computer automatically increment the limits after a reasonable number of cycles that do not fit. First in one criterion and then in the next, etc.

The final step then is to prepare a card for each skipper that you can give him, before any races start, that list each race and the heat that they are in. This is particularly useful, in terms of knowing in advance when you will sit out two heats in a row, that allows considerably more free time in which you can do any of many things that having significant time to do them allows. Like going to the bathroom! Which allows races to be run continuously without a periodic “break.”

Once you have arrived at a satisfactory matrix, then of course, you can use it over and over. And you can make several, each with a different number of likely skippers.

Which brings up the final consideration: HOW DO YOU DEAL WITH LAST MINUTE CHANGES, in your beautiful preplan?

FIRST: This is a problem ALL MULTIPLE HEATS SYSTEMS HAVE, NONE ARE EXEMPT. Even the "odd/even system" where you redetermine the mattrix after each set of heats constituting a race. If two boats drop out and both just happen to finish in the same "odd" or "even" catagory of finishes; then you are going to have to make an arbitrary shifting of one the remaining boats from the other heat into the one the two boats dropped out of.

I like to have a set of skipper cards available that are for two less skippers than I anticipate and a set for 2 more. That takes care of what happens in the beginning and insures that the with the additions or subtractions of “no shows” , we have the best matrix possible.

Later in the race, if it happens, then the practical way is to say at that point, well, we just can't do what we want and we will have to put up with a bit more "inequality" than we might otherwise have to. Before the regatta starts, the computer can print out a listing of the sail numbers that have been assigned to each heat of each race. It doesn't take but a couple of minutes to scan the list for the two sail numbers that dropped. In many cases they will have been assigned to opposite heats so nothing need be done. When they are not, then you simply make an arbitrary change in the heat assignment of some other skipper. Since they were randomly assigned in the first place, putting them in the other heat, is just as "random". True, if you were to look at a track of all the criterion under your just modify remaining races, you may well exceed the limits of a criterion, you would rather have, and could have, if you wanted to stop everything for a while and have the computer come up with a new matrix, within limits. But since the limits, are wider than we would like, but can't have anyway, perhaps it's not really important, that under the circumstances they got "a little wider". What we really wanted all along, was to primarily eliminate the unnecessary wide limits that blindly using a "pure random system" can create.

I am in the process of reworking the computer program I used 10 years ago in the 24 skipper, 2 day 36/600 Nationals I ran, both as Regatta Director and Race Director, for the WVRCM, at which several of the top r/c skippers in the country attended; At the time, I reset the limits manually, until I got a matrix that looked reasonable. When I get it in a form, that you do not have to go into the program itself, to set limits, but can do so through an input cycle and to print the matrix information and skipper cards; I would be happy to make it available to you. Or if you have any questions, feel free to email me at rowland2@lycos.com.