Control Freak

Alpha Loading course…

How Control Freak works it out

  1. Read the map

    The map photo is turned into a grid where every spot has a running cost. Streets and paths are cheap, open fields a bit slower, and railways, private land and out-of-bounds areas impossible. Each brown 5 m contour line you cross adds a cost for the climb. The map was checked and corrected by hand, from GPS tracks and local knowledge (tunnels, cut-throughs, overgrown fields).

    1× 1.3× ✕ +climb
  2. Build the legs

    For every pair of controls, the computer finds the cheapest route between them through that grid: 378 legs for 27 controls plus the start. From then on the map doesn't matter, only a table of leg lengths.

    Lengths are grade-adjusted: 1 m of climb counts as 10 m of flat, so a hilly leg "costs" more than its distance on the ground.

    1.24 km
  3. Find the best order

    Trying every order is impossible: 27 controls can be visited in about 2 × 10²⁶ different loops. Instead the solver (Google's OR-Tools CP-SAT) tracks two numbers:

    • Best loop found so far. It keeps finding shorter loops, so this comes down.
    • Lower bound: a distance no loop can beat. Every control has to be run into once and out of once, so each costs at least its two cheapest legs (the picture). Add that up across all the controls and halve it (each leg is shared by two controls) and you get a guaranteed floor of about 13.9 km.

    The solver then splits the problem into cases ("use the 3→4 leg" or "don't") and throws away any case whose floor is already longer than the best loop found, along with millions of orders at once.

    2 cheapest legs
  4. Proof

    The floor creeps up while the best loop comes down. When the two numbers meet, no shorter loop can exist. For all controls that's 16.34 km grade-adjusted (14.11 km on the ground), proven in under a second.

    best loop found lower bound meet = proof
  5. The 60-minute event

    The same table is used with controls made optional: the solver maximises points minus late penalties within the time limit. Because that depends on how fast you are, the best route is pre-computed for every pace from 3:30 to 9:00 per km, and each one is proven optimal.

    fasterslower pace pts you
  6. Your run

    Your GPX is read in your browser (it is never uploaded). The page spots which controls you visited (within 35 m) and works out your grade-adjusted pace: your elapsed time divided by the grade-adjusted distance of your controls. It then shows the best route at your pace, so you're compared like for like.

    GAP = time ÷ grade-adjusted km

Good to know

  • It's only as good as the map reading. A path it doesn't know about, or a fence it doesn't, changes the answer.
  • Climb comes from contour crossings, so it's approximate: about 170 m against 212 m on one runner's GPS.
  • Navigation, punching and traffic aren't modelled. They just show up as a slower pace.
  • "Optimal" means optimal for this model. It's a great guide, not the last word.