Author Topic: New Feature - Difficulty and Effort Index  (Read 2119 times)


  • Global Moderator
  • Sr. Member
  • *****
  • Posts: 1203
  • TopoFusion Author
    • View Profile
New Feature - Difficulty and Effort Index
« on: February 16, 2004, 03:35:26 PM »
The aim of the new statistics computed in the beta version is to "rank" gps tracks of hikes and bike rides in some reasonable way.  The most obvious method, of course, is to sort tracks by total distance or total climbing.  But these numbers leave much out of the story.

Here is where our "Difficulty Index" comes in.  The idea is that hiking and cycling get harder the steeper a hill is.  So, a route should receive more "credit" the steeper its climbs are.

For example, climbing 1000 feet in 1 mile is harder than climbing 1000 feet in 2 miles.  But how to quantify this?

Looking at the physics behind it does not really help, unfortunately, because the same amount of work is done regardless of the grade.  Another possibility is to look at the number of calories burned (there are equations for this) based on weight, grade and speed.  If you look at calories burned you will actually get more calories burned on the 2 mile / 1000 foot case since you went twice as far.  But this doesn't seem to fit with reality, at least for me.  I think there are many factors that throw this off.  First, we are dealing with rough, loose trail surfaces, not paved roads or wedges.  As grade increases, traction becomes a serious loss of energy.  Also, as grade increases often things get more technical, which burns more energy.  Second, I characteristically expend more energy the steeper a hill is.  I think this is true of nearly all hikers and cyclists.  You get used to a quick pace on the flats and want to stay as close to that when you hit the hills, even though it requries much more energy.  In fact, often this fact is forced on cyclists--the minimum energy requried to keep wheels rolling can be very high indeed on steep loose slopes.  This fact, coupled with the non-linearity of the efficiency of the human machine, provides good reason to believe steeper hills require more effort (and not just a linear factor).  Third, it's a matter of perception.  Routes with very steep climbs just seem harder.  We shouldn't necessarily be rewarding this perception, however, the "Difficulty Rating" is based on a perceptual model, since it was tuned by me.  

So, what is the computation?

First a few properties of the rating.

1 - Climbs are weighted by their grade.  2 tracks with the same amount of total climbing could receive vastly different ratings.

2 - The rating is cumulative, that is, rating "points" are accumlated along the track.  The rating is not so much "how hard are the hills", but more "how hard is the entire ride."  For example, you could have a wall of a climb (maybe 2000 feet in a mile), but if that is all the ride consists of, it will not be rated very high compared to very long rides.

3 - Flat miles, and distance in general, do count towards the rating.  So adding flat miles onto a track will still increase its rating.

Thus, we loop through all the segments between GPS points in a track and compute:

Run - 2D distance traveled
Grade - rise over run (dimensionless)

If Grade > 1%, we consider it a climb, and multiply by a exponential:

Difficulty Index = Difficulty Index + Run * (50 * Grade) ^ 1.7

else (Flat and Downhill case)

Difficulty Index = Difficulty Index + Run


This sum, Rating, is displayed in a column of the active file list in TopoFusion.  The numbers themselves don't "mean" anything, but are intended as a comparision metric between tracks.

How did I come up with Grade ^ 1.7?  Trial and error, and my own perceptions.  I loaded up 30 or 40 tracks, then played around with various mathematical functions (and constants), until an ordering I felt was reasonable emerged.  The result is in TopoFusion.  

Here are a few of my tracks, sorted by Difficulty Index:

Effort Index

New in the next beta is an additional statistic -- Effort Index.

Difficulty Index measures how hard a route is, based only on distance and steepness.  Another interesting question is, how much effort did I put into the ride?  

The idea here is to multiply the difficulty rating factor by the speed traveled, so that you get credit for pushing it on the hills, much moreso than on the flats.  This is computed in the same way (by stepping through the GPS track):

Effort Index = Effort Index + Difficutly rating * (1 + Speed)

Where speed is in meters/second.  It is 1 + Speed so that we're not multiplying by a factor less than 1.  

Again, I tried a number of possible functions, including exponentials, but found this to make the most sense (at least for now).  


All of this is of course very rough and somewhat unstable to GPS errors.  I have made some effort to throw out ridiculous grades, speeds, et cetera, but bad data will still, in general, give bad results.  But I am fairly happy with it so far.

Any comments, ideas, questions?  Please post them.  I am very interested to hear thoughts about these ratings, especially if you have tracks with ratings that you cannot explain.