Proposed Algorithms for Rating the ``Difficulty'' of ClimbsThe following is my lame attempt at rating the "difficulty" of climbs. It assumes the availability of a profile, in terms of (altitude gained, local gradient) data. Two versions are presented, the first simpler at the expense of neglecting the important issue of gearing limitations. Version 1: Effective Gradient Proportionality ModelClick here to jump to the enhanced version extensions This is the simpler of the two proposed algorithms, based on the simplifying assertion that steeper is always tougher. ASSERTIONSThe following are asserted:
DEFINITIONSThe following variables are defined: g(z) := dz/dx (derivative of change in altitude with respect to horizontal position geff(z):= the effective grade, derived from g(z) convolved with f(z). z := altitude relative to start of the climb zf := the final altitude of the climb relative to the initial altitude of the climb. x := position, as determined in the sum of the magnitude of translations in altitude and longitude, but not altitude. zt := a "threshold altitude change" representing the change in altitude of a climb which one can "smooth out"... for "stair-steps" which gain much less than this, the nearby average grade, and not the local grade, matters. zt=25 meters is proposed as a good trial value. f(z) := a smoothing function incorporating zt, expressed as a function of z. geff(z) = f(z) * g(z). f0 := the usual Gaussian normalization constant (a function of zt), or for discrete data, a value calculated to normalize the weighted-sum approximation to the gaussian convolution. r := the rating of the climb's difficulty. FORMULASA formula which captures the above assertions is then the following: f(z) = f0 exp[-z2/(2 zt2)] geff(z) := f(z) * g(z) r = integral[0, zf] geff(z) dz note: "*" is the convolution operator, in this case: f(z) * g(z) := integral[0, zf]{ f(z-z') g(z') dz' } If the data available are discrete points, this convolution and integration can be approximately carried out as follows, assuming data describing constant-grade road segments with index running from 1 to n: f[i,j] := exp[(z[i] - z[j])2/(2 zt2)] f0[i] = sum[j=1, j=n]{ f[i,j] } geff[i] = sum[j=1, j=n]{ f[i,j] g[j] } / f0[i] r = sum[i=1; i=n] { geff[i] dz[i] }where dz[i] is the altitude gain associated with road segment i, and g[i] is the slope (rise/run) of road segment i. DISCUSSIONThe result? It's simple, really. For long, steady climbs it simplifies to: r -> (altitude gained)2 / lateral position changeor, to high accuracy for typical climbs: r -> (altitude gained)2 / distance travelled. Note the "rating" has units of distance. For a 45 deg hill, the rating is the altitude gained. EXAMPLEUnfortunately, on-line data on hill profiles appears to be spotty, and thus evaluating hills based on this formula is presently difficult. However, here is the result as applied to a previously posted profile of L'Alpe d'Huez. "Rating" is the rating of the climb, in meters, for all road segments up to and including the road segment described in the table row. "z" is the mean altitude of the road segment, relative to sea level. "g" is the slope of the road segment (rise/run). "geff" is the slope convolved using the discrete approximation to the smoothing function for zt = 25 meters. Each segment in this description has a road length of 500 meters. Going to finer resolution can only increase the rating by enhancing non-uniformity of the slope, but due to the smoothing function the effect on the results of undulations gaining less than 25 meters is diminished.
Note the uniform-effective-grade approximation yields: APPENDIX: source code, dataThe following is the quick-and-dirty nawk (see note below) script used in the L'Alpe d'Huez example. It assumes an input stream with columns labeled "km" and "m", the former for distance along the road in kilometers, the latter for altitude in meters, for points along the road, including the start and finish of the climb.
Note: nawk is a simple interpreted stream-oriented language with C-like syntax commonly found on UNIX systems. Version 2: Anaerobic Threshold Cadence Dependent Model
Click here to jump to the simplified version. This is the more complicated of the two proposed algorithms, based on the assertion that steepness becomes a concern when and only when a desirable cadence can no longer be maintained. ASSERTIONSThe following change in the assertions from the simple model is here applied:
DEFINITIONSThe following variables are defined: g(z) := dz/dp (derivative of change in altitude with respect to distance along the road) geff(z):= the effective grade, derived from g(z) convolved with f(z). g0:= The critical effective grade above which one is no longer able to maintain the optimal cadence at powers at or below anaerobic threshold. z := altitude relative to start of the climb zf := the final altitude of the climb relative to the initial altitude of the climb. p := position, as determined by position along the road, as one would measure with an odometer. seff(z):= secant of road angle associated with road at grade at effective grade (used to represent traction, balance, and orientation difficulties associated with steep roads) zt := a "threshold altitude change" representing the change in altitude of a climb which one can "smooth out"... for "stair-steps" which gain much less than this, the nearby average grade, and not the local grade, matters. zt=25 meters is proposed as a good trial value. f(z) := a smoothing function incorporating zt, expressed as a function of z. geff(z) = f(z) * g(z). f0 := the usual Gaussian normalization constant (a function of zt), or for discrete data, a value calculated to normalize the weighted-sum approximation to the gaussian convolution. c0 := the optimal pedalling cadence lmin := the minimum development available with ones gearing, defined as the distance the bike travels with one full turn of the cranks in the lowest gear. vzat := the rate of altitude gain when riding at anaerobic threshold assuming the amount of power available for overcoming gravity is independent of the grade of the road. This assumption is tested only for grades above the critical grade, so that it breaks down for shallow grades is not of concern. This parameter is a measure of ones power/weight ratio, where weight includes the weight of the bike, clothing, etc. r := the rating of the climb's difficulty. FORMULASThe effective slope is calculated as in the simple model, as follows (note a different definition of "grade" is used here): f(z) = f0 exp[-z2/(2 zt2)] geff(z) := f(z) * g(z) The maximum effective grade at which one can optimally spin below anaerobic threshold can then be calculated thus: g0 = vzat / (c0 lmin) Then a formula for climb difficulty, consistent with the assertions (including 2a and 2b), is the following. Note the inclusion of seff(z), which is singular for extended sheer cliffs, to represent the difficulties associated with traction, balance, and orientation imposed by steep grades. This term was implicitely included in the effective-grade-proportional model through the use of the tangent rather than the sine of the road angle in the definition of grade used there. The secant of the effective angle (after convolving the grade over altitude) is used rather than the secant of the actual, local road angle due to several factors, the most important being the large amount of "discretization noise" typically found in grade data. seff(z) = 1 / sqrt[1 + geff(z)2] r = integral[0, zf] {geff(z) ( 1 + K (geff(z) / g0)^n ) seff(z) dz}for some empirically-determined value of K and n. This is a strictly ad-hoc formula designed to analytically capture the essense of the situation -- that difficulty is roughly grade-independent until one runs out of gears, when the difficulty becomes strongly grade-sensitive. Trial values might be: K = 1/4 n = 2Then at half-optimal cadence, difficulty is increased by a factor of two. At third-optimal cadence, difficulty is increased by a factor of 3.25. And at quarter-optimal cadence, difficulty is increased by a factor of 5. At the threshold of degradation of cadence, difficulty is increased by a factor of 1.25 (representing the fact that one has no room below AT at optimal cadence). EXAMPLEThe L'Alpe d'Huez example will be used again. However, specification of the additional parameters is needed. The following values will be assumed: vzat = 15 meters/min lmin = 3.4 meters (39/24 w/ 700c tires) c0 = 90/min Then, g0 = 0.049
Note the rating here represents the equivalent small-grade climbing. Thus, despite the section of road described here gains only 1024 meters, for the individual with the gearing described by these values of geff and vzat, it is of "equivalent difficulty" to a shallow-grade climb gaining 1455 meters, given the assumptions about the form of the model. With lower gearing, or with higher power/weight at AT, the rating would be closer to the net altitude gained. Version 3: Inverse-Speed Profile-Convolution Enhancement to Cadence-Dependent Model
Click here to jump to the simplified version. This enhancement to the cadence-dependent model better models the time spent on reduced grade sections for purposes of assessing their effect on the climb difficulty. ASSERTIONSThe following change in the assertions from the cadence-dependent model is here applied. Note this assertion is actually a carry-over from the effective-grade-proportional model.
DEFINITIONSThe following variables are defined:
FORMULASThe transformed altitude z' is an altitude-equivalent of the time it takes to reach a particular point in the road. Note that even on descents, which take positive time to traverse, the effective altitude is thus increasing, despite the fact that the true altitude is decreasing. To calculate the time taken to reach a particular location in the road, one must have a model for speed as a function of grade. The conventional (see Whitt and Wilson, "Bicycle Science", MIT Press, 1994) model for power versus speed, when evaluated at anaerobic threshold power, and cancelling out the anaerobic threshold power, yields the following: (sat(p)/vxat)3 + (sat(p)/vzat) * g(p) - 1 = 0 This can be evaluated numerically to solve for speed as a function of p, sat(p). One then can then derive the following transformation:
dz'(p) = dz(p) [ vzat / {g(p) sat(p)}] For zero grades, this must be evaluated in the zero-grade limit, where it becomes:
limg(p)->0 dz'(p) = dp / vxat Then, the convolution of grade with effective altitude can be carried out to yield the effective grade, similar to in previous models. Note the non-analytic hack of clipping effective grade at zero -- it is assumed riding on the flats and riding on descents can both be done at optimal cadence within anaerobic threshold.
g0 = vzat / (c0 lmin) The effective-secant-model for ultra-steep-induced difficulties is then factored into the cadence-based formula to yield:
Note: In the above equation the integration is carried out with respect to the true altitude and not the effective altitude. This is somewhat of a subtlety, and its use is a matter of judgement. The reasoning is that flat sections, despite their positive effective altitude change (recall effective altitude change is proportional to the time needed to traverse the road segment at anaerobic threshold), should not contribute positively to the hill difficulty. In the hill-smoothing convolution integral in the determination of the effective grade, however, they are of significance, since they provide aerobic riding at optimal cadence for short-term recovery. Thus in the convoltion integral the effective altitude is the variable of integration. Trial values of K and n remain:K = 1/4 n = 2 Additionally, the parameters associated with gearing and fitness may be chosen as follows for a typical rider, perhaps:
|
|