Skip to main content

New here?

Get started with the benchmark

A guided path from zero to your first score on the leaderboard — written for students and engineers who are new to battery state-of-charge estimation. Budget an afternoon.

The benchmark in one paragraph

Four Tesla Model 3 cells were cycled in a thermal chamber from −20 °C to 40 °C with realistic driving loads. Part of that data is open for you to build on; the rest is blinded data. You write a small function that estimates SOC from current, voltage and temperature, upload it, and the evaluator runs it on the blinded data. You get back one headline number — the weighted error — plus a breakdown by temperature, load, drive-cycle type and robustness, so you can see exactly where your method is strong or weak, and compare it with everyone else's on identical terms.

  1. 1

    Understand the problem (10 min)

    A battery's state of charge can't be measured directly — a battery management system only sees current, voltage and temperature and has to estimate how full the pack is. That estimate is hard when it is cold (internal resistance rises ~10×), when the vehicle is heavily loaded, or when the starting SOC is unknown. This benchmark measures how well an SOC estimator copes with all of that on real Tesla cells.

  2. 2

    Get the open data (30 min)

    Download 1-Open Data.zip from Borealis. It contains, for three cells at six temperatures, the characterization tests (HPPC test, C/20, C/3, C/2, 1C — use these to build an equivalent-circuit model or an open-circuit voltage curve) and eight “reordered” drive cycles per temperature (use these to train or validate). Files load in MATLAB as a struct meas with time, voltage, current, temperature and reference SOC. If you don't have MATLAB, SciPy's loadmat reads them too.

  3. 3

    Build your first estimator (1–2 h)

    Start from the examples in 4-SOC estimation Model Examples.zip. The coulomb counting example is 20 lines and is the best way to learn the interface: your function is called once per second with X = [current, voltage, temperature], returns SOC in 0–1, and can carry any memory it likes in z. Then move up to the Kalman filter example (uses HPPC parameters) or the LSTM example (trained with the scripts in 3-Neural Network Training Example.zip).

  4. 4

    Test it on the site (2 min)

    Zip Model.m/Model.py and any parameter files (no folders, no spreadsheet needed), then use Test your package first on the Submit page. It runs your model through the real evaluator on one public drive cycle and tells you exactly what to fix — no MATLAB or local tooling needed, nothing is scored or recorded.

  5. 5

    Submit and read your results (10 min)

    Create an account, upload the zip, and wait for the email. Your submission page shows the weighted error (the leaderboard score), the RMSE of every test case, the worst-case max error, and charts of estimated vs. true SOC on individual cycles — look at −20 °C and HWGRADE first; that's where most models struggle. Use Compare to put your model next to the leaders.

  6. 6

    Enter the contest (optional)

    Contests are time-boxed and have cash prizes. Register on the contest page, then tick the contest when you submit. Up to five entries each; your best score counts and standings freeze at the deadline.

Reading the leaderboard

  • Weighted error decides the rank. It is in % SOC; 3 % is excellent, 10 % is a decent first model, 30 %+ means the estimator is drifting.
  • All cells is the plain average error; Blinded is the same on the cell nobody has data for — a big gap between them hints at over-fitting.
  • −20 °C, Init. SOC and I offset are the stress tests. Open-loop methods fail them; filters and recurrent networks recover.
  • Complexity is a cost score (1 cheap → 10 heavy). A model that is 0.2 % better but 5× more complex is not necessarily a better BMS candidate.