Algorithme de prédiction

Vue d'ensemble

Le moteur de prédiction estime le temps de course trail à partir des données d'entraînement récentes (180 jours). Il calcule des métriques dérivées pour chaque activité, les agrège en sous-scores, puis simule la course segment par segment en appliquant des facteurs de pente, technicité, altitude et fatigue.

1. Traitement des activités

Synchronisation

  1. Première sync : récupère les activités des 180 derniers jours
  2. Sync incrémentale : récupère uniquement les activités postérieures à la plus récente en base
  3. Les activités sont filtrées par type (Run, TrailRun)
  4. Pour chaque activité, les streams (données seconde par seconde) sont récupérés
  5. Détection de doublons : même utilisateur, date ±2 min, distance ±10%

Grade Adjusted Pace (GAP)

Utilise le polynôme de coût métabolique de Minetti et al. (2002) pour convertir la vitesse réelle en vitesse équivalente à plat :

C(g) = 155.4·g&sup5; - 30.4·g&sup4; - 43.3·g³ + 46.3·g² + 19.5·g + 3.6

GAP = vitesse × C(0) / C(grade)

Meilleures performances (Best Effort)

Fenêtres glissantes sur les streams pour trouver la meilleure vitesse GAP moyenne sur :

  • v30 : 30 minutes
  • v60 : 60 minutes
  • v120 : 120 minutes

Autres métriques dérivées

  • Vitesse ascensionnelle : D+/h sur les sections à plus de 2% de pente
  • Dérive cardiaque : variation de FC entre 1ère et 2ème moitié
  • Déclin de vitesse : variation de vitesse entre 1ère et 2ème moitié
  • Index d'endurance : 1.0 + speed_decay - HR_drift × 0.5, borné [0, 1]

Charge d'entraînement (TRIMP)

Formule de Banister (1991) avec réserve cardiaque :

TRIMP = durée × ΔFC × k

ΔFC = (FC_exercice - FC_repos) / (FC_max - FC_repos) et k = 0.64 × e^(1.92 × ΔFC) (hommes).

2. Modèle Forme / Fatigue / Fraîcheur

Implémentation du Performance Management Chart (PMC) de Banister (1991) avec EWMA :

MétriqueConstanteInterprétation
Forme (CTL)42 joursCondition physique accumulée
Fatigue (ATL)7 joursFatigue récente
Fraîcheur (TSB)CTL - ATLBalance entraînement/récupération

Poids de récence

Décroissance exponentielle composite avec trois demi-vies (21, 45 et 90 jours) capturant respectivement la forme récente, l'adaptation moyenne et la base aérobie profonde.

3. Sous-scores d'entraînement

Chaque sous-score est la moyenne pondérée par récence, normalisée par une référence élite :

Sous-scoreSourceRéférencePoids
Seuilv30 (GAP)5.0 m/s35%
Base aérobiev60 (GAP)4.5 m/s25%
MontéeVitesse ascensionnelle1200 m D+/h25%
EnduranceIndex d'endurance0.9515%

4. Prédiction de course

Vitesse de base

v_base = 0.30 × v30 + 0.50 × v60 + 0.20 × v120

Simulation segment par segment

Pour chaque segment :

vitesse = v_base × A(pente) × B(technicité) × C(altitude) × D(fatigue) × E(fraîcheur)

FacteurDescription
A (pente)Coût métabolique de Minetti : ratio C(0)/C(grade)
B (technicité)1.00 (facile) → 0.65 (très technique)
C (altitude)-3%/1000m au-dessus de 1500m, plancher 0.80
D (fatigue)Décroissance progressive calibrée par l'endurance, plancher 0.70
E (fraîcheur)Modulation ±10% selon la balance CTL/ATL

Estimation énergétique

Basée sur le modèle de Minetti : énergie = Σ C(grade) × poids × distance

5. Vitesse Critique / D' (CS/D')

Le moteur estime les paramètres du modèle linéaire distance-temps :

d = CS × t + D'

  • CS (Critical Speed) : vitesse maximale soutenable asymptotiquement
  • D' : réserve de distance au-dessus de CS (capacité anaérobie)

Estimé par régression linéaire sur les meilleurs efforts GAP (v30, v60, v120). Le R² sert d'indicateur de cohérence.

Plancher de vitesse (CS)

Après 2h de course cumulées, la vitesse par segment ne descend plus en dessous de CS ajusté au terrain. Cela empêche des prédictions excessivement pessimistes sur les ultras.

D' pour l'estimation optimiste

Le scénario optimiste simule la dépense et la régénération de D' segment par segment : dépense au-dessus de CS, récupération partielle en dessous (τ = 5 min), et boost sur les segments courts en montée.

Réf. : Monod & Scherrer (1965), Morton (2006), Skiba et al. (2012)

6. Ajustements physiologiques

Si le profil physiologique est renseigné :

  • Vitesse soutenable VT2 : plafond à 85% de la vitesse au seuil ventilatoire 2
  • Plafond VMA : vitesse de course ≤ 70% VMA (60% pour ultra > 50 km)

7. Fourchette de confiance

incertitude = 25% - 15% × score_confiance

Le score de confiance (0-1) agrège le volume de données, la qualité des streams, les données d'endurance et physiologiques. Plancher d'incertitude : 10% (aléa irréductible lié aux conditions de course).

8. Comparaison prédiction vs réalisé

Quand une activité est associée à une course, les temps réels par segment sont interpolés depuis les streams GPS. Un facteur d'échelle compense la différence GPS/course. L'écart est coloré par segment (vert/bleu = plus rapide, orange/rouge = plus lent).

9. Segmentation GPX

Le fichier GPX est découpé en segments homogènes de ~500m par la formule de Haversine, classifiés par pente moyenne :

PenteType
> 15%Montée raide
> 5%Montée
> 1%Faux-plat montant
-1% à 1%Roulant
-10% à -1%Descente
< -10%Descente raide