The Relay Model

The club put together a team to participate in "The Relay" over the weekend of April 8/9 2006. You can read more about this on click here.

In planning our efforts, there were reasonable questions being asked by different members of the team such as:

  1. "When will they finish?" (families of runners)
  2. "When do we get to change-over X?" (the runners)
  3. "When will the team get here?" (the crash floor providors)
  4. "How can I quickly get the on the web?" (webmaster)

And of course, the answer to these and other questions is of course with “The Relay Model". Eh? It’s a Perl Script and you can download it (address below).

Now before you instantly go to your email systems and flame me about Perl, I refuse to enter any religious wars about the relative merits of different Scripting Languages. I used Perl because I like it. You use the tools you prefer and I'll be happy to publish your script on stevenscreekstriders.org Don't forget this article is about running, not software.

Every runner in "The Relay" is expected to register individually for their team. I guess the purpose of this is to ensure that everybody has ticked the box to say they've read and agree to the indemnity, however other useful information is also recorded during registration. The most useful metric in this context is the pace/mile for the athlete. I think most of us just guess because we don't know the course, terrain, the weather, the surface, the effect of tiring, the effect of running at night and so on. So remembering that every leg is around 10k, I think most of us add 15-30 seconds/mile to our current form for the 10K and put that into the box.

And that's what the model uses for starting data. Then the model has factors for time of day and terrain. Every leg of "The Relay" is rated "Easy", "Moderate", "Hard" or "Very Hard". I reckon that deals with terrain and so the model has a variable $hard which accounts for this. I used the following:

     $hard   = 0.95 if $effort eq "E"  ;
     $hard   = 1.0  if $effort eq "M"  ;
     $hard   = 1.1  if $effort eq "H"  ;
     $hard   = 1.2  if $effort eq "VH" ;
Now what about tiring? Well, model uses variable $tiring:
     $tiring = 0.97 if $leg == 1       ;
     $tiring = 1.00 if $leg == 2       ;
     $tiring = 1.02 if $leg == 3       ;
So, it says - you'll run faster than you think on Saturday, about what your pace during the night, and you'll be slowest on Sunday. Sounds reasonable? I think so. So what does the model do? Well it applies all this stuff and predicted our progress as follows:
Runner     Start  Pace  Dist Run Fins Actual Error
           Clock /mile  mile minClock Clock
Elvira     12:00  8.29  4.80 39 12:39 12:38  +1
Cindy      12:39  9.21  4.70 43 13:23 13:23  +-
Bill       13:23  7.37  4.10 30 13:53 13:54  -1
John       13:53  6.30  7.40 46 14:40 14:42  -2
Peggy      14:40  7.83  5.00 39 15:19 15:24  -5
Dennis     15:19  7.39  4.50 33 15:52 15:56  -4
-------------------------------------------
Robin      15:52  7.76  6.90 53 16:45 16:53  -8
Steve      16:45  8.73  7.40 64 17:50 18:07 -17
Larry      17:50  9.21  5.60 51 18:42 19:00 -18
Patrick    18:42  8.73  8.90 77 19:59 20:10 -11
Jim        19:59  8.00  7.10 56 20:56 21:03  -7
Gerardo    20:56  8.54  4.80 40 21:37 21:43  -6

Elvira     21:37  9.00  6.00 54 22:31 22:33  -2
Cindy      22:31 11.00  5.00 55 23:26 23:25  +1
Bill       23:26  8.80  6.50 57 00:23 00:19  +4
John       00:23  6.17  5.30 32 00:56 00:54  +2
Peggy      00:56  8.08  4.90 39 01:36 01:34  +2
Dennis     01:36  8.82  5.80 51 02:27 02:22  +5
-------------------------------------------
Robin      02:27  8.80  7.00 61 03:28 03:23  +5
Steve      03:28  9.90  5.90 58 04:27 04:31  +4
Larry      04:27 10.00  6.50 65 05:32 05:38  +6
Patrick    05:32  7.12  4.20 29 06:02 06:07  +5
Jim        06:02  7.12  3.70 26 06:28 06:33  +5
Gerardo    06:28  8.00  5.90 47 07:15 07:23 +12

Elvira     07:15  8.72  5.50 47 08:03 08:06  +3 
Cindy      08:03  9.69  4.20 40 08:44 08:51  +7
Bill       08:44  7.75  5.60 43 09:27 09:39 +12
John       09:27  7.29  5.10 37 10:05 10:17 +12
Peggy      10:05 10.40  3.00 31 10:36 10:46 +10
Dennis     10:36  9.81  3.10 30 11:06 11:17 +11
-------------------------------------------
Robin      11:06  8.16  6.20 50 11:57 12:00  +3
Steve      11:57  8.72  4.70 40 12:38 12:46  +8
Larry      12:38  9.69  6.30 61 13:39 13:46  +7
Patrick    13:39  9.18  6.20 56 14:36 14:32  +4
Jim        14:36  8.42  6.50 54 15:30 15:20 +10
Gerardo    15:30  7.75  4.70 36 16:07 15:58 +11

I think you'll agree, this is good. It predicted our finish within 11 minutes - and every handover with the same accuracy. Even in "mid-flight" the maximum difference was 18 minutes.

And what else does the model do? Well it also analyses actual performance and calculates actual runner pace/mile with their estimate before the event. I will boast that my estimate of 8.00 mins/mile was the most acurate of the 12. Run the code if you want to see how the others did.

Another feature of the model is to use a "linear" model. This doesn't bother to factor in tiring or hardness. That model also works well and predicted our finish within 20 minutes.

And lastly, converting the model data into HTML for publication on the web is tedious to say the least. So the model as a variable $bHTML to say "report in HTML - which automates this task.

Code available from: TheRelay.txt

Robin (Relay Captain, Webmaster and model bore)

 
Running Club
Cupertino, California