Skip to content

Pretrained models can violate round-trip energy consistency at grades #71

Description

@CubicsYang

For synthetic 1-mile links at a fixed speed, I evaluated an uphill link at +grade_pct, a downhill link at -grade_pct, and a flat link at 0% with the direct routee.powertrain v2 API. For each condition, I calculated

round_trip_excess = E(+g) + E(-g) - 2 * E(0)

If the predictions represent energy required for the two directed links, the potential-energy contribution should cancel over the matched pair and losses should make this quantity non-negative. I instead observe negative values for both a BEV and a hybrid model, including a large negative region for Model Y at 15–20 mph.

I am opening this as a question / possible physical-consistency issue rather than asserting that all negative downhill predictions are incorrect. A
negative downhill BEV prediction may be a valid representation of regeneration; the concern is the negative result after pairing equal and opposite grades at identical distance and speed.

Environment and pinned models

  • routee-powertrain==2.0.2
  • Python conda environment: routee-powertrain
  • Model Y: tesla/model_y_bev/2022/rf_base_fe510e40/v1
    (electric_kwh, kilowatt-hour)
  • RAV4 Hybrid LE: toyota/rav4_hybrid_le_hev/2022/rf_base_fe510e40/v1
    (fuel_gge, gallons gasoline)
  • Direct model features: speed_mph, grade_pct, distance_mi
  • Inputs: distance = 1 mi; speeds = 15, 20, …, 45 mph; positive grades =
    0.25% to 15.00% in 0.25-point increments.

This test calls routee.powertrain.load_model(...).predict(...) directly.

Here is the Jupyter notebook

routee_powertrain_grade_asymmetry_minimal_repro.ipynb

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions