{"id":640,"date":"2016-07-15T20:59:20","date_gmt":"2016-07-16T00:59:20","guid":{"rendered":"http:\/\/www.tjkopena.com\/blogs\/outdoors\/?p=640"},"modified":"2018-03-07T02:02:33","modified_gmt":"2018-03-07T07:02:33","slug":"should-froome-run","status":"publish","type":"post","link":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/2016\/07\/should-froome-run\/","title":{"rendered":"Should Froome Run?"},"content":{"rendered":"<p>Yesterday, Tour de France yellow jersey bearer Chris Froome was caught up in a crash approaching the end of\u00a0the monstrous finishing climb up Ventoux caused by the congestion of spectators. His bike broken but with no team or neutral support car in sight, he started running up the hill.<\/p>\n<p>Let&#8217;s set aside all questions of whether it matters or not that Froome broke a rule (<a href=\"http:\/\/www.uci.ch\/...\/16\/26\/68\/12-DIS-20160101-E_English.pdf\">UCI 12.12.14<\/a>: Attempt to be placed without having covered the entire course by bicycle), and the more important\u00a0question of why don&#8217;t the ASO and UCI do more to ensure safe and fair courses. Here&#8217;s a much\u00a0smaller\u00a0but still interesting question:\u00a0Did it\u00a0make sense for Froome to start running?<\/p>\n<p>I would argue that it doesn&#8217;t make sense from the perspective that\u00a0he took a big risk on slipping &amp; falling, twisting an ankle, or any number of other problems by running in his cleats. But, purely from a time perspective, did it make sense?<\/p>\n<p>That turns out to be not as obvious as it might seem. A smart friend who&#8217;s an\u00a0experienced racer &amp;\u00a0official made the reasonable point that you want the support car to catch up to you as quickly as possible. Being on a bike is much faster than being on foot, so\u00a0running away from the car and prolonging the time it takes to get a new bike doesn&#8217;t make sense.<\/p>\n<p>My argument was that if the car is blocked from getting to you quickly, you should continue moving forward. Once it clears any slowdown, i.e., the crash site, its speed will dwarf the distance you&#8217;ve gained, so you won&#8217;t be penalized by running from it. Therefore, in the interim, while the car is slowed or blocked, you should gain what ground you can. Otherwise you&#8217;d just have to cover that distance anyway, but after standing around waiting\u00a0and wasting time.<\/p>\n<h2>Model<\/h2>\n<p>To investigate I wrote a simple simulation. The model works\u00a0as follows.<\/p>\n<figure id=\"attachment_643\" aria-describedby=\"caption-attachment-643\" style=\"width: 599px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-643\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step0.png\" alt=\"Scenario at T0.\" width=\"599\" height=\"138\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step0.png 599w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step0-300x69.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><figcaption id=\"caption-attachment-643\" class=\"wp-caption-text\">Scenario at T0.<\/figcaption><\/figure>\n<p>At time zero the racer\u00a0starts running or waiting patiently at distance zero, the crash site, while the support car is some distance behind.<\/p>\n<figure id=\"attachment_644\" aria-describedby=\"caption-attachment-644\" style=\"width: 599px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-644\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step1.png\" alt=\"The car passes the crash site and starts moving at its full speed.\" width=\"599\" height=\"138\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step1.png 599w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step1-300x69.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><figcaption id=\"caption-attachment-644\" class=\"wp-caption-text\">The car passes the crash site and starts moving at its full speed.<\/figcaption><\/figure>\n<p>The car moves at its blocked rate until it passes the crash site, at which point it starts moving at its free rate. The racer meanwhile moves at their running rate.<\/p>\n<figure id=\"attachment_645\" aria-describedby=\"caption-attachment-645\" style=\"width: 599px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-645\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step2.png\" alt=\"The car catches the racer and gives them a new bike.\" width=\"599\" height=\"138\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step2.png 599w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step2-300x69.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><figcaption id=\"caption-attachment-645\" class=\"wp-caption-text\">The car catches the racer and gives them a new bike.<\/figcaption><\/figure>\n<p>Eventually the car catches up to the racer, who then switches to their new bike and a faster rate\u00a0of travel.<\/p>\n<figure id=\"attachment_646\" aria-describedby=\"caption-attachment-646\" style=\"width: 599px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-646\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step3.png\" alt=\"The finish!\" width=\"599\" height=\"138\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step3.png 599w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/step3-300x69.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><figcaption id=\"caption-attachment-646\" class=\"wp-caption-text\">The finish!<\/figcaption><\/figure>\n<p>The racer then eventually\u00a0pedals on to the finish some distance ahead.<\/p>\n<h2>Simulation<\/h2>\n<p>A program implementing that model is very simple. I wrote one in Go:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-663\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_18-18-20.png\" alt=\"Screenshot_2016-07-15_18-18-20\" width=\"500\" height=\"541\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_18-18-20.png 500w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_18-18-20-277x300.png 277w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>You can play with it yourself in your browser using <a href=\"https:\/\/play.golang.org\/p\/Q67POl73DL\">this link<\/a>. Hit the Run button up top, and in a moment the output will show up at the bottom of the screen. You can change the scenario by altering the parameters starting on line 17:<\/p>\n<ul>\n<li><em>goaldistance:<\/em> How far the crash is from the finish line;<\/li>\n<li><em>runrate:<\/em> How fast the racer can run;<\/li>\n<li><em>bikerate:<\/em> How fast the racer can bike;<\/li>\n<li><em>carstart:<\/em> How far behind the support car is when the crash happens;<\/li>\n<li><em>blockedrate:<\/em> How fast the car goes until it passes the crash site;<\/li>\n<li><em>freerate:<\/em> How fast the car goes after passing the crash site.<\/li>\n<\/ul>\n<p>Whether you use miles or kilometers for the parameters shouldn&#8217;t matter as long as you consistently use the same units for all of them.<\/p>\n<h2>Investigation<\/h2>\n<p>The default settings in <a href=\"https:\/\/play.golang.org\/p\/Q67POl73DL\">the script<\/a> seem\u00a0like reasonable approximations of\u00a0the Ventoux scenario or something similar:<\/p>\n<ul>\n<li>The finish is 1km away;<\/li>\n<li>The racer can run at 4mph and bike at 12mph (I believe these guys are generally going\u00a012&#8211;14mph on Ventoux);<\/li>\n<li>The car starts only 1\/16 of a mile behind (~100 meters, .0625 miles) and can move 16 mph while blocked and 20 mph afterward.<\/li>\n<\/ul>\n<p>The simulation reports the rider will finish in 3:18.03 minutes. That makes sense: The car gets to them very quickly, so they do nearly all the route at their cycling pace of 12mph, which would take 3:06 minutes. But, changing their running rate to 0 to reflect not running and waiting for the car, they take 3:20.38 minutes to finish. Therefore they should run, and that bears up if they run a little slower (2mph:\u00a03:19.33) or faster (6mph:\u00a03:16.36).<\/p>\n<p>Obviously those aren&#8217;t huge gains, but this is a sport where seconds matter quite a lot. Those default\u00a0parameters are also arguably\u00a0friendly toward the not running hypothesis.\u00a0Watching the clip, I could believe Froome is running\u00a0better than 4mph (a brisk walk). I also doubt the vehicles can do 20mph in that heavy congestion even after the crash.<\/p>\n<p>Importantly to the final time, no\u00a0support cars\u00a0are anywhere\u00a0in sight. There are clips of Froome definitely running for a solid 30 seconds before one arrives, and the video cameras seem to have missed the start of his run.\u00a0So, plugging some numbers in to get a ~30&#8211;40s catch time, if he did\u00a04mph\u00a0on foot and the car did\u00a012mph and then 16mph, it would have\u00a0started just under\u00a01\/8 mile back (200 meters, the length of a good sprint), which seems plausible.<\/p>\n<p>Froome himself said in interviews later that he\u00a0believed his team car to be a whole 5 minutes away.\u00a0At those same speeds, a car half a mile back would take 2.5 minutes to reach him if he didn&#8217;t run, which fits his\u00a0very rough estimate\u00a0of it being minutes away. After waiting for the car, he&#8217;d finish in a total of\u00a05:09.70. \u00a0If he ran just 4mph though until caught, he&#8217;d finish in 5:02.56, definitely worth it.<\/p>\n<h2>Analysis<\/h2>\n<p>Trying to look at the question\u00a0a bit more systematically, I had the script vary over some reasonable parameters:<\/p>\n<ul>\n<li>goaldistance:\u00a01km, 2km, 3km, 5km, 10km<\/li>\n<li>carstart: -1\/16 mile, -1\/8 mile, -1\/4 mile, -1\/2 mile<\/li>\n<li>blockedrate: 4, 8, 12, 16<\/li>\n<li>freerate: 8, 12, 16, 20<\/li>\n<li>bikerate: 8, 12, 16<\/li>\n<\/ul>\n<p>Among\u00a0those combinations\u00a0I discarded instances where the freerate was less than the blockedrate or the bikerate, under the very reasonable assumptions that the car does not go slower after passing the crash, and\u00a0after the crash goes at least as fast as the rider\u00a0(the latter constraint actually posited\u00a0by my running-skeptical friend).\u00a0For each combination then I evaluated the racer running at 0mph (reflecting waiting for the car), 2mph, 4mph, and 6mph.<\/p>\n<p>That tabulation is available in <a href=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/ventoux-analysis.xls\">this spreadsheet<\/a>. The upshot\u00a0is that at each running speed it makes sense to run in ~72%\u00a0of the scenarios.<\/p>\n<p>Glancing through the spreadsheet the pattern is pretty clear, and a quick formula confirms: Strictly in terms of time and under this abstracted model, the only cases in which\u00a0it makes sense to stay put is when you can bike at least as fast as the car can\u00a0go at its full speed. Remember that cases\u00a0where the racer can bike\u00a0faster than the car have been discarded from the spreadsheet, but in those unusual circumstances\u00a0it also makes sense to stay put.<\/p>\n<figure id=\"attachment_667\" aria-describedby=\"caption-attachment-667\" style=\"width: 989px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-667\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_20-02-23.png\" alt=\"Outcomes.\" width=\"989\" height=\"768\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_20-02-23.png 989w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_20-02-23-300x233.png 300w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_20-02-23-768x596.png 768w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/Screenshot_2016-07-15_20-02-23-800x621.png 800w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption id=\"caption-attachment-667\" class=\"wp-caption-text\">Outcomes.<\/figcaption><\/figure>\n<h2>Physics<\/h2>\n<p>We as\u00a0humans naturally focus on the rider, but the\u00a0best way to think about this is in terms of the bike.\u00a0Its progress is what controls the overall time required\u00a0to finish the race. Going\u00a0back to our model, its progress has\u00a0three components:<\/p>\n<ul>\n<li>Interval A from where the support car starts\u00a0to the crash site;<\/li>\n<li>Interval B from the crash site to wherever the car\u00a0catches the\u00a0rider;<\/li>\n<li>Interval C from the catch point\u00a0to the finish.<\/li>\n<\/ul>\n<figure id=\"attachment_686\" aria-describedby=\"caption-attachment-686\" style=\"width: 599px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-686\" src=\"http:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/intervals.png\" alt=\"The three intervals through which the bike proceeds.\" width=\"599\" height=\"138\" srcset=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/intervals.png 599w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/intervals-300x69.png 300w, https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-content\/uploads\/2016\/07\/intervals-60x14.png 60w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><figcaption id=\"caption-attachment-686\" class=\"wp-caption-text\">The three intervals through which the bike proceeds.<\/figcaption><\/figure>\n<p>The easiest case to see this is when the rider can go the same speed as the car. In that case\u00a0it doesn&#8217;t matter if the bike is\u00a0moved by the rider or car, so the rider may as well stay put at the crash site.<\/p>\n<p>In the rare situation\u00a0when the rider can go faster than the car, you want to\u00a0maximize the length of Interval C and minimize Interval B because the former progresses faster. So then it also makes sense for the rider to stay put.<\/p>\n<p>Conversely, if the rider is slower, you want to minimize Interval C and maximize Interval B, so that the bike covers the most ground at the best rate. The only mechanism available to do this however is\u00a0for the rider to advance during Intervals A &amp; B, when the bike has to be with the car. So in this\u00a0common case, it makes sense for the rider to run. Now, the time spent traversing Interval A has nothing to do with the rider, it&#8217;s completely determined by carstart\/blockedrate. The\u00a0rider may not be able to get very far in that interval. But it&#8217;s still increasing the amount of distance traveled at the best rate, Interval B, so formally speaking it&#8217;s going to be faster to run, even if only marginally.\u00a0Note that none of this depends qualitatively\u00a0on how slow the blockage is. You should always run. The only thing the blocked\u00a0rate\u00a0affects is how much benefit there is from running, not whether or not there is a benefit.<\/p>\n<p>Unfortunately\u00a0my numerical analytical modeling is embarrassingly\u00a0rusty so I haven&#8217;t been able to put together in short order the equations formalizing that. But a related graphical way to think about it is in terms of a plot of the bike&#8217;s distance over time.\u00a0It has three segments, corresponding to Intervals A, B, and C. Interval B has the greatest slope, so you want it to be the longest segment by time. The only way to make that happen is to run, so get going!<\/p>\n<h2>Conclusion<\/h2>\n<p>Long story short, assuming there aren&#8217;t errors above (*),\u00a0strictly in terms of time this modeling argues that Froome made the right decision to start running, and benefited from doing so. I still think it was a big gamble\u00a0in terms of risking getting hurt. And ultimately\u00a0the officials&#8217; decision to\u00a0nullify the end of the race made it moot. But running\u00a0wasn&#8217;t nearly as ridiculous as it at first seemed.<\/p>\n<p><em>(*) I would\u00a0be very happy to hear any comments or corrections.<\/em><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday, Tour de France yellow jersey bearer Chris Froome was caught up in a crash approaching the end of\u00a0the monstrous finishing climb up Ventoux caused by the congestion of spectators. His bike broken but with no team or neutral support car in sight, he started running up the hill. Let&#8217;s set aside all questions of &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.tjkopena.com\/blogs\/outdoors\/2016\/07\/should-froome-run\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Should Froome Run?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":684,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[96,93,95,94,92],"class_list":["post-640","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-road","tag-road-racing","tag-simulation","tag-strategy","tag-tactics","tag-tour-de-france"],"_links":{"self":[{"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/posts\/640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/comments?post=640"}],"version-history":[{"count":10,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/posts\/640\/revisions"}],"predecessor-version":[{"id":740,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/posts\/640\/revisions\/740"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/media\/684"}],"wp:attachment":[{"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/media?parent=640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/categories?post=640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tjkopena.com\/blogs\/outdoors\/wp-json\/wp\/v2\/tags?post=640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}