Fleet Fuel Efficiency Prediction Model (v3)

Predicts per-trip fuel efficiency (km/L) for Volvo heavy trucks based on driving behaviour and route features.

Performance

  • Test R2: 0.838
  • 5-fold CV R2: 0.808 +/- 0.025
  • MAE: 0.191 km/L
  • Overfit gap: 0.015

Data

  • 6 months (Jan-Jun 2026)
  • 56638 clean trips after dedup + validity + IQR outlier removal

Features (37)

Speed Bands (% of total distance)

  • speed_0_16_pct
  • speed_16_32_pct
  • speed_32_48_pct
  • speed_48_64_pct
  • speed_64_80_pct
  • speed_80_96_pct

Weight

  • weight_median_kg

Acceleration Zones (% of distance)

  • accel_harsh_brake_pct_dist
  • accel_moderate_brake_pct_dist
  • accel_light_decel_pct_dist
  • accel_cruising_pct_dist
  • accel_light_accel_pct_dist
  • accel_moderate_accel_pct_dist
  • accel_harsh_accel_pct_dist

Torque Zones (% of distance)

  • torque_very_low_torque_pct_dist
  • torque_low_torque_pct_dist
  • torque_mid_torque_pct_dist
  • torque_high_torque_pct_dist
  • torque_very_high_torque_pct_dist

Idle

  • idle_pct_duration
  • idle_fuel_pct

Coasting

  • coasting_pct_distance

Cruise Control

  • cruise_pct_distance

Green Area

  • green_area_pct_distance

Time of Day (% of distance)

  • dist_pct_00_04
  • dist_pct_04_08
  • dist_pct_08_12
  • dist_pct_12_16
  • dist_pct_16_20
  • dist_pct_20_24

Braking

  • brake_count

Altitude (15-min smoothed)

  • pct_dist_flat_v2
  • pct_dist_climb_mild_v2
  • pct_dist_climb_steep_v2
  • pct_dist_descent_mild_v2
  • pct_dist_descent_steep_v2
  • total_altitude_gain_v2

Driving ratio

  • driving_ratio

Example Payload

{
  "speed_0_16_pct": 1.4,
  "speed_16_32_pct": 6.9,
  "speed_32_48_pct": 15.3,
  "speed_48_64_pct": 65.0,
  "speed_64_80_pct": 10.9,
  "speed_80_96_pct": 0.5,
  "weight_median_kg": 28500,
  "accel_harsh_brake_pct_dist": 1.2,
  "accel_moderate_brake_pct_dist": 4.1,
  "accel_light_decel_pct_dist": 28.3,
  "accel_cruising_pct_dist": 30.5,
  "accel_light_accel_pct_dist": 31.2,
  "accel_moderate_accel_pct_dist": 4.0,
  "accel_harsh_accel_pct_dist": 0.4,
  "torque_very_low_torque_pct_dist": 46.0,
  "torque_low_torque_pct_dist": 38.5,
  "torque_mid_torque_pct_dist": 12.0,
  "torque_high_torque_pct_dist": 2.5,
  "torque_very_high_torque_pct_dist": 0.3,
  "idle_pct_duration": 4.8,
  "idle_fuel_pct": 0.95,
  "coasting_pct_distance": 16.0,
  "cruise_pct_distance": 1.2,
  "green_area_pct_distance": 79.5,
  "dist_pct_00_04": 15.0,
  "dist_pct_04_08": 25.0,
  "dist_pct_08_12": 30.0,
  "dist_pct_12_16": 20.0,
  "dist_pct_16_20": 8.0,
  "dist_pct_20_24": 2.0,
  "brake_count": 650,
  "pct_dist_flat_v2": 91.6,
  "pct_dist_climb_mild_v2": 3.7,
  "pct_dist_climb_steep_v2": 0.3,
  "pct_dist_descent_mild_v2": 3.1,
  "pct_dist_descent_steep_v2": 1.3,
  "total_altitude_gain_v2": 1200,
  "driving_ratio": 0.89
}

Expected output: ~4.11 km/L

Usage

from xgboost import XGBRegressor
import json

model = XGBRegressor()
model.load_model('fleet_fe_xgboost.json')

with open('feature_cols.json') as f:
    feature_cols = json.load(f)

prediction = model.predict(trip_features[feature_cols])

Changelog

  • v3: Speed bands as %, smoothed altitude features (15-min rolling median), CV R2=0.808
  • v2: Raw speed bands, 6-month data, CV R2=0.796
  • v1: Initial model, May only
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support