This repository is a curated public research showcase for a COMAP MCM 2026 project on smartphone battery behavior. The project combines empirical battery-test data, mathematical modeling, numerical simulation, and statistical diagnostics to study short-term runtime, thermal dynamics, and long-term degradation.
The cleaned repository emphasizes the reproducible modeling workflow rather than the original competition working directory. Raw third-party datasets are intentionally excluded; see data/README.md.
The final paper and implementation focus on four linked questions:
- How can smartphone power consumption be represented from standardized light, moderate, and intense usage scenarios?
- How does state of charge (SOC) evolve under power demand, temperature effects, and calibrated discharge efficiency?
- Can a coupled SOC-temperature ODE reproduce observed discharge behavior and time-to-empty across operating temperatures?
- What can and cannot be inferred about long-term battery aging from cross-sectional usage and capacity proxies?
Empirical battery data -> preprocessing -> scenario power estimation -> SOC-temperature ODE -> parameter calibration -> numerical simulation -> empirical validation -> aging proxy regression -> diagnostic and sensitivity analysis.
Scenario-level power is estimated from benchmark autonomy:
The implemented fast-time model couples SOC and temperature:
Open-circuit voltage is fit as
The paper also formulates a slow-time capacity-fade model driven by charge throughput and thermal stress. In the public code, the aging component is treated as exploratory proxy modeling because direct state-of-health labels are unavailable.
Verified methods in the curated code include:
- DXOMARK-derived scenario power estimation and normalized power multipliers.
- Least-squares fitting of open-circuit voltage parameters.
- Nonnegative least-squares estimation of thermal coefficients.
- Grid calibration of effective discharge efficiency
eta0. - ODE simulation with SciPy
solve_ivp. - SOC RMSE and time-to-empty validation by temperature scenario.
- Aging proxy construction from charging frequency, usage intensity, temperature, fast charging, and overnight charging.
- OLS regression with HC3 robust standard errors.
- Residual and partial-fit diagnostics.
- Variance inflation factor (VIF) diagnostics for multicollinearity.
From the curated derived outputs:
- The DXOMARK-derived scenario table contains 50 devices. Median power is about 0.199 W for light usage, 0.286 W for moderate usage, and 0.458 W for intense usage.
- Cross-device median power multipliers are 1.431 for moderate/light and 2.305 for intense/light, matching the values reported in the paper.
- The coupled SOC-temperature ODE was evaluated on 60 discharge-cycle files across 5, 15, 25, 35, and 45 degree C temperature folders.
- Aging proxy regressions are intentionally presented as inconclusive: capacity/(age+1) correlation is -0.010, age-controlled residual correlation is 0.003, and the multivariate regression has R2 below 0.001. VIF diagnostics show substantial multicollinearity for several constructed controls.
Scenario-averaged power rises clearly from light to moderate to intense usage.
Measured and modeled SOC-based time-to-empty are compared across paired temperature scenarios.
SOC fit error is summarized across temperature folders and discharge profiles.
An empirical phone-log trace illustrates raw and smoothed temperature behavior used for thermal diagnostics.
The aging proxy diagnostic preserves the weak empirical relationship observed in the available cross-sectional data.
mcm-battery-modeling/
README.md
requirements.txt
src/battery_modeling/ # reusable model and preprocessing code
analysis/ # reproducible analysis and plotting scripts
figures/ # selected public figures
results/ # compact derived summaries
data/README.md # external-data policy and expected schemas
docs/methodology.md # technical methodology notes
paper/mcm_battery_modeling.pdf
paper/README.md
Install dependencies:
python -m pip install -r requirements.txtExpected external data locations are documented in data/README.md. Because raw DXOMARK-derived and large discharge-cycle files are not redistributed, the repository is not fully push-button reproducible from a fresh clone. The included derived summaries and selected figures are sufficient to inspect the reported public results.
Example commands after placing external data locally:
python src/battery_modeling/dxomark_power.py --input data/external/dxomark.csv
python src/battery_modeling/phone_logs.py --input data/external/phone_battery/
python src/battery_modeling/soc_temperature_ode.py
python analysis/aging_proxy_regression.py
python analysis/plot_soc_temperature_validation.pyPython, NumPy, pandas, SciPy, Matplotlib, and statsmodels.




