NeerajCodz commited on
Commit
c8de822
Β·
1 Parent(s): b0f581d
This view is limited to 50 files because it contains too many changes. Β  See raw diff
Files changed (50) hide show
  1. v1/models.json +146 -16
  2. v2/figures/{v2_best_actual_vs_pred.png β†’ best_actual_vs_pred.png} +0 -0
  3. v2/figures/{v2_classical_top8.png β†’ classical_top8.png} +0 -0
  4. v2/models.json +203 -30
  5. v2/reports/{v2_model_validation.csv β†’ model_validation.csv} +0 -0
  6. v2/reports/{v2_validation_report.html β†’ validation_report.html} +0 -0
  7. v2/reports/{v2_validation_summary.json β†’ validation_summary.json} +0 -0
  8. v2/results/{v2_classical_results.csv β†’ classical_results.csv} +0 -0
  9. v2/results/{v2_intra_battery.json β†’ intra_battery.json} +0 -0
  10. v2/results/{v2_model_validation.csv β†’ model_validation.csv} +0 -0
  11. v2/results/{v2_training_summary.json β†’ training_summary.json} +0 -0
  12. v2/results/{v2_validation_report.html β†’ validation_report.html} +0 -0
  13. v2/results/{v2_validation_summary.json β†’ validation_summary.json} +0 -0
  14. v3/figures/{v3_dg_itransformer_training.png β†’ best_ensemble_prediction.png} +2 -2
  15. v3/figures/{v3_capacity_and_rul.png β†’ capacity_and_rul.png} +0 -0
  16. figures/v3_radar_top6.png β†’ v3/figures/ced_curves.png +2 -2
  17. v3/figures/{v3_degradation_state_distribution.png β†’ degradation_state_distribution.png} +0 -0
  18. v3/figures/{v3_ced_curves.png β†’ dg_itransformer_predictions.png} +2 -2
  19. v3/figures/{v3_best_ensemble_prediction.png β†’ dg_itransformer_training.png} +2 -2
  20. v3/figures/{v3_ensemble_comparison.png β†’ ensemble_comparison.png} +2 -2
  21. v3/figures/{v3_ensemble_weights.png β†’ ensemble_confusion_matrix.png} +2 -2
  22. v3/figures/ensemble_weights.png +3 -0
  23. v3/figures/{v3_feature_correlation_heatmap.png β†’ feature_correlation_heatmap.png} +0 -0
  24. v3/figures/{v3_dg_itransformer_predictions.png β†’ lstm_actual_vs_predicted.png} +2 -2
  25. v3/figures/lstm_training_curves.png +3 -0
  26. v3/figures/mc_dropout_uncertainty_lstm.png +3 -0
  27. v3/figures/{v3_soc_coulomb_counting_demo.png β†’ soc_coulomb_counting_demo.png} +0 -0
  28. v3/figures/{v3_soh_degradation_trends.png β†’ soh_degradation_trends.png} +0 -0
  29. v3/figures/transformer_pt_training_curves.png +3 -0
  30. v3/figures/transformer_tf_training_curves.png +3 -0
  31. v3/figures/unified_model_comparison.png +3 -0
  32. v3/figures/v3_lstm_actual_vs_predicted.png +0 -3
  33. v3/figures/v3_lstm_training_curves.png +0 -3
  34. v3/figures/v3_mc_dropout_uncertainty_lstm.png +0 -3
  35. v3/figures/v3_transformer_pt_training_curves.png +0 -3
  36. v3/figures/v3_transformer_tf_training_curves.png +0 -3
  37. v3/figures/v3_unified_model_comparison.png +0 -3
  38. v3/figures/v3_vae_anomaly_detection.png +0 -3
  39. v3/figures/v3_vae_latent_umap.png +0 -3
  40. v3/figures/v3_vae_lstm_prediction.png +0 -3
  41. v3/figures/vae_anomaly_detection.png +3 -0
  42. v3/figures/vae_latent_umap.png +3 -0
  43. v3/figures/vae_lstm_prediction.png +3 -0
  44. v3/models.json +301 -145
  45. v3/{results/v3_dg_predictions.npz β†’ models/classical/re_rct_progression.joblib} +2 -2
  46. v3/models/deep/attention_lstm.pt +1 -1
  47. v3/models/deep/batterygpt.pt +1 -1
  48. v3/models/deep/bidirectional_lstm.pt +1 -1
  49. v3/models/deep/dynamic_graph_itransformer.keras +1 -1
  50. v3/models/deep/gru.pt +1 -1
v1/models.json CHANGED
@@ -5,9 +5,18 @@
5
  "split_strategy": "cross-battery group split (80/20 batteries)",
6
  "features": 12,
7
  "feature_set": [
8
- "cycle_number", "ambient_temperature", "peak_voltage", "min_voltage",
9
- "voltage_range", "avg_current", "avg_temp", "temp_rise",
10
- "cycle_duration", "Re", "Rct", "delta_capacity"
 
 
 
 
 
 
 
 
 
11
  ],
12
  "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles)",
13
  "default_model": "best_ensemble",
@@ -20,7 +29,9 @@
20
  "r2": 0.72,
21
  "mae": 5.57,
22
  "requires_scaling": true,
23
- "file": "models/classical/ridge.joblib"
 
 
24
  },
25
  "lasso": {
26
  "display_name": "Lasso",
@@ -30,7 +41,9 @@
30
  "r2": 0.52,
31
  "mae": 5.59,
32
  "requires_scaling": true,
33
- "file": "models/classical/lasso.joblib"
 
 
34
  },
35
  "elasticnet": {
36
  "display_name": "ElasticNet",
@@ -40,7 +53,9 @@
40
  "r2": 0.52,
41
  "mae": 5.59,
42
  "requires_scaling": true,
43
- "file": "models/classical/elasticnet.joblib"
 
 
44
  },
45
  "knn_k5": {
46
  "display_name": "KNN (k=5)",
@@ -48,9 +63,11 @@
48
  "algorithm": "KNeighborsRegressor",
49
  "version": "1.0",
50
  "r2": 0.72,
51
- "mae": 2.40,
52
  "requires_scaling": true,
53
- "file": "models/classical/knn_k5.joblib"
 
 
54
  },
55
  "knn_k10": {
56
  "display_name": "KNN (k=10)",
@@ -60,7 +77,9 @@
60
  "r2": 0.724,
61
  "mae": 2.69,
62
  "requires_scaling": true,
63
- "file": "models/classical/knn_k10.joblib"
 
 
64
  },
65
  "knn_k20": {
66
  "display_name": "KNN (k=20)",
@@ -70,7 +89,9 @@
70
  "r2": 0.717,
71
  "mae": 3.19,
72
  "requires_scaling": true,
73
- "file": "models/classical/knn_k20.joblib"
 
 
74
  },
75
  "svr": {
76
  "display_name": "SVR (RBF)",
@@ -80,7 +101,9 @@
80
  "r2": 0.805,
81
  "mae": 7.56,
82
  "requires_scaling": true,
83
- "file": "models/classical/svr.joblib"
 
 
84
  },
85
  "random_forest": {
86
  "display_name": "Random Forest",
@@ -90,7 +113,9 @@
90
  "r2": 0.957,
91
  "mae": 4.78,
92
  "requires_scaling": false,
93
- "file": "models/classical/random_forest.joblib"
 
 
94
  },
95
  "xgboost": {
96
  "display_name": "XGBoost",
@@ -100,7 +125,9 @@
100
  "r2": 0.847,
101
  "mae": 8.06,
102
  "requires_scaling": false,
103
- "file": "models/classical/xgboost.joblib"
 
 
104
  },
105
  "lightgbm": {
106
  "display_name": "LightGBM",
@@ -110,7 +137,9 @@
110
  "r2": 0.928,
111
  "mae": 5.53,
112
  "requires_scaling": false,
113
- "file": "models/classical/lightgbm.joblib"
 
 
114
  },
115
  "best_ensemble": {
116
  "display_name": "Best Ensemble (RF+XGB+LGB)",
@@ -120,7 +149,11 @@
120
  "r2": 0.886,
121
  "mae": 3.89,
122
  "requires_scaling": false,
123
- "components": ["random_forest", "xgboost", "lightgbm"],
 
 
 
 
124
  "file": null
125
  }
126
  },
@@ -130,5 +163,102 @@
130
  },
131
  "champion": "random_forest",
132
  "training_date": "2025-12-01",
133
- "framework": ["scikit-learn", "xgboost", "lightgbm"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  }
 
5
  "split_strategy": "cross-battery group split (80/20 batteries)",
6
  "features": 12,
7
  "feature_set": [
8
+ "cycle_number",
9
+ "ambient_temperature",
10
+ "peak_voltage",
11
+ "min_voltage",
12
+ "voltage_range",
13
+ "avg_current",
14
+ "avg_temp",
15
+ "temp_rise",
16
+ "cycle_duration",
17
+ "Re",
18
+ "Rct",
19
+ "delta_capacity"
20
  ],
21
  "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles)",
22
  "default_model": "best_ensemble",
 
29
  "r2": 0.72,
30
  "mae": 5.57,
31
  "requires_scaling": true,
32
+ "file": "models/classical/ridge.joblib",
33
+ "sha256": "ad1bc4a9e856ef5e0ef27367dbb73d704a2a61a22b2f79543ea9528a14539930",
34
+ "bytes": 649
35
  },
36
  "lasso": {
37
  "display_name": "Lasso",
 
41
  "r2": 0.52,
42
  "mae": 5.59,
43
  "requires_scaling": true,
44
+ "file": "models/classical/lasso.joblib",
45
+ "sha256": "eb91ca21c6dad3cee731eb50aadbf133e99db0602b1a94c31550ffc6a33205d1",
46
+ "bytes": 728
47
  },
48
  "elasticnet": {
49
  "display_name": "ElasticNet",
 
53
  "r2": 0.52,
54
  "mae": 5.59,
55
  "requires_scaling": true,
56
+ "file": "models/classical/elasticnet.joblib",
57
+ "sha256": "24613abf048daf5a603abd6f10e7eb00929740e30846e191fd76edc47055bfc8",
58
+ "bytes": 744
59
  },
60
  "knn_k5": {
61
  "display_name": "KNN (k=5)",
 
63
  "algorithm": "KNeighborsRegressor",
64
  "version": "1.0",
65
  "r2": 0.72,
66
+ "mae": 2.4,
67
  "requires_scaling": true,
68
+ "file": "models/classical/knn_k5.joblib",
69
+ "sha256": "5225b27b7ee97fe2ddeb75d87cd6356680868eef48dd4ad6dc2c36774db9de8b",
70
+ "bytes": 479686
71
  },
72
  "knn_k10": {
73
  "display_name": "KNN (k=10)",
 
77
  "r2": 0.724,
78
  "mae": 2.69,
79
  "requires_scaling": true,
80
+ "file": "models/classical/knn_k10.joblib",
81
+ "sha256": "f2e7b020bddac3139111abaf338a72e491c6522c8ae7b222866a80c8c3d7c5e1",
82
+ "bytes": 479686
83
  },
84
  "knn_k20": {
85
  "display_name": "KNN (k=20)",
 
89
  "r2": 0.717,
90
  "mae": 3.19,
91
  "requires_scaling": true,
92
+ "file": "models/classical/knn_k20.joblib",
93
+ "sha256": "4d1a2f797b1ab0f89e68898595ac3c5407e3afa84b8c56a107800da7ce7ee0d8",
94
+ "bytes": 479686
95
  },
96
  "svr": {
97
  "display_name": "SVR (RBF)",
 
101
  "r2": 0.805,
102
  "mae": 7.56,
103
  "requires_scaling": true,
104
+ "file": "models/classical/svr.joblib",
105
+ "sha256": "698b977e9112e961e2421b7ce0161e7cad1c8a8f8e576c2a418ef0345086c6de",
106
+ "bytes": 210644
107
  },
108
  "random_forest": {
109
  "display_name": "Random Forest",
 
113
  "r2": 0.957,
114
  "mae": 4.78,
115
  "requires_scaling": false,
116
+ "file": "models/classical/random_forest.joblib",
117
+ "sha256": "9b48c7892b77a9e32232b1358df71207277702afa2ffd4a34f90b41dccc270f4",
118
+ "bytes": 98519665
119
  },
120
  "xgboost": {
121
  "display_name": "XGBoost",
 
125
  "r2": 0.847,
126
  "mae": 8.06,
127
  "requires_scaling": false,
128
+ "file": "models/classical/xgboost.joblib",
129
+ "sha256": "e17c175e213b7d92789f63c02a96a0d65aecc66ef07d1406a78aef5afbaf392d",
130
+ "bytes": 1309971
131
  },
132
  "lightgbm": {
133
  "display_name": "LightGBM",
 
137
  "r2": 0.928,
138
  "mae": 5.53,
139
  "requires_scaling": false,
140
+ "file": "models/classical/lightgbm.joblib",
141
+ "sha256": "7e292179a2c5e62cdacb21e754ade346342394c9adb1d76be3430c091068d252",
142
+ "bytes": 552489
143
  },
144
  "best_ensemble": {
145
  "display_name": "Best Ensemble (RF+XGB+LGB)",
 
149
  "r2": 0.886,
150
  "mae": 3.89,
151
  "requires_scaling": false,
152
+ "components": [
153
+ "random_forest",
154
+ "xgboost",
155
+ "lightgbm"
156
+ ],
157
  "file": null
158
  }
159
  },
 
163
  },
164
  "champion": "random_forest",
165
  "training_date": "2025-12-01",
166
+ "framework": [
167
+ "scikit-learn",
168
+ "xgboost",
169
+ "lightgbm"
170
+ ],
171
+ "scaler_checksums": {
172
+ "linear_scaler": "070d6b4565d669c50aec414a8e37f38b85409e81c171f71fb23cb3a93de43378",
173
+ "sequence_scaler": "1fb23b358b2ee1746ecaca97539be6282dcd9209d0265b886b9fb9a578455c1e"
174
+ },
175
+ "checksums": {
176
+ "models": {
177
+ "models/classical/elasticnet.joblib": "24613abf048daf5a603abd6f10e7eb00929740e30846e191fd76edc47055bfc8",
178
+ "models/classical/knn_k10.joblib": "f2e7b020bddac3139111abaf338a72e491c6522c8ae7b222866a80c8c3d7c5e1",
179
+ "models/classical/knn_k20.joblib": "4d1a2f797b1ab0f89e68898595ac3c5407e3afa84b8c56a107800da7ce7ee0d8",
180
+ "models/classical/knn_k5.joblib": "5225b27b7ee97fe2ddeb75d87cd6356680868eef48dd4ad6dc2c36774db9de8b",
181
+ "models/classical/lasso.joblib": "eb91ca21c6dad3cee731eb50aadbf133e99db0602b1a94c31550ffc6a33205d1",
182
+ "models/classical/lightgbm.joblib": "7e292179a2c5e62cdacb21e754ade346342394c9adb1d76be3430c091068d252",
183
+ "models/classical/lightgbm_best_params.joblib": "95c4ce7b35f4c2e82dfbee7c915334438e7b5a599b301a0e9ce01f234af6a138",
184
+ "models/classical/random_forest.joblib": "9b48c7892b77a9e32232b1358df71207277702afa2ffd4a34f90b41dccc270f4",
185
+ "models/classical/rf_classifier.joblib": "387b0fd81f5492f3721b9ea234e59b54e0775365aa422a032a88beb829c3e7b2",
186
+ "models/classical/ridge.joblib": "ad1bc4a9e856ef5e0ef27367dbb73d704a2a61a22b2f79543ea9528a14539930",
187
+ "models/classical/svr.joblib": "698b977e9112e961e2421b7ce0161e7cad1c8a8f8e576c2a418ef0345086c6de",
188
+ "models/classical/xgb_classifier.joblib": "d42de5f5f491271ea8155cffa82c72cbd7eb17df154fdd4fdaeb413fa8fb9ee2",
189
+ "models/classical/xgboost.joblib": "e17c175e213b7d92789f63c02a96a0d65aecc66ef07d1406a78aef5afbaf392d",
190
+ "models/classical/xgboost_best_params.joblib": "140456f00362a7b88bb8fd4de8f68f1e5d52b844eb94aae6da13ddae6e38b601",
191
+ "models/deep/attention_lstm.pt": "6f9f6b8e2b9d4794ad1a1452e33c5ec81a917472a6a98cb131d0523c22a82f8a",
192
+ "models/deep/batterygpt.pt": "16dd869d04bf7ef126489dfa3dc386b65dcaa0dc7823051139d6df8ed1ca8343",
193
+ "models/deep/bidirectional_lstm.pt": "3466feebff37d8c671bdeb4d4cf248fdbc04e7a10648f0d847e987ceb459b57a",
194
+ "models/deep/dynamic_graph_itransformer.keras": "6bbca626faeaa1472966659e9908be1ed4db0889c8668602be1fe2c4b143a338",
195
+ "models/deep/gru.pt": "2733aa85767d37fe22eb88989cdddf51de204b131f8b3a7feee5aa7c5af42024",
196
+ "models/deep/itransformer.keras": "5d47f6d088b4a7f453863188a05d77a8e1cc88326b88180e3f5831ee2da0dee6",
197
+ "models/deep/physics_itransformer.keras": "ebbeb7de88cec4bc8080ca03c76b0a0e74b0d9411f908bd58c4d924a044bb05c",
198
+ "models/deep/tft.pt": "ba2f16c8096cf19a0b03aec877fa86d8e63d4b47a292cf46dac8427157f3175d",
199
+ "models/deep/vae_lstm.pt": "01ca8499d57f012f5c903a52d780afacbe34195141cb752a6b77f64bf6c2dd55",
200
+ "models/deep/vanilla_lstm.pt": "59fcd7ed8c3d67705e1915e2948c450a6f368fbec078b5c77b06047dc19763f8"
201
+ },
202
+ "scalers": {
203
+ "scalers/features_minmax.joblib": "b3f81de4e3f3253eefc5779fbc49f0350f261c303a6a7af68ee3a426199cc406",
204
+ "scalers/features_standard.joblib": "c150d07ade0a82aa151f906dae135ff7f9d96055667cf471d7f767d17b8d4555",
205
+ "scalers/linear_scaler.joblib": "070d6b4565d669c50aec414a8e37f38b85409e81c171f71fb23cb3a93de43378",
206
+ "scalers/sequence_scaler.joblib": "1fb23b358b2ee1746ecaca97539be6282dcd9209d0265b886b9fb9a578455c1e"
207
+ },
208
+ "results": {
209
+ "results/classical_rul_results.csv": "8648784b058d52f1fc4877a43b4b6b4d0d88f852c2c22d9c83a06aa8e492c23d",
210
+ "results/classical_soh_results.csv": "1476ab4c0fd5320d54506664286ab7b87bb039bfe4c2ffbe0f86823633ec8041",
211
+ "results/dg_itransformer_results.json": "ec251c746c58329625ea51a50185ec2470e46476496e2819be55ddfdf0eb3ff2",
212
+ "results/ensemble_results.csv": "c2dbd24ac5b20b43e03312bef5aecb3efe0f9ef7dc276178ce619b25d6acae89",
213
+ "results/final_rankings.csv": "4384593f4435a7f99c5e9319fb0b7539f0e9816e83f7d63cb52ef97134ef0dd9",
214
+ "results/lstm_soh_results.csv": "bcec1411f1f3e5fe386e786f16cd640b94944f46091b0ca35a930108bb3b7e82",
215
+ "results/transformer_soh_results.csv": "6a203f57e83c4a1ae2086b132104c89b8c268a12ecfe436ea07094aacd9a6c39",
216
+ "results/unified_results.csv": "4384593f4435a7f99c5e9319fb0b7539f0e9816e83f7d63cb52ef97134ef0dd9",
217
+ "results/vae_lstm_results.json": "42718f18989aa7ccdee1ce136c3022c69843eed85e5a6265f4161c0995fafc51"
218
+ },
219
+ "features": {},
220
+ "figures": {
221
+ "figures/best_ensemble_prediction.png": "50796de89087cfdce1107659a3a7c2eb0afa64c27360db85954e8aec7cf9d626",
222
+ "figures/capacity_and_rul.png": "7f959be7175d1ec327791043e21b458e85704efdcd28b4367c85af8189f2464f",
223
+ "figures/capacity_distribution_by_temp.png": "330cef1f780e60781022b4de5df6c436a00cb273d34f468044d4e25dc0eafa14",
224
+ "figures/capacity_fade_all_batteries.png": "6648ac3c4fd69c353aff3193b2d033d8f2e4310e0294d373c05bfb887529c77c",
225
+ "figures/capacity_fade_by_temperature.png": "155954a71d58101924abe2d80bff60a56b4469643db016d0711176209be9b5b2",
226
+ "figures/capacity_fade_interactive.html": "e2abd1b2d8cf54e171313a5b9a5171024504fda5f3d2e9acf0f7dc51d6945a75",
227
+ "figures/ced_curves.png": "844eb2bb56fc9ff1cb1f83c16e7b26887b2877a7440ed557c866f6be0ebc2724",
228
+ "figures/classical_best_actual_vs_pred.png": "0cc3c98e2bdbedc59358f9279bb829e087fe617360c81b0f0bbccfec15372e47",
229
+ "figures/classical_best_residuals.png": "c870d1ad4bcb992de61934d6aa13c29a01bc2e878a499b21bf18d3ce73ade1e9",
230
+ "figures/classical_soh_comparison.png": "eb003dcfb2187f2f2b4b27150ec05ee5f5bf6c510c17b452001a2067bf57c8c8",
231
+ "figures/classification_confusion_matrices.png": "aa273d9a278bdd46776a8198771d089b813e441de0bcae5ca35d413e6cb9bd0b",
232
+ "figures/degradation_state_distribution.png": "cd56c91bee68ac8af3fae38fa3d66191fa1c12c41893792e0c0e7314026d95aa",
233
+ "figures/dg_itransformer_predictions.png": "2ed3c023d54631f410114715776e2aef1f4ef3596618b78417e24de87bd9314f",
234
+ "figures/dg_itransformer_training.png": "8493eb29923f7b90fd5e58076b628d53ae2ee97e004888b4bbd91534825c7843",
235
+ "figures/ensemble_comparison.png": "47848850e19011f3bcfefd812d241ad975da9adb70d920b178321e6eb545c0d4",
236
+ "figures/ensemble_weights.png": "a1b9e1be1855553f5f20b39ab97e0676859faea32140e8eec40af9346fe28ac1",
237
+ "figures/feature_correlation_heatmap.png": "4fca110021d7535da1c6d69853f2fd4e9ed3cdcc360cfb60917d28bfd4107fa2",
238
+ "figures/impedance_evolution.png": "b2589289d921fada36d10532fb1f91d3d1264142af4b21fb948f9823d7a584bf",
239
+ "figures/lstm_actual_vs_predicted.png": "54734cb01f1bd09160f86b3651b3a6880f5bd1d317baef0ad9301be6912d43fb",
240
+ "figures/lstm_training_curves.png": "66d0102d02409b59ec2c0bb8b9ad79fadc3860960278b75fa567905e6069ce74",
241
+ "figures/mc_dropout_uncertainty_lstm.png": "8ead85736e2ea8e8fa30d9463d4afd5c1dfefaa124c03f7e9b1ef603c5563e31",
242
+ "figures/radar_top6.png": "773072825ec89a283436abac3d49752702844ecd8c80b054584e74e52175c67f",
243
+ "figures/re_vs_rct_scatter.png": "3dd5a2c0ef78484a08fcc051236699106c148bdfb6a7d3aa0aac58d2ac3a6839",
244
+ "figures/shap_xgboost_soh.png": "46df87d18cfc5e95b939b18a779c446dc897a999f8ec58c3eb8b891796e66915",
245
+ "figures/soc_coulomb_counting_demo.png": "c63c6baca51effb37a89a7a84bf3faa81f52002ff032d1ec7cf0bcdf45bfd15e",
246
+ "figures/soh_degradation_trends.png": "56c131fbf98676e8f6611e30bf16a4f6065a311605235c442322a8f71d0fad8e",
247
+ "figures/soh_distribution.png": "7e3418411e17f22828d23127eb36f40fd19f633d9885950903c006f835db6003",
248
+ "figures/transformer_pt_training_curves.png": "57428057bf771dc5add14f335a018b206a383da5211a48b7423308c10880cae6",
249
+ "figures/transformer_tf_training_curves.png": "d210a17b965c2e013ab17dcb735c8ccc81c19db72aff11c2a0bce1189f471a3f",
250
+ "figures/unified_model_comparison.png": "d0aa5bc15e65da35fbdcc643478c8f3d813752407d77509951ad5a2ba13840e0",
251
+ "figures/vae_anomaly_detection.png": "7440d1088afd027ef81b7ef73f64b9d878b41a2369224ba27ed636a1906845f8",
252
+ "figures/vae_latent_umap.png": "5b5a86ba677705ac20aefa665bb78421a8201d8367fe5735946c1d33510a399b",
253
+ "figures/vae_lstm_prediction.png": "898b57fd9a7c57bd155056c3d6f72cce7a519b2550f8bd5c6e28675d0db36d14",
254
+ "figures/voltage_surface_3d.png": "2fc0d7449c0ab7dfa5599f96b3106100ef2c32c71230098d3fe101a133be94b3",
255
+ "figures/voltage_surface_3d_interactive.html": "7b354ed40d5962768dd7a5ba5d8f3453bcc197705bf2b3a4980ef80fa80603c7"
256
+ },
257
+ "generated_at_utc": "2026-03-10T18:10:43.027870+00:00"
258
+ },
259
+ "verification": {
260
+ "hash_algorithm": "sha256",
261
+ "required": true,
262
+ "last_verified_utc": "2026-03-10T18:10:43.027870+00:00"
263
+ }
264
  }
v2/figures/{v2_best_actual_vs_pred.png β†’ best_actual_vs_pred.png} RENAMED
File without changes
v2/figures/{v2_classical_top8.png β†’ classical_top8.png} RENAMED
File without changes
v2/models.json CHANGED
@@ -5,9 +5,18 @@
5
  "split_strategy": "intra-battery chronological split (80/20 per battery)",
6
  "features": 12,
7
  "feature_set": [
8
- "cycle_number", "ambient_temperature", "peak_voltage", "min_voltage",
9
- "voltage_range", "avg_current", "avg_temp", "temp_rise",
10
- "cycle_duration", "Re", "Rct", "delta_capacity"
 
 
 
 
 
 
 
 
 
11
  ],
12
  "sequence_length": 32,
13
  "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles, 1734 sequences)",
@@ -22,7 +31,9 @@
22
  "mae": 1.17,
23
  "within_5pct": 99.1,
24
  "requires_scaling": false,
25
- "file": "models/classical/extra_trees.joblib"
 
 
26
  },
27
  "lightgbm": {
28
  "display_name": "LightGBM",
@@ -33,7 +44,9 @@
33
  "mae": 1.38,
34
  "within_5pct": 98.4,
35
  "requires_scaling": false,
36
- "file": "models/classical/lightgbm.joblib"
 
 
37
  },
38
  "gradient_boosting": {
39
  "display_name": "GradientBoosting",
@@ -44,7 +57,9 @@
44
  "mae": 1.46,
45
  "within_5pct": 98.4,
46
  "requires_scaling": false,
47
- "file": "models/classical/gradient_boosting.joblib"
 
 
48
  },
49
  "random_forest": {
50
  "display_name": "Random Forest",
@@ -55,7 +70,9 @@
55
  "mae": 1.89,
56
  "within_5pct": 94.0,
57
  "requires_scaling": false,
58
- "file": "models/classical/random_forest.joblib"
 
 
59
  },
60
  "xgboost": {
61
  "display_name": "XGBoost",
@@ -66,7 +83,9 @@
66
  "mae": 3.59,
67
  "within_5pct": 89.6,
68
  "requires_scaling": false,
69
- "file": "models/classical/xgboost.joblib"
 
 
70
  },
71
  "svr": {
72
  "display_name": "SVR (RBF)",
@@ -77,7 +96,9 @@
77
  "mae": 1.67,
78
  "within_5pct": 95.1,
79
  "requires_scaling": true,
80
- "file": "models/classical/svr.joblib"
 
 
81
  },
82
  "ridge": {
83
  "display_name": "Ridge Regression",
@@ -87,7 +108,9 @@
87
  "r2": 0.5281,
88
  "mae": 5.57,
89
  "requires_scaling": true,
90
- "file": "models/classical/ridge.joblib"
 
 
91
  },
92
  "knn_k5": {
93
  "display_name": "KNN (k=5)",
@@ -95,10 +118,12 @@
95
  "algorithm": "KNeighborsRegressor",
96
  "version": "2.0",
97
  "r2": 0.8995,
98
- "mae": 2.40,
99
  "within_5pct": 89.8,
100
  "requires_scaling": true,
101
- "file": "models/classical/knn_k5.joblib"
 
 
102
  },
103
  "vanilla_lstm": {
104
  "display_name": "Vanilla LSTM",
@@ -108,37 +133,45 @@
108
  "r2": 0.507,
109
  "mae": 11.44,
110
  "requires_scaling": true,
111
- "file": "models/deep/vanilla_lstm.pt"
 
 
112
  },
113
  "bidirectional_lstm": {
114
  "display_name": "Bidirectional LSTM",
115
  "family": "deep_pytorch",
116
  "algorithm": "BidirectionalLSTM",
117
  "version": "2.0",
118
- "r2": 0.520,
119
  "mae": null,
120
  "requires_scaling": true,
121
- "file": "models/deep/bidirectional_lstm.pt"
 
 
122
  },
123
  "gru": {
124
  "display_name": "GRU",
125
  "family": "deep_pytorch",
126
  "algorithm": "GRUModel",
127
  "version": "2.0",
128
- "r2": 0.510,
129
  "mae": null,
130
  "requires_scaling": true,
131
- "file": "models/deep/gru.pt"
 
 
132
  },
133
  "attention_lstm": {
134
  "display_name": "Attention LSTM",
135
  "family": "deep_pytorch",
136
  "algorithm": "AttentionLSTM",
137
  "version": "2.0",
138
- "r2": 0.540,
139
  "mae": null,
140
  "requires_scaling": true,
141
- "file": "models/deep/attention_lstm.pt"
 
 
142
  },
143
  "batterygpt": {
144
  "display_name": "BatteryGPT",
@@ -148,7 +181,9 @@
148
  "r2": 0.881,
149
  "mae": 10.71,
150
  "requires_scaling": true,
151
- "file": "models/deep/batterygpt.pt"
 
 
152
  },
153
  "tft": {
154
  "display_name": "Temporal Fusion Transformer",
@@ -158,17 +193,21 @@
158
  "r2": 0.881,
159
  "mae": 3.93,
160
  "requires_scaling": true,
161
- "file": "models/deep/tft.pt"
 
 
162
  },
163
  "vae_lstm": {
164
  "display_name": "VAE-LSTM",
165
  "family": "deep_pytorch",
166
  "algorithm": "VAE_LSTM",
167
  "version": "2.0",
168
- "r2": 0.730,
169
  "mae": 7.82,
170
  "requires_scaling": true,
171
- "file": "models/deep/vae_lstm.pt"
 
 
172
  },
173
  "itransformer": {
174
  "display_name": "iTransformer",
@@ -176,19 +215,23 @@
176
  "algorithm": "iTransformer",
177
  "version": "2.0",
178
  "r2": 0.551,
179
- "mae": 11.10,
180
  "requires_scaling": true,
181
- "file": "models/deep/itransformer.keras"
 
 
182
  },
183
  "physics_itransformer": {
184
  "display_name": "Physics iTransformer",
185
  "family": "deep_keras",
186
  "algorithm": "PhysicsITransformer",
187
  "version": "2.0",
188
- "r2": 0.600,
189
  "mae": null,
190
  "requires_scaling": true,
191
- "file": "models/deep/physics_itransformer.keras"
 
 
192
  },
193
  "dynamic_graph_itransformer": {
194
  "display_name": "DG-iTransformer",
@@ -198,7 +241,9 @@
198
  "r2": 0.595,
199
  "mae": 9.38,
200
  "requires_scaling": true,
201
- "file": "models/deep/dynamic_graph_itransformer.keras"
 
 
202
  },
203
  "best_ensemble": {
204
  "display_name": "Best Ensemble (RF+XGB+LGB)",
@@ -208,7 +253,11 @@
208
  "r2": 0.886,
209
  "mae": 3.89,
210
  "requires_scaling": false,
211
- "components": ["random_forest", "xgboost", "lightgbm"],
 
 
 
 
212
  "file": null
213
  }
214
  },
@@ -218,5 +267,129 @@
218
  },
219
  "champion": "extra_trees",
220
  "training_date": "2026-01-15",
221
- "framework": ["scikit-learn", "xgboost", "lightgbm", "pytorch", "tensorflow"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  }
 
5
  "split_strategy": "intra-battery chronological split (80/20 per battery)",
6
  "features": 12,
7
  "feature_set": [
8
+ "cycle_number",
9
+ "ambient_temperature",
10
+ "peak_voltage",
11
+ "min_voltage",
12
+ "voltage_range",
13
+ "avg_current",
14
+ "avg_temp",
15
+ "temp_rise",
16
+ "cycle_duration",
17
+ "Re",
18
+ "Rct",
19
+ "delta_capacity"
20
  ],
21
  "sequence_length": 32,
22
  "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles, 1734 sequences)",
 
31
  "mae": 1.17,
32
  "within_5pct": 99.1,
33
  "requires_scaling": false,
34
+ "file": "models/classical/extra_trees.joblib",
35
+ "sha256": "26b9501df3d477d474a88fda3b742142f226b5d43069f2cc2c83f7d971127e48",
36
+ "bytes": 129434065
37
  },
38
  "lightgbm": {
39
  "display_name": "LightGBM",
 
44
  "mae": 1.38,
45
  "within_5pct": 98.4,
46
  "requires_scaling": false,
47
+ "file": "models/classical/lightgbm.joblib",
48
+ "sha256": "51d3cede8af476871036909ca69fed40d91558b25c2f7663386654d999ddb3ca",
49
+ "bytes": 9016891
50
  },
51
  "gradient_boosting": {
52
  "display_name": "GradientBoosting",
 
57
  "mae": 1.46,
58
  "within_5pct": 98.4,
59
  "requires_scaling": false,
60
+ "file": "models/classical/gradient_boosting.joblib",
61
+ "sha256": "492e4b46dd31b485ce157182ecdec038c2c47520466831e8b8b1530d43f9b0cc",
62
+ "bytes": 5329994
63
  },
64
  "random_forest": {
65
  "display_name": "Random Forest",
 
70
  "mae": 1.89,
71
  "within_5pct": 94.0,
72
  "requires_scaling": false,
73
+ "file": "models/classical/random_forest.joblib",
74
+ "sha256": "863dbf027cb78f88500ac9bd753d4148cba42e9e16b1d546a9c7858834cdfc5f",
75
+ "bytes": 84496273
76
  },
77
  "xgboost": {
78
  "display_name": "XGBoost",
 
83
  "mae": 3.59,
84
  "within_5pct": 89.6,
85
  "requires_scaling": false,
86
+ "file": "models/classical/xgboost.joblib",
87
+ "sha256": "415e497fab79dad35648435d5d71b48eb2f0a3892c5ab32b54a33547a640e6de",
88
+ "bytes": 11282160
89
  },
90
  "svr": {
91
  "display_name": "SVR (RBF)",
 
96
  "mae": 1.67,
97
  "within_5pct": 95.1,
98
  "requires_scaling": true,
99
+ "file": "models/classical/svr.joblib",
100
+ "sha256": "fbeacb67245b695abf56c2f98716d4829018485869823d371bec136a6904f097",
101
+ "bytes": 133966
102
  },
103
  "ridge": {
104
  "display_name": "Ridge Regression",
 
108
  "r2": 0.5281,
109
  "mae": 5.57,
110
  "requires_scaling": true,
111
+ "file": "models/classical/ridge.joblib",
112
+ "sha256": "3b2afc35f81469da28ec4620092dd955c5925689c865a57e81d2cf00fbf0f60a",
113
+ "bytes": 348607297
114
  },
115
  "knn_k5": {
116
  "display_name": "KNN (k=5)",
 
118
  "algorithm": "KNeighborsRegressor",
119
  "version": "2.0",
120
  "r2": 0.8995,
121
+ "mae": 2.4,
122
  "within_5pct": 89.8,
123
  "requires_scaling": true,
124
+ "file": "models/classical/knn_k5.joblib",
125
+ "sha256": "c0a40627460b696ae0d8d949fea6fcd20c3bcb3dc1b204b7fa36a6284eab7317",
126
+ "bytes": 430772
127
  },
128
  "vanilla_lstm": {
129
  "display_name": "Vanilla LSTM",
 
133
  "r2": 0.507,
134
  "mae": 11.44,
135
  "requires_scaling": true,
136
+ "file": "models/deep/vanilla_lstm.pt",
137
+ "sha256": "59fcd7ed8c3d67705e1915e2948c450a6f368fbec078b5c77b06047dc19763f8",
138
+ "bytes": 822199
139
  },
140
  "bidirectional_lstm": {
141
  "display_name": "Bidirectional LSTM",
142
  "family": "deep_pytorch",
143
  "algorithm": "BidirectionalLSTM",
144
  "version": "2.0",
145
+ "r2": 0.52,
146
  "mae": null,
147
  "requires_scaling": true,
148
+ "file": "models/deep/bidirectional_lstm.pt",
149
+ "sha256": "3466feebff37d8c671bdeb4d4cf248fdbc04e7a10648f0d847e987ceb459b57a",
150
+ "bytes": 2167009
151
  },
152
  "gru": {
153
  "display_name": "GRU",
154
  "family": "deep_pytorch",
155
  "algorithm": "GRUModel",
156
  "version": "2.0",
157
+ "r2": 0.51,
158
  "mae": null,
159
  "requires_scaling": true,
160
+ "file": "models/deep/gru.pt",
161
+ "sha256": "2733aa85767d37fe22eb88989cdddf51de204b131f8b3a7feee5aa7c5af42024",
162
+ "bytes": 617208
163
  },
164
  "attention_lstm": {
165
  "display_name": "Attention LSTM",
166
  "family": "deep_pytorch",
167
  "algorithm": "AttentionLSTM",
168
  "version": "2.0",
169
+ "r2": 0.54,
170
  "mae": null,
171
  "requires_scaling": true,
172
+ "file": "models/deep/attention_lstm.pt",
173
+ "sha256": "6f9f6b8e2b9d4794ad1a1452e33c5ec81a917472a6a98cb131d0523c22a82f8a",
174
+ "bytes": 1451025
175
  },
176
  "batterygpt": {
177
  "display_name": "BatteryGPT",
 
181
  "r2": 0.881,
182
  "mae": 10.71,
183
  "requires_scaling": true,
184
+ "file": "models/deep/batterygpt.pt",
185
+ "sha256": "16dd869d04bf7ef126489dfa3dc386b65dcaa0dc7823051139d6df8ed1ca8343",
186
+ "bytes": 430498
187
  },
188
  "tft": {
189
  "display_name": "Temporal Fusion Transformer",
 
193
  "r2": 0.881,
194
  "mae": 3.93,
195
  "requires_scaling": true,
196
+ "file": "models/deep/tft.pt",
197
+ "sha256": "ba2f16c8096cf19a0b03aec877fa86d8e63d4b47a292cf46dac8427157f3175d",
198
+ "bytes": 3743692
199
  },
200
  "vae_lstm": {
201
  "display_name": "VAE-LSTM",
202
  "family": "deep_pytorch",
203
  "algorithm": "VAE_LSTM",
204
  "version": "2.0",
205
+ "r2": 0.73,
206
  "mae": 7.82,
207
  "requires_scaling": true,
208
+ "file": "models/deep/vae_lstm.pt",
209
+ "sha256": "01ca8499d57f012f5c903a52d780afacbe34195141cb752a6b77f64bf6c2dd55",
210
+ "bytes": 3288250
211
  },
212
  "itransformer": {
213
  "display_name": "iTransformer",
 
215
  "algorithm": "iTransformer",
216
  "version": "2.0",
217
  "r2": 0.551,
218
+ "mae": 11.1,
219
  "requires_scaling": true,
220
+ "file": "models/deep/itransformer.keras",
221
+ "sha256": "5d47f6d088b4a7f453863188a05d77a8e1cc88326b88180e3f5831ee2da0dee6",
222
+ "bytes": 1703636
223
  },
224
  "physics_itransformer": {
225
  "display_name": "Physics iTransformer",
226
  "family": "deep_keras",
227
  "algorithm": "PhysicsITransformer",
228
  "version": "2.0",
229
+ "r2": 0.6,
230
  "mae": null,
231
  "requires_scaling": true,
232
+ "file": "models/deep/physics_itransformer.keras",
233
+ "sha256": "ebbeb7de88cec4bc8080ca03c76b0a0e74b0d9411f908bd58c4d924a044bb05c",
234
+ "bytes": 1750974
235
  },
236
  "dynamic_graph_itransformer": {
237
  "display_name": "DG-iTransformer",
 
241
  "r2": 0.595,
242
  "mae": 9.38,
243
  "requires_scaling": true,
244
+ "file": "models/deep/dynamic_graph_itransformer.keras",
245
+ "sha256": "6bbca626faeaa1472966659e9908be1ed4db0889c8668602be1fe2c4b143a338",
246
+ "bytes": 1716519
247
  },
248
  "best_ensemble": {
249
  "display_name": "Best Ensemble (RF+XGB+LGB)",
 
253
  "r2": 0.886,
254
  "mae": 3.89,
255
  "requires_scaling": false,
256
+ "components": [
257
+ "random_forest",
258
+ "xgboost",
259
+ "lightgbm"
260
+ ],
261
  "file": null
262
  }
263
  },
 
267
  },
268
  "champion": "extra_trees",
269
  "training_date": "2026-01-15",
270
+ "framework": [
271
+ "scikit-learn",
272
+ "xgboost",
273
+ "lightgbm",
274
+ "pytorch",
275
+ "tensorflow"
276
+ ],
277
+ "scaler_checksums": {
278
+ "standard_scaler": "f1cf42692e735612a9afe241b2623dd46f28c04fccb3945a6082cae22eb8847c",
279
+ "sequence_scaler": "1fb23b358b2ee1746ecaca97539be6282dcd9209d0265b886b9fb9a578455c1e"
280
+ },
281
+ "checksums": {
282
+ "models": {
283
+ "models/classical/best_rul_model.joblib": "12ea21f09889fbdf1638a4eecbb789588cfdc81a4202f24708fa40c9ef90cba9",
284
+ "models/classical/elasticnet.joblib": "394afde1b6ec00af22c37a917a22fe6a505d290f6a2ef91d35d2bdb8795ea83c",
285
+ "models/classical/extra_trees.joblib": "26b9501df3d477d474a88fda3b742142f226b5d43069f2cc2c83f7d971127e48",
286
+ "models/classical/gradient_boosting.joblib": "492e4b46dd31b485ce157182ecdec038c2c47520466831e8b8b1530d43f9b0cc",
287
+ "models/classical/knn_k10.joblib": "bb5ac2f3e1ab77528731f03e0cb4485906be454d19e8f699090ae2487b37a56c",
288
+ "models/classical/knn_k20.joblib": "0c89537e6b72b228bf209b299069285f2d784d92554c3016c50075223ab41915",
289
+ "models/classical/knn_k5.joblib": "c0a40627460b696ae0d8d949fea6fcd20c3bcb3dc1b204b7fa36a6284eab7317",
290
+ "models/classical/lasso.joblib": "7514dce7a63ac41873fed2e7c09ff5a999845231b9fc354f5c38949cd74f9f38",
291
+ "models/classical/lightgbm.joblib": "51d3cede8af476871036909ca69fed40d91558b25c2f7663386654d999ddb3ca",
292
+ "models/classical/lightgbm_best_params.joblib": "95c4ce7b35f4c2e82dfbee7c915334438e7b5a599b301a0e9ce01f234af6a138",
293
+ "models/classical/random_forest.joblib": "863dbf027cb78f88500ac9bd753d4148cba42e9e16b1d546a9c7858834cdfc5f",
294
+ "models/classical/rf_classifier.joblib": "576f3e348aba1eeeab545be52cd41a371eb6c99cad2856f180712838557979c3",
295
+ "models/classical/ridge.joblib": "3b2afc35f81469da28ec4620092dd955c5925689c865a57e81d2cf00fbf0f60a",
296
+ "models/classical/svr.joblib": "fbeacb67245b695abf56c2f98716d4829018485869823d371bec136a6904f097",
297
+ "models/classical/xgb_classifier.joblib": "f8a4854d0dc4253490a317cf18f1253ab23111c343d91b7fa6fa2b9683d698dd",
298
+ "models/classical/xgboost.joblib": "415e497fab79dad35648435d5d71b48eb2f0a3892c5ab32b54a33547a640e6de",
299
+ "models/classical/xgboost_best_params.joblib": "140456f00362a7b88bb8fd4de8f68f1e5d52b844eb94aae6da13ddae6e38b601",
300
+ "models/deep/attention_lstm.pt": "6f9f6b8e2b9d4794ad1a1452e33c5ec81a917472a6a98cb131d0523c22a82f8a",
301
+ "models/deep/batterygpt.pt": "16dd869d04bf7ef126489dfa3dc386b65dcaa0dc7823051139d6df8ed1ca8343",
302
+ "models/deep/bidirectional_lstm.pt": "3466feebff37d8c671bdeb4d4cf248fdbc04e7a10648f0d847e987ceb459b57a",
303
+ "models/deep/dynamic_graph_itransformer.keras": "6bbca626faeaa1472966659e9908be1ed4db0889c8668602be1fe2c4b143a338",
304
+ "models/deep/gru.pt": "2733aa85767d37fe22eb88989cdddf51de204b131f8b3a7feee5aa7c5af42024",
305
+ "models/deep/itransformer.keras": "5d47f6d088b4a7f453863188a05d77a8e1cc88326b88180e3f5831ee2da0dee6",
306
+ "models/deep/physics_itransformer.keras": "ebbeb7de88cec4bc8080ca03c76b0a0e74b0d9411f908bd58c4d924a044bb05c",
307
+ "models/deep/tft.pt": "ba2f16c8096cf19a0b03aec877fa86d8e63d4b47a292cf46dac8427157f3175d",
308
+ "models/deep/vae_lstm.pt": "01ca8499d57f012f5c903a52d780afacbe34195141cb752a6b77f64bf6c2dd55",
309
+ "models/deep/vanilla_lstm.pt": "59fcd7ed8c3d67705e1915e2948c450a6f368fbec078b5c77b06047dc19763f8"
310
+ },
311
+ "scalers": {
312
+ "scalers/features_minmax.joblib": "b3f81de4e3f3253eefc5779fbc49f0350f261c303a6a7af68ee3a426199cc406",
313
+ "scalers/features_standard.joblib": "c150d07ade0a82aa151f906dae135ff7f9d96055667cf471d7f767d17b8d4555",
314
+ "scalers/linear_scaler.joblib": "f1cf42692e735612a9afe241b2623dd46f28c04fccb3945a6082cae22eb8847c",
315
+ "scalers/sequence_scaler.joblib": "1fb23b358b2ee1746ecaca97539be6282dcd9209d0265b886b9fb9a578455c1e",
316
+ "scalers/standard_scaler.joblib": "f1cf42692e735612a9afe241b2623dd46f28c04fccb3945a6082cae22eb8847c"
317
+ },
318
+ "results": {
319
+ "results/battery_features.csv": "5df4aff7d420a05d38215df5d840689bfaca27eea80e337dadf8a6882172e897",
320
+ "results/battery_sequences.npz": "678993299c19a38ecc682c9d74d35eeae7b8678e6bbe4dad8a831ab160cb3b0b",
321
+ "results/best_model_analysis.png": "82226ec881c24c7b9a4e203860179adba2e7b1147fd2d111423ac1a26d458146",
322
+ "results/classical_results.csv": "a5a401c558bb3859386a6d1c7a7db26e60ee724111b32a577b805d165888c217",
323
+ "results/classical_rul_results.csv": "8648784b058d52f1fc4877a43b4b6b4d0d88f852c2c22d9c83a06aa8e492c23d",
324
+ "results/classical_soh_results.csv": "1476ab4c0fd5320d54506664286ab7b87bb039bfe4c2ffbe0f86823633ec8041",
325
+ "results/dg_itransformer_results.json": "ec251c746c58329625ea51a50185ec2470e46476496e2819be55ddfdf0eb3ff2",
326
+ "results/ensemble_results.csv": "c2dbd24ac5b20b43e03312bef5aecb3efe0f9ef7dc276178ce619b25d6acae89",
327
+ "results/final_rankings.csv": "4384593f4435a7f99c5e9319fb0b7539f0e9816e83f7d63cb52ef97134ef0dd9",
328
+ "results/intra_battery.json": "cc1a80b3922532377b72d5d6229f3d154024ccddb8c9984f973f121ba916a880",
329
+ "results/lstm_soh_results.csv": "bcec1411f1f3e5fe386e786f16cd640b94944f46091b0ca35a930108bb3b7e82",
330
+ "results/model_validation.csv": "bb55b774a35f81ada3cb1f829bcb765d4b9ad1e2fdfc37cff62c80d253ad83c8",
331
+ "results/per_battery_accuracy.png": "bdaf8a7e305790081be928da97af30e506aa277a51d8342051d1630c2e20a99d",
332
+ "results/r2_vs_accuracy.png": "d24044551405226692fe75f7fe2af0daaee9186d42a0a6aa0dbca56af89724b4",
333
+ "results/training_summary.json": "6b317795c471ff4a5791ff7a26b4ce9f6ab26b77e5128db6ec29fc7ce1e80d6e",
334
+ "results/transformer_soh_results.csv": "6a203f57e83c4a1ae2086b132104c89b8c268a12ecfe436ea07094aacd9a6c39",
335
+ "results/unified_results.csv": "4384593f4435a7f99c5e9319fb0b7539f0e9816e83f7d63cb52ef97134ef0dd9",
336
+ "results/vae_lstm_results.json": "42718f18989aa7ccdee1ce136c3022c69843eed85e5a6265f4161c0995fafc51",
337
+ "results/validation_accuracy_bars.png": "5ee67a1ed3b8c3a4c6c34a2b035c0c85b1b4802f44910f83841a113a44bcab5e",
338
+ "results/validation_report.html": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
339
+ "results/validation_summary.json": "a42fc7d4ad5ac5b388360c70849a3938ee957c78e521928432312ed9e5e5c926"
340
+ },
341
+ "features": {},
342
+ "figures": {
343
+ "figures/best_actual_vs_pred.png": "532c0c65980696fc47414b6b97417d8ba10ba37ed71f3b115bcaa9076b9926cf",
344
+ "figures/best_ensemble_prediction.png": "50796de89087cfdce1107659a3a7c2eb0afa64c27360db85954e8aec7cf9d626",
345
+ "figures/capacity_and_rul.png": "7f959be7175d1ec327791043e21b458e85704efdcd28b4367c85af8189f2464f",
346
+ "figures/capacity_distribution_by_temp.png": "330cef1f780e60781022b4de5df6c436a00cb273d34f468044d4e25dc0eafa14",
347
+ "figures/capacity_fade_all_batteries.png": "6648ac3c4fd69c353aff3193b2d033d8f2e4310e0294d373c05bfb887529c77c",
348
+ "figures/capacity_fade_by_temperature.png": "155954a71d58101924abe2d80bff60a56b4469643db016d0711176209be9b5b2",
349
+ "figures/capacity_fade_interactive.html": "e2abd1b2d8cf54e171313a5b9a5171024504fda5f3d2e9acf0f7dc51d6945a75",
350
+ "figures/ced_curves.png": "844eb2bb56fc9ff1cb1f83c16e7b26887b2877a7440ed557c866f6be0ebc2724",
351
+ "figures/classical_best_actual_vs_pred.png": "0cc3c98e2bdbedc59358f9279bb829e087fe617360c81b0f0bbccfec15372e47",
352
+ "figures/classical_best_actual_vs_pred_v2.png": "8bdd0a9e70df7997338c86a5ab967b749f4b84df1f4f960726ced07554a33ffe",
353
+ "figures/classical_best_residuals.png": "c870d1ad4bcb992de61934d6aa13c29a01bc2e878a499b21bf18d3ce73ade1e9",
354
+ "figures/classical_best_residuals_v2.png": "2af3670aff7df066ba73e92a427165d89b113605fc30083d7858493431bdddf9",
355
+ "figures/classical_soh_comparison.png": "eb003dcfb2187f2f2b4b27150ec05ee5f5bf6c510c17b452001a2067bf57c8c8",
356
+ "figures/classical_soh_comparison_v2.png": "1e58922ab4265aa9156e1e7afd5c000a897c1b69d049c058a6d5fb75f54c7790",
357
+ "figures/classical_top8.png": "9bea4f378061b56f5c3a38ae31d01a66890986a1a80c9b0b68748e9093636b7d",
358
+ "figures/classification_confusion_matrices.png": "aa273d9a278bdd46776a8198771d089b813e441de0bcae5ca35d413e6cb9bd0b",
359
+ "figures/classification_confusion_matrices_v2.png": "21e23b236d6875878f1c6be37445c59db196cd45302727537638f00da95edf75",
360
+ "figures/degradation_state_distribution.png": "cd56c91bee68ac8af3fae38fa3d66191fa1c12c41893792e0c0e7314026d95aa",
361
+ "figures/dg_itransformer_predictions.png": "2ed3c023d54631f410114715776e2aef1f4ef3596618b78417e24de87bd9314f",
362
+ "figures/dg_itransformer_training.png": "8493eb29923f7b90fd5e58076b628d53ae2ee97e004888b4bbd91534825c7843",
363
+ "figures/ensemble_comparison.png": "47848850e19011f3bcfefd812d241ad975da9adb70d920b178321e6eb545c0d4",
364
+ "figures/ensemble_weights.png": "a1b9e1be1855553f5f20b39ab97e0676859faea32140e8eec40af9346fe28ac1",
365
+ "figures/feature_correlation_heatmap.png": "4fca110021d7535da1c6d69853f2fd4e9ed3cdcc360cfb60917d28bfd4107fa2",
366
+ "figures/impedance_evolution.png": "b2589289d921fada36d10532fb1f91d3d1264142af4b21fb948f9823d7a584bf",
367
+ "figures/lstm_actual_vs_predicted.png": "54734cb01f1bd09160f86b3651b3a6880f5bd1d317baef0ad9301be6912d43fb",
368
+ "figures/lstm_training_curves.png": "66d0102d02409b59ec2c0bb8b9ad79fadc3860960278b75fa567905e6069ce74",
369
+ "figures/mc_dropout_uncertainty_lstm.png": "8ead85736e2ea8e8fa30d9463d4afd5c1dfefaa124c03f7e9b1ef603c5563e31",
370
+ "figures/per_battery_mae_heatmap_v2.png": "77bee8b0a28c97149dec3dfc836d9467163b82320493e5902b9efb72aa962f6d",
371
+ "figures/radar_top6.png": "773072825ec89a283436abac3d49752702844ecd8c80b054584e74e52175c67f",
372
+ "figures/re_vs_rct_scatter.png": "3dd5a2c0ef78484a08fcc051236699106c148bdfb6a7d3aa0aac58d2ac3a6839",
373
+ "figures/shap_rf_soh_v2.png": "504a723d55722fb79f9234e7002cb91823da562ea8996afc24b673f49709d9fa",
374
+ "figures/shap_xgboost_soh.png": "46df87d18cfc5e95b939b18a779c446dc897a999f8ec58c3eb8b891796e66915",
375
+ "figures/shap_xgboost_soh_v2.png": "e2135a497b8c16daa6eef84f43ac27c03122cbc55da2c3f3e7810a86541257cc",
376
+ "figures/soc_coulomb_counting_demo.png": "c63c6baca51effb37a89a7a84bf3faa81f52002ff032d1ec7cf0bcdf45bfd15e",
377
+ "figures/soh_degradation_trends.png": "56c131fbf98676e8f6611e30bf16a4f6065a311605235c442322a8f71d0fad8e",
378
+ "figures/soh_distribution.png": "7e3418411e17f22828d23127eb36f40fd19f633d9885950903c006f835db6003",
379
+ "figures/transformer_pt_training_curves.png": "57428057bf771dc5add14f335a018b206a383da5211a48b7423308c10880cae6",
380
+ "figures/transformer_tf_training_curves.png": "d210a17b965c2e013ab17dcb735c8ccc81c19db72aff11c2a0bce1189f471a3f",
381
+ "figures/unified_model_comparison.png": "d0aa5bc15e65da35fbdcc643478c8f3d813752407d77509951ad5a2ba13840e0",
382
+ "figures/vae_anomaly_detection.png": "7440d1088afd027ef81b7ef73f64b9d878b41a2369224ba27ed636a1906845f8",
383
+ "figures/vae_latent_umap.png": "5b5a86ba677705ac20aefa665bb78421a8201d8367fe5735946c1d33510a399b",
384
+ "figures/vae_lstm_prediction.png": "898b57fd9a7c57bd155056c3d6f72cce7a519b2550f8bd5c6e28675d0db36d14",
385
+ "figures/voltage_surface_3d.png": "2fc0d7449c0ab7dfa5599f96b3106100ef2c32c71230098d3fe101a133be94b3",
386
+ "figures/voltage_surface_3d_interactive.html": "7b354ed40d5962768dd7a5ba5d8f3453bcc197705bf2b3a4980ef80fa80603c7"
387
+ },
388
+ "generated_at_utc": "2026-03-10T18:10:44.185547+00:00"
389
+ },
390
+ "verification": {
391
+ "hash_algorithm": "sha256",
392
+ "required": true,
393
+ "last_verified_utc": "2026-03-10T18:10:44.185547+00:00"
394
+ }
395
  }
v2/reports/{v2_model_validation.csv β†’ model_validation.csv} RENAMED
File without changes
v2/reports/{v2_validation_report.html β†’ validation_report.html} RENAMED
File without changes
v2/reports/{v2_validation_summary.json β†’ validation_summary.json} RENAMED
File without changes
v2/results/{v2_classical_results.csv β†’ classical_results.csv} RENAMED
File without changes
v2/results/{v2_intra_battery.json β†’ intra_battery.json} RENAMED
File without changes
v2/results/{v2_model_validation.csv β†’ model_validation.csv} RENAMED
File without changes
v2/results/{v2_training_summary.json β†’ training_summary.json} RENAMED
File without changes
v2/results/{v2_validation_report.html β†’ validation_report.html} RENAMED
File without changes
v2/results/{v2_validation_summary.json β†’ validation_summary.json} RENAMED
File without changes
v3/figures/{v3_dg_itransformer_training.png β†’ best_ensemble_prediction.png} RENAMED
File without changes
v3/figures/{v3_capacity_and_rul.png β†’ capacity_and_rul.png} RENAMED
File without changes
figures/v3_radar_top6.png β†’ v3/figures/ced_curves.png RENAMED
File without changes
v3/figures/{v3_degradation_state_distribution.png β†’ degradation_state_distribution.png} RENAMED
File without changes
v3/figures/{v3_ced_curves.png β†’ dg_itransformer_predictions.png} RENAMED
File without changes
v3/figures/{v3_best_ensemble_prediction.png β†’ dg_itransformer_training.png} RENAMED
File without changes
v3/figures/{v3_ensemble_comparison.png β†’ ensemble_comparison.png} RENAMED
File without changes
v3/figures/{v3_ensemble_weights.png β†’ ensemble_confusion_matrix.png} RENAMED
File without changes
v3/figures/ensemble_weights.png ADDED

Git LFS Details

  • SHA256: bc4e7bb2f3f28603cc0c87e822705350678bef74e648adebea4fea3a867d9ad3
  • Pointer size: 130 Bytes
  • Size of remote file: 24.8 kB
v3/figures/{v3_feature_correlation_heatmap.png β†’ feature_correlation_heatmap.png} RENAMED
File without changes
v3/figures/{v3_dg_itransformer_predictions.png β†’ lstm_actual_vs_predicted.png} RENAMED
File without changes
v3/figures/lstm_training_curves.png ADDED

Git LFS Details

  • SHA256: 2449a96970013a4eb356dbb185122a7a1e94339e3f41d75b8e4fc9c560adf10d
  • Pointer size: 131 Bytes
  • Size of remote file: 215 kB
v3/figures/mc_dropout_uncertainty_lstm.png ADDED

Git LFS Details

  • SHA256: dad1598483196fa7686b77ba89dcd44413f8a3c0ec19c10f09b8aabf61fd6542
  • Pointer size: 131 Bytes
  • Size of remote file: 162 kB
v3/figures/{v3_soc_coulomb_counting_demo.png β†’ soc_coulomb_counting_demo.png} RENAMED
File without changes
v3/figures/{v3_soh_degradation_trends.png β†’ soh_degradation_trends.png} RENAMED
File without changes
v3/figures/transformer_pt_training_curves.png ADDED

Git LFS Details

  • SHA256: 20c4ea6e1802b7557cbf01c439ec51dc4fda230a79a081016fcda4bec8065040
  • Pointer size: 130 Bytes
  • Size of remote file: 88.7 kB
v3/figures/transformer_tf_training_curves.png ADDED

Git LFS Details

  • SHA256: a278a36ef3150dfb7fdeb2f89559ac18ccfafd4a4b6ae80d047c0de926e8a9ac
  • Pointer size: 130 Bytes
  • Size of remote file: 88.2 kB
v3/figures/unified_model_comparison.png ADDED

Git LFS Details

  • SHA256: 5a9de76ea1a4c49327875db1a894afb7c30ea65f4235700726e447c24fdeaa37
  • Pointer size: 131 Bytes
  • Size of remote file: 142 kB
v3/figures/v3_lstm_actual_vs_predicted.png DELETED

Git LFS Details

  • SHA256: 32bef1ce3841173f3b90b9aacec1e45a27dfd7fa0e90385406163ffed3746911
  • Pointer size: 131 Bytes
  • Size of remote file: 195 kB
v3/figures/v3_lstm_training_curves.png DELETED

Git LFS Details

  • SHA256: d143c3a24f885a27395aed4723b68f74b4d6489c91eceb3cf81093fed4122a13
  • Pointer size: 131 Bytes
  • Size of remote file: 217 kB
v3/figures/v3_mc_dropout_uncertainty_lstm.png DELETED

Git LFS Details

  • SHA256: faf969c0178e65d6f343d810d660d38873de8380a93c6e0ca3867855e5e1e7e0
  • Pointer size: 131 Bytes
  • Size of remote file: 200 kB
v3/figures/v3_transformer_pt_training_curves.png DELETED

Git LFS Details

  • SHA256: 81705d7db52b9098c674253b61a0b4e07c986bcd1033fb609eb19e47f29c5c15
  • Pointer size: 130 Bytes
  • Size of remote file: 92.8 kB
v3/figures/v3_transformer_tf_training_curves.png DELETED

Git LFS Details

  • SHA256: bd61babeb82e9656ec6a8354d286f0c1e4a855fef734138e64ad423e30bdb7b5
  • Pointer size: 130 Bytes
  • Size of remote file: 87.4 kB
v3/figures/v3_unified_model_comparison.png DELETED

Git LFS Details

  • SHA256: a09249552f88b072eaf1621ae19c738f3d3cfe73c7937751001169b2681e3084
  • Pointer size: 131 Bytes
  • Size of remote file: 145 kB
v3/figures/v3_vae_anomaly_detection.png DELETED

Git LFS Details

  • SHA256: f3afafe97f31d44575ace09bac3562260e0aef5bec592a4b82f79875dc33a9db
  • Pointer size: 130 Bytes
  • Size of remote file: 99.7 kB
v3/figures/v3_vae_latent_umap.png DELETED

Git LFS Details

  • SHA256: a09e1a902dedbb1f03adda3db85366db4fa2fee8ef9a922595c94b1c7fc4f83e
  • Pointer size: 131 Bytes
  • Size of remote file: 223 kB
v3/figures/v3_vae_lstm_prediction.png DELETED

Git LFS Details

  • SHA256: 7e2e16f087aa9b89e14bfc76e17c1f0e10d0977d5ccee739df3e15810cab76fc
  • Pointer size: 131 Bytes
  • Size of remote file: 139 kB
v3/figures/vae_anomaly_detection.png ADDED

Git LFS Details

  • SHA256: 00ae9cb490875ba5ee79dab824619bf4faf1dd6d0a1a113502164d3ba024f412
  • Pointer size: 131 Bytes
  • Size of remote file: 103 kB
v3/figures/vae_latent_umap.png ADDED

Git LFS Details

  • SHA256: cf17f7a90a0abc9c851b05d5cdbab3f7e34bda0a805fad665a3d1259f3ca7eec
  • Pointer size: 131 Bytes
  • Size of remote file: 218 kB
v3/figures/vae_lstm_prediction.png ADDED

Git LFS Details

  • SHA256: b41dd8dbe3647a226fb6fb8256b6d528e2a944d64e80ff7d56cc2ae8c875f6cd
  • Pointer size: 131 Bytes
  • Size of remote file: 138 kB
v3/models.json CHANGED
@@ -5,20 +5,25 @@
5
  "split_strategy": "cross-battery grouped split (no data leakage)",
6
  "features": 18,
7
  "feature_set": [
8
- "cycle_number", "ambient_temperature", "peak_voltage", "min_voltage",
9
- "voltage_range", "avg_current", "avg_temp", "temp_rise",
10
- "cycle_duration", "Re", "Rct", "delta_capacity",
11
- "capacity_retention", "cumulative_energy",
12
- "dRe_dn", "dRct_dn", "soh_rolling_mean", "voltage_slope"
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  ],
14
- "engineered_features": {
15
- "capacity_retention": "Current capacity / initial capacity ratio",
16
- "cumulative_energy": "Cumulative energy throughput (Wh)",
17
- "dRe_dn": "Rate of change of electrolyte resistance per cycle",
18
- "dRct_dn": "Rate of change of charge-transfer resistance per cycle",
19
- "soh_rolling_mean": "Rolling mean SOH over 5-cycle window",
20
- "voltage_slope": "Slope of voltage curve during discharge"
21
- },
22
  "sequence_length": 32,
23
  "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles)",
24
  "default_model": "best_ensemble",
@@ -28,256 +33,407 @@
28
  "family": "classical",
29
  "algorithm": "XGBRegressor",
30
  "version": "3.0",
31
- "r2": 0.9866,
32
- "mae": 0.92,
33
- "within_5pct": 99.5,
34
  "requires_scaling": false,
35
- "hyperparameters": {
36
- "n_estimators": 1200,
37
- "max_depth": 9,
38
- "learning_rate": 0.02,
39
- "subsample": 0.85,
40
- "colsample_bytree": 0.85
41
- },
42
- "file": "models/classical/xgboost.joblib"
43
  },
44
  "gradient_boosting": {
45
  "display_name": "GradientBoosting",
46
  "family": "classical",
47
  "algorithm": "GradientBoostingRegressor",
48
  "version": "3.0",
49
- "r2": 0.9860,
50
- "mae": 0.94,
51
- "within_5pct": 99.4,
52
  "requires_scaling": false,
53
- "hyperparameters": {
54
- "n_estimators": 800,
55
- "max_depth": 6,
56
- "learning_rate": 0.05,
57
- "subsample": 0.8
58
- },
59
- "file": "models/classical/gradient_boosting.joblib"
 
60
  },
61
  "lightgbm": {
62
  "display_name": "LightGBM",
63
  "family": "classical",
64
  "algorithm": "LGBMRegressor",
65
  "version": "3.0",
66
- "r2": 0.9826,
67
- "mae": 1.05,
68
- "within_5pct": 99.0,
69
  "requires_scaling": false,
70
- "hyperparameters": {
71
- "n_estimators": 1200,
72
- "num_leaves": 127,
73
- "learning_rate": 0.02,
74
- "subsample": 0.85,
75
- "colsample_bytree": 0.85
76
- },
77
- "file": "models/classical/lightgbm.joblib"
78
  },
79
  "random_forest": {
80
  "display_name": "Random Forest",
81
  "family": "classical",
82
  "algorithm": "RandomForestRegressor",
83
  "version": "3.0",
84
- "r2": 0.9814,
85
- "mae": 1.10,
86
- "within_5pct": 98.8,
87
  "requires_scaling": false,
88
- "hyperparameters": {
89
- "n_estimators": 1000,
90
- "min_samples_leaf": 2,
91
- "max_features": 0.7
92
- },
93
- "file": "models/classical/random_forest.joblib"
 
94
  },
95
  "extra_trees": {
96
  "display_name": "ExtraTrees",
97
  "family": "classical",
98
  "algorithm": "ExtraTreesRegressor",
99
  "version": "3.0",
100
- "r2": 0.9701,
101
- "mae": 1.38,
102
- "within_5pct": 97.8,
103
  "requires_scaling": false,
104
- "hyperparameters": {
105
- "n_estimators": 1000,
106
- "min_samples_leaf": 2,
107
- "max_features": 0.7
108
- },
109
- "file": "models/classical/extra_trees.joblib"
 
110
  },
111
  "svr": {
112
  "display_name": "SVR (RBF)",
113
  "family": "classical",
114
  "algorithm": "SVR",
115
  "version": "3.0",
116
- "r2": 0.805,
117
- "mae": 3.42,
118
- "within_5pct": 91.2,
119
  "requires_scaling": true,
120
- "hyperparameters": {
121
- "C": 1000.0,
122
- "epsilon": 0.1,
123
- "kernel": "rbf"
124
- },
125
- "file": "models/classical/svr.joblib"
 
 
126
  },
127
  "ridge": {
128
  "display_name": "Ridge Regression",
129
  "family": "classical",
130
  "algorithm": "Ridge",
131
  "version": "3.0",
132
- "r2": 0.72,
133
- "mae": 4.21,
134
- "within_5pct": 72.5,
135
  "requires_scaling": true,
136
- "hyperparameters": {
137
- "alpha": 0.1
138
- },
139
- "file": "models/classical/ridge.joblib"
 
 
 
 
140
  },
141
  "knn_k5": {
142
  "display_name": "KNN (k=5)",
143
  "family": "classical",
144
  "algorithm": "KNeighborsRegressor",
145
  "version": "3.0",
146
- "r2": 0.72,
147
- "mae": 4.10,
148
- "within_5pct": 78.0,
149
  "requires_scaling": true,
150
- "hyperparameters": {
151
- "n_neighbors": 5,
152
- "weights": "distance"
153
- },
154
- "file": "models/classical/knn_k5.joblib"
 
 
 
155
  },
156
  "vanilla_lstm": {
157
  "display_name": "Vanilla LSTM",
158
  "family": "deep_pytorch",
159
  "algorithm": "VanillaLSTM",
160
- "version": "2.0",
161
- "r2": 0.507,
162
- "mae": 11.44,
163
  "requires_scaling": true,
164
- "file": "models/deep/vanilla_lstm.pt"
 
 
 
 
165
  },
166
  "bidirectional_lstm": {
167
  "display_name": "Bidirectional LSTM",
168
  "family": "deep_pytorch",
169
  "algorithm": "BidirectionalLSTM",
170
- "version": "2.0",
171
- "r2": 0.520,
172
- "mae": null,
173
  "requires_scaling": true,
174
- "file": "models/deep/bidirectional_lstm.pt"
 
 
 
 
175
  },
176
  "gru": {
177
  "display_name": "GRU",
178
  "family": "deep_pytorch",
179
  "algorithm": "GRUModel",
180
- "version": "2.0",
181
- "r2": 0.510,
182
- "mae": null,
183
  "requires_scaling": true,
184
- "file": "models/deep/gru.pt"
 
 
 
 
185
  },
186
  "attention_lstm": {
187
  "display_name": "Attention LSTM",
188
  "family": "deep_pytorch",
189
  "algorithm": "AttentionLSTM",
190
- "version": "2.0",
191
- "r2": 0.540,
192
- "mae": null,
193
  "requires_scaling": true,
194
- "file": "models/deep/attention_lstm.pt"
 
 
 
 
195
  },
196
  "batterygpt": {
197
  "display_name": "BatteryGPT",
198
  "family": "deep_pytorch",
199
  "algorithm": "BatteryGPT",
200
- "version": "2.0",
201
- "r2": 0.881,
202
- "mae": 10.71,
203
  "requires_scaling": true,
204
- "file": "models/deep/batterygpt.pt"
 
 
 
 
205
  },
206
  "tft": {
207
  "display_name": "Temporal Fusion Transformer",
208
  "family": "deep_pytorch",
209
  "algorithm": "TemporalFusionTransformer",
210
- "version": "2.0",
211
- "r2": 0.881,
212
- "mae": 3.93,
213
- "requires_scaling": true,
214
- "file": "models/deep/tft.pt"
215
- },
216
- "vae_lstm": {
217
- "display_name": "VAE-LSTM",
218
- "family": "deep_pytorch",
219
- "algorithm": "VAE_LSTM",
220
- "version": "2.0",
221
- "r2": 0.730,
222
- "mae": 7.82,
223
  "requires_scaling": true,
224
- "file": "models/deep/vae_lstm.pt"
 
 
 
 
 
 
225
  },
226
  "itransformer": {
227
  "display_name": "iTransformer",
228
  "family": "deep_keras",
229
  "algorithm": "iTransformer",
230
- "version": "2.0",
231
- "r2": 0.551,
232
- "mae": 11.10,
233
  "requires_scaling": true,
234
- "file": "models/deep/itransformer.keras"
 
 
 
 
235
  },
236
  "physics_itransformer": {
237
  "display_name": "Physics iTransformer",
238
  "family": "deep_keras",
239
  "algorithm": "PhysicsITransformer",
240
- "version": "2.0",
241
- "r2": 0.600,
242
- "mae": null,
243
  "requires_scaling": true,
244
- "file": "models/deep/physics_itransformer.keras"
 
 
 
 
245
  },
246
  "dynamic_graph_itransformer": {
247
  "display_name": "DG-iTransformer",
248
  "family": "deep_keras",
249
  "algorithm": "DynamicGraphITransformer",
250
- "version": "2.0",
251
- "r2": 0.595,
252
- "mae": 9.38,
 
 
 
 
 
 
 
 
 
 
253
  "requires_scaling": true,
254
- "file": "models/deep/dynamic_graph_itransformer.keras"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  },
256
  "best_ensemble": {
257
- "display_name": "Best Ensemble (RF+XGB+LGB+ET)",
258
  "family": "ensemble",
259
  "algorithm": "WeightedAverage",
260
  "version": "3.0",
261
- "r2": 0.9810,
262
- "mae": 1.02,
263
- "within_5pct": 99.2,
264
  "requires_scaling": false,
265
- "components": ["random_forest", "xgboost", "lightgbm", "extra_trees"],
266
- "weights_method": "RΒ²-proportional",
267
- "file": null
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  }
269
  },
270
  "scalers": {
271
- "features_standard": "scalers/v3_features_standard.joblib"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  },
273
- "champion": "xgboost",
274
- "training_date": "2026-03-01",
275
- "framework": ["scikit-learn", "xgboost", "lightgbm", "pytorch", "tensorflow"],
276
  "improvements_over_v2": [
277
  "Cross-battery grouped split eliminates data leakage",
278
  "18 features (6 new physics-informed) vs 12 in v2",
279
  "Proper NaN imputation (ffill/bfill/median vs fillna(0))",
280
  "Optimized hyperparameters for all classical models",
281
- "XGBoost RΒ² improved from 0.567 to 0.987"
282
  ]
283
  }
 
5
  "split_strategy": "cross-battery grouped split (no data leakage)",
6
  "features": 18,
7
  "feature_set": [
8
+ "cycle_number",
9
+ "ambient_temperature",
10
+ "peak_voltage",
11
+ "min_voltage",
12
+ "voltage_range",
13
+ "avg_current",
14
+ "avg_temp",
15
+ "temp_rise",
16
+ "cycle_duration",
17
+ "Re",
18
+ "Rct",
19
+ "delta_capacity",
20
+ "capacity_retention",
21
+ "cumulative_energy",
22
+ "dRe_dn",
23
+ "dRct_dn",
24
+ "soh_rolling_mean",
25
+ "voltage_slope"
26
  ],
 
 
 
 
 
 
 
 
27
  "sequence_length": 32,
28
  "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles)",
29
  "default_model": "best_ensemble",
 
33
  "family": "classical",
34
  "algorithm": "XGBRegressor",
35
  "version": "3.0",
 
 
 
36
  "requires_scaling": false,
37
+ "file": "models/classical/xgboost.joblib",
38
+ "sha256": "879f93f0d4dcc126b996c76466907add4edcea0c3c5506566fb364d1fa1ea858",
39
+ "bytes": 10991665,
40
+ "r2": 0.9456846914579201,
41
+ "mae": 1.4743979527641207,
42
+ "f1_macro": 0.6718181818181819,
43
+ "f1_weighted": 0.958783699059561
 
44
  },
45
  "gradient_boosting": {
46
  "display_name": "GradientBoosting",
47
  "family": "classical",
48
  "algorithm": "GradientBoostingRegressor",
49
  "version": "3.0",
 
 
 
50
  "requires_scaling": false,
51
+ "file": "models/classical/gradient_boosting.joblib",
52
+ "sha256": "17ae16a3244e10d860ed152d16eaa491d75fce5543b3ac9cf60e2a689a45f404",
53
+ "bytes": 5380250,
54
+ "r2": 0.9859839154554527,
55
+ "mae": 1.383230362734403,
56
+ "within_5pct": 95.14563106796116,
57
+ "f1_macro": 0.8881706137824349,
58
+ "f1_weighted": 0.9370460410953712
59
  },
60
  "lightgbm": {
61
  "display_name": "LightGBM",
62
  "family": "classical",
63
  "algorithm": "LGBMRegressor",
64
  "version": "3.0",
 
 
 
65
  "requires_scaling": false,
66
+ "file": "models/classical/lightgbm.joblib",
67
+ "sha256": "2654a3fa80438261bda6b49cb47f7c41c80756810ae6bad3c0e91617ff286fc7",
68
+ "bytes": 9270258,
69
+ "r2": 0.9825540467137408,
70
+ "mae": 1.9767818835386108,
71
+ "within_5pct": 89.51456310679612,
72
+ "f1_macro": 0.8704860258391961,
73
+ "f1_weighted": 0.9279456806427443
74
  },
75
  "random_forest": {
76
  "display_name": "Random Forest",
77
  "family": "classical",
78
  "algorithm": "RandomForestRegressor",
79
  "version": "3.0",
 
 
 
80
  "requires_scaling": false,
81
+ "file": "models/classical/random_forest.joblib",
82
+ "sha256": "dd1535f732486f70ddc881f1a5d48d2ed43735e2bf932cd3d985a1c72b73cc0d",
83
+ "bytes": 86125777,
84
+ "r2": 0.9452882771430996,
85
+ "mae": 1.4566859966683918,
86
+ "f1_macro": 0.6851386011640525,
87
+ "f1_weighted": 0.9643882261296104
88
  },
89
  "extra_trees": {
90
  "display_name": "ExtraTrees",
91
  "family": "classical",
92
  "algorithm": "ExtraTreesRegressor",
93
  "version": "3.0",
 
 
 
94
  "requires_scaling": false,
95
+ "file": "models/classical/extra_trees.joblib",
96
+ "sha256": "9a69db604e6a7e008a063309b3760ab7b949f234a220821bb12e6cf56b37da77",
97
+ "bytes": 133683937,
98
+ "r2": 0.9179773492318436,
99
+ "mae": 3.0058840278633383,
100
+ "f1_macro": 0.4795673076923077,
101
+ "f1_weighted": 0.7813163129973475
102
  },
103
  "svr": {
104
  "display_name": "SVR (RBF)",
105
  "family": "classical",
106
  "algorithm": "SVR",
107
  "version": "3.0",
 
 
 
108
  "requires_scaling": true,
109
+ "file": "models/classical/svr.joblib",
110
+ "sha256": "8b94d7f86b8adb067870435097bb87e541aeda9baefc35bb8332f1c29d3cc709",
111
+ "bytes": 225246,
112
+ "r2": 0.889796092634333,
113
+ "mae": 4.919579919363492,
114
+ "within_5pct": 79.2233009708738,
115
+ "f1_macro": 0.7124677351662732,
116
+ "f1_weighted": 0.7837896622370352
117
  },
118
  "ridge": {
119
  "display_name": "Ridge Regression",
120
  "family": "classical",
121
  "algorithm": "Ridge",
122
  "version": "3.0",
 
 
 
123
  "requires_scaling": true,
124
+ "file": "models/classical/ridge.joblib",
125
+ "sha256": "6241bd2746d8fdbb611401f079949491fdb1cfef35c9fa29bae021cecb71090b",
126
+ "bytes": 697,
127
+ "r2": 0.9647019468733783,
128
+ "mae": 3.2588075991875645,
129
+ "within_5pct": 88.93203883495146,
130
+ "f1_macro": 0.7797303637024042,
131
+ "f1_weighted": 0.8371654548106269
132
  },
133
  "knn_k5": {
134
  "display_name": "KNN (k=5)",
135
  "family": "classical",
136
  "algorithm": "KNeighborsRegressor",
137
  "version": "3.0",
 
 
 
138
  "requires_scaling": true,
139
+ "file": "models/classical/knn_k5.joblib",
140
+ "sha256": "7786c46318c8c5d9c41ad5ab37722289088cacbfda57534cf8450c000a588e8d",
141
+ "bytes": 329444,
142
+ "r2": 0.7554756946432488,
143
+ "mae": 11.023402656799151,
144
+ "within_5pct": 34.1747572815534,
145
+ "f1_macro": 0.4414071556445377,
146
+ "f1_weighted": 0.4562966979325331
147
  },
148
  "vanilla_lstm": {
149
  "display_name": "Vanilla LSTM",
150
  "family": "deep_pytorch",
151
  "algorithm": "VanillaLSTM",
152
+ "version": "3.0",
 
 
153
  "requires_scaling": true,
154
+ "file": "models/deep/vanilla_lstm.pt",
155
+ "sha256": "ffb4717050bebb7c3f2a16528dcf8f909d02f4bc33726abbae6c842ccf66bc4f",
156
+ "bytes": 834487,
157
+ "r2": 0.7143583597773893,
158
+ "mae": 8.20209840058283
159
  },
160
  "bidirectional_lstm": {
161
  "display_name": "Bidirectional LSTM",
162
  "family": "deep_pytorch",
163
  "algorithm": "BidirectionalLSTM",
164
+ "version": "3.0",
 
 
165
  "requires_scaling": true,
166
+ "file": "models/deep/bidirectional_lstm.pt",
167
+ "sha256": "60aabaf65ebaa709e97e29d7c72e189b7f2157d1a4607d05d461b053cebe5352",
168
+ "bytes": 2191585,
169
+ "r2": 0.783251920455803,
170
+ "mae": 6.736083068479388
171
  },
172
  "gru": {
173
  "display_name": "GRU",
174
  "family": "deep_pytorch",
175
  "algorithm": "GRUModel",
176
+ "version": "3.0",
 
 
177
  "requires_scaling": true,
178
+ "file": "models/deep/gru.pt",
179
+ "sha256": "38b5af307d2d53cd6c9ca385b8a3f9350d558613fb9f236429902f00a67e012e",
180
+ "bytes": 626424,
181
+ "r2": 0.7281985216161616,
182
+ "mae": 7.84354667939861
183
  },
184
  "attention_lstm": {
185
  "display_name": "Attention LSTM",
186
  "family": "deep_pytorch",
187
  "algorithm": "AttentionLSTM",
188
+ "version": "3.0",
 
 
189
  "requires_scaling": true,
190
+ "file": "models/deep/attention_lstm.pt",
191
+ "sha256": "d08b1e02e0328925f0c105398226bacbf1efcf2ccf850a23dab6fd176fc3a9cc",
192
+ "bytes": 1463313,
193
+ "r2": 0.24013211796996825,
194
+ "mae": 14.60765696652663
195
  },
196
  "batterygpt": {
197
  "display_name": "BatteryGPT",
198
  "family": "deep_pytorch",
199
  "algorithm": "BatteryGPT",
200
+ "version": "3.0",
 
 
201
  "requires_scaling": true,
202
+ "file": "models/deep/batterygpt.pt",
203
+ "sha256": "f4bcca951f4d32c48a1f731359f999e83f22ae3ac95480d7ef2a084844122587",
204
+ "bytes": 432034,
205
+ "r2": 0.6258803704512991,
206
+ "mae": 9.200522572264914
207
  },
208
  "tft": {
209
  "display_name": "Temporal Fusion Transformer",
210
  "family": "deep_pytorch",
211
  "algorithm": "TemporalFusionTransformer",
212
+ "version": "3.0",
 
 
 
 
 
 
 
 
 
 
 
 
213
  "requires_scaling": true,
214
+ "file": "models/deep/tft.pt",
215
+ "sha256": "0c9aa7246ce7974c11d1e441e28b954df0ffd5a189f3692a14ccd24559294abc",
216
+ "bytes": 7265508,
217
+ "r2": 0.8983696122990692,
218
+ "mae": 2.3153114237171377,
219
+ "f1_macro": 0.6755038661975573,
220
+ "f1_weighted": 0.9681951413747805
221
  },
222
  "itransformer": {
223
  "display_name": "iTransformer",
224
  "family": "deep_keras",
225
  "algorithm": "iTransformer",
226
+ "version": "3.0",
 
 
227
  "requires_scaling": true,
228
+ "file": "models/deep/itransformer.keras",
229
+ "sha256": "4812ea0ce7757d9f737c8487162f0097d9574ac0d22cc6d032da174fc14d5d8d",
230
+ "bytes": 1708244,
231
+ "r2": 0.32596745079552714,
232
+ "mae": 12.580708086984522
233
  },
234
  "physics_itransformer": {
235
  "display_name": "Physics iTransformer",
236
  "family": "deep_keras",
237
  "algorithm": "PhysicsITransformer",
238
+ "version": "3.0",
 
 
239
  "requires_scaling": true,
240
+ "file": "models/deep/physics_itransformer.keras",
241
+ "sha256": "ea915e5091e1f8e7150adddc76ec036c3ff73d56fd1250fb422f42a34c33cba0",
242
+ "bytes": 1755582,
243
+ "r2": 0.46946799132396844,
244
+ "mae": 10.154041720377204
245
  },
246
  "dynamic_graph_itransformer": {
247
  "display_name": "DG-iTransformer",
248
  "family": "deep_keras",
249
  "algorithm": "DynamicGraphITransformer",
250
+ "version": "3.0",
251
+ "requires_scaling": true,
252
+ "file": "models/deep/dynamic_graph_itransformer.keras",
253
+ "sha256": "a38fa4831fb1c4c840b04d8b1e2372bb54cb9640696ef207dfc59a1165207272",
254
+ "bytes": 1723503,
255
+ "r2": 0.7596155006117086,
256
+ "mae": 6.491724032102822
257
+ },
258
+ "vae_lstm": {
259
+ "display_name": "VAE-LSTM",
260
+ "family": "deep_pytorch",
261
+ "algorithm": "VAE_LSTM",
262
+ "version": "3.0",
263
  "requires_scaling": true,
264
+ "file": "models/deep/vae_lstm.pt",
265
+ "sha256": "a0f0023c697c94bc49e11666e0e0cdcdd92256b6c6d234043834ce27080683dd",
266
+ "bytes": 3315962,
267
+ "r2": 0.8120942160631117,
268
+ "mae": 6.225878993242997
269
+ },
270
+ "stacking_ensemble": {
271
+ "display_name": "Stacking Ensemble",
272
+ "family": "ensemble",
273
+ "algorithm": "RidgeStacking",
274
+ "version": "3.0",
275
+ "requires_scaling": false,
276
+ "file": "models/ensemble/ensemble_stacking.joblib",
277
+ "sha256": "bf0fcea2a6195f58738c465b3ff278614f438071c1ddac2f0da29f98b67ad901",
278
+ "bytes": 585,
279
+ "r2": 0.9259343333721191,
280
+ "mae": 2.7872628277726235,
281
+ "f1_macro": 0.4949760765550239,
282
+ "f1_weighted": 0.8051245669031513,
283
+ "tol_2pct": 0.4724137931034483,
284
+ "components": [
285
+ "xgboost",
286
+ "random_forest",
287
+ "extra_trees",
288
+ "attention_lstm",
289
+ "tft"
290
+ ]
291
  },
292
  "best_ensemble": {
293
+ "display_name": "Best Ensemble (XGB+RF+ET+LSTM+TFT)",
294
  "family": "ensemble",
295
  "algorithm": "WeightedAverage",
296
  "version": "3.0",
 
 
 
297
  "requires_scaling": false,
298
+ "components": [
299
+ "xgboost",
300
+ "random_forest",
301
+ "extra_trees",
302
+ "vanilla_lstm",
303
+ "tft"
304
+ ],
305
+ "weights_method": "optimized_l_bfgs_b",
306
+ "weights_file": "models/ensemble/ensemble_weights.json",
307
+ "file": null,
308
+ "r2": 0.9466103276957124,
309
+ "mae": 1.438824592772267,
310
+ "tol_2pct": 0.903448275862069,
311
+ "f1_macro": 0.6923780487804878,
312
+ "f1_weighted": 0.9672708158116063,
313
+ "weights_sha256": "19006e0c85ee1d8883729eacb2e983808eedccab812faddcf143f997566229fb"
314
+ }
315
+ },
316
+ "auxiliary_artifacts": {
317
+ "re_rct_progression": {
318
+ "display_name": "Re/Rct Progression Regressors",
319
+ "family": "auxiliary",
320
+ "algorithm": "LinearRegressionBundle",
321
+ "version": "3.0",
322
+ "file": "models/classical/re_rct_progression.joblib",
323
+ "sha256": "663cb2d1f7ed9db174ed6ff7a9e1c915cc345b6d1119898913cba538fb0ab216",
324
+ "bytes": 782
325
  }
326
  },
327
  "scalers": {
328
+ "features_standard": "scalers/features_standard.joblib",
329
+ "features_minmax": "scalers/features_minmax.joblib"
330
+ },
331
+ "scaler_checksums": {
332
+ "features_standard": "210c6d337aecb114a837e32bc56f4453a3486aad6b6dabb77b7b4ff583eeea3e",
333
+ "features_minmax": "6b73bca8cd53ab63215fffcdd8a9abc7071e34076ed63cad5a4d67be9bc8786b"
334
+ },
335
+ "champion": "gradient_boosting",
336
+ "framework": [
337
+ "scikit-learn",
338
+ "xgboost",
339
+ "lightgbm",
340
+ "pytorch",
341
+ "tensorflow"
342
+ ],
343
+ "training_date": "2026-03-10",
344
+ "checksums": {
345
+ "models": {
346
+ "models/classical/extra_trees.joblib": "9a69db604e6a7e008a063309b3760ab7b949f234a220821bb12e6cf56b37da77",
347
+ "models/classical/gradient_boosting.joblib": "17ae16a3244e10d860ed152d16eaa491d75fce5543b3ac9cf60e2a689a45f404",
348
+ "models/classical/knn_k5.joblib": "7786c46318c8c5d9c41ad5ab37722289088cacbfda57534cf8450c000a588e8d",
349
+ "models/classical/lightgbm.joblib": "2654a3fa80438261bda6b49cb47f7c41c80756810ae6bad3c0e91617ff286fc7",
350
+ "models/classical/random_forest.joblib": "dd1535f732486f70ddc881f1a5d48d2ed43735e2bf932cd3d985a1c72b73cc0d",
351
+ "models/classical/re_rct_progression.joblib": "663cb2d1f7ed9db174ed6ff7a9e1c915cc345b6d1119898913cba538fb0ab216",
352
+ "models/classical/ridge.joblib": "6241bd2746d8fdbb611401f079949491fdb1cfef35c9fa29bae021cecb71090b",
353
+ "models/classical/svr.joblib": "8b94d7f86b8adb067870435097bb87e541aeda9baefc35bb8332f1c29d3cc709",
354
+ "models/classical/xgboost.joblib": "879f93f0d4dcc126b996c76466907add4edcea0c3c5506566fb364d1fa1ea858",
355
+ "models/deep/attention_lstm.pt": "d08b1e02e0328925f0c105398226bacbf1efcf2ccf850a23dab6fd176fc3a9cc",
356
+ "models/deep/batterygpt.pt": "f4bcca951f4d32c48a1f731359f999e83f22ae3ac95480d7ef2a084844122587",
357
+ "models/deep/bidirectional_lstm.pt": "60aabaf65ebaa709e97e29d7c72e189b7f2157d1a4607d05d461b053cebe5352",
358
+ "models/deep/dynamic_graph_itransformer.keras": "a38fa4831fb1c4c840b04d8b1e2372bb54cb9640696ef207dfc59a1165207272",
359
+ "models/deep/gru.pt": "38b5af307d2d53cd6c9ca385b8a3f9350d558613fb9f236429902f00a67e012e",
360
+ "models/deep/itransformer.keras": "4812ea0ce7757d9f737c8487162f0097d9574ac0d22cc6d032da174fc14d5d8d",
361
+ "models/deep/physics_itransformer.keras": "ea915e5091e1f8e7150adddc76ec036c3ff73d56fd1250fb422f42a34c33cba0",
362
+ "models/deep/tft.pt": "0c9aa7246ce7974c11d1e441e28b954df0ffd5a189f3692a14ccd24559294abc",
363
+ "models/deep/vae_lstm.pt": "a0f0023c697c94bc49e11666e0e0cdcdd92256b6c6d234043834ce27080683dd",
364
+ "models/deep/vanilla_lstm.pt": "ffb4717050bebb7c3f2a16528dcf8f909d02f4bc33726abbae6c842ccf66bc4f",
365
+ "models/ensemble/ensemble_stacking.joblib": "bf0fcea2a6195f58738c465b3ff278614f438071c1ddac2f0da29f98b67ad901",
366
+ "models/ensemble/ensemble_weights.json": "19006e0c85ee1d8883729eacb2e983808eedccab812faddcf143f997566229fb"
367
+ },
368
+ "scalers": {
369
+ "scalers/features_minmax.joblib": "6b73bca8cd53ab63215fffcdd8a9abc7071e34076ed63cad5a4d67be9bc8786b",
370
+ "scalers/features_standard.joblib": "210c6d337aecb114a837e32bc56f4453a3486aad6b6dabb77b7b4ff583eeea3e"
371
+ },
372
+ "results": {
373
+ "results/classical_soh_results.csv": "96e4fc1f90de17f373e6501ef64e367882f5aa06ff26715ed0dab5067e2e4fb5",
374
+ "results/dg_itransformer_results.json": "a3b71e50dacc03ccd8c134c69096160c0a2b66b1c2fdaacfb87878fd271f5001",
375
+ "results/dg_predictions.npz": "f07d344d0c636449723f1ecf7ee74eb49afe2abfb58f8c9210cafd5420f068c1",
376
+ "results/ensemble_predictions.npz": "5a1c22492f7a730eb5376d6b02f5bcac58cc6d0253629b611ef144ef66986866",
377
+ "results/ensemble_results.csv": "5bddf8f93cee25840a4ba35f27205238ab23302d8595bc43b78e2c3224e67393",
378
+ "results/final_rankings.csv": "122ab78f71f415fcc515a9bb8da06effb5c89a4ffddb5e708cae567319aee703",
379
+ "results/lstm_predictions.npz": "ae74c989ae87e942f560d27f357d754875647603795eefcc293a701a91cb6283",
380
+ "results/lstm_soh_results.csv": "e0e184af259a83248157149c27147930440360a05f7013726d77cf4816b94eb3",
381
+ "results/transformer_predictions.npz": "7b73656ba5aebd1714f01f8fe589745de7611ca453746d3b1a6dc2491473c23e",
382
+ "results/transformer_soh_results.csv": "dff71aabb993a712e529c95aba6205231cefd91b48b89bf9a238802562d2dc41",
383
+ "results/unified_results.csv": "122ab78f71f415fcc515a9bb8da06effb5c89a4ffddb5e708cae567319aee703",
384
+ "results/vae_lstm_results.json": "90a7292904dc27e1c57a7100edf7eed1c98d461144c089ed81b543b3d270f44f",
385
+ "results/vae_predictions.npz": "144a664a10431cd6c7991204643b101714fa8c6ee8303765b216800049492837"
386
+ },
387
+ "features": {
388
+ "features/battery_features.csv": "56e19c94347af65f60f0cf2b0f241aa926afc8c4b1b97c217db6badfd6ba7f18",
389
+ "features/battery_sequences.npz": "55362061ef7f307431695f22e99a046169e2cd5d7b7323cb6d785d1333e43efd",
390
+ "features/test_split.csv": "f27b83944869f11128ee049a40c5f30fde17eb29811411b026df2b9272052fdb",
391
+ "features/train_split.csv": "f66a5ca940d9457422e9c03907030ccccfdfc5dbeadb0428bbef3df4f0efd65c"
392
+ },
393
+ "figures": {
394
+ "figures/best_ensemble_prediction.png": "061067ebfa0047b8e211120e740646bd34e077105f90f4cbe57201db8ea85682",
395
+ "figures/capacity_and_rul.png": "7f959be7175d1ec327791043e21b458e85704efdcd28b4367c85af8189f2464f",
396
+ "figures/ced_curves.png": "8a229e96f4c6603b6aef36e9d93da9e5ab69d6a0d37e15307eb588702a7b07ec",
397
+ "figures/degradation_state_distribution.png": "cd56c91bee68ac8af3fae38fa3d66191fa1c12c41893792e0c0e7314026d95aa",
398
+ "figures/dg_itransformer_predictions.png": "cf429b99f6a04a9e2782dc99605cb55400f8722fcdc3fec8141ed0e9cdc6d230",
399
+ "figures/dg_itransformer_training.png": "de1ef81c12b9a66fe40e01ff45cd119e95f70cbf74de868058a4d57610c473af",
400
+ "figures/ensemble_comparison.png": "688dc5db69eb58143bddfc69a6b8d5c4b7f0edef2c82af8d9f47f5c77bbca5e9",
401
+ "figures/ensemble_confusion_matrix.png": "32cba94422cb6a035c4b14e9a00796e0f28080249df9310f4c92eb71ca6ec81e",
402
+ "figures/ensemble_weights.png": "bc4e7bb2f3f28603cc0c87e822705350678bef74e648adebea4fea3a867d9ad3",
403
+ "figures/feature_correlation_heatmap.png": "a5ec607126b313e66a70688fa7a56227f4f8360c890479a51033fa226ff77ddf",
404
+ "figures/lstm_actual_vs_predicted.png": "da2f66430f05bc90bb3c6196d627a7ab8e5122f5e3b825b584ad58acd7050e2e",
405
+ "figures/lstm_training_curves.png": "2449a96970013a4eb356dbb185122a7a1e94339e3f41d75b8e4fc9c560adf10d",
406
+ "figures/mc_dropout_uncertainty_lstm.png": "dad1598483196fa7686b77ba89dcd44413f8a3c0ec19c10f09b8aabf61fd6542",
407
+ "figures/soc_coulomb_counting_demo.png": "c63c6baca51effb37a89a7a84bf3faa81f52002ff032d1ec7cf0bcdf45bfd15e",
408
+ "figures/soh_degradation_trends.png": "56c131fbf98676e8f6611e30bf16a4f6065a311605235c442322a8f71d0fad8e",
409
+ "figures/transformer_pt_training_curves.png": "20c4ea6e1802b7557cbf01c439ec51dc4fda230a79a081016fcda4bec8065040",
410
+ "figures/transformer_tf_training_curves.png": "a278a36ef3150dfb7fdeb2f89559ac18ccfafd4a4b6ae80d047c0de926e8a9ac",
411
+ "figures/unified_model_comparison.png": "5a9de76ea1a4c49327875db1a894afb7c30ea65f4235700726e447c24fdeaa37",
412
+ "figures/vae_anomaly_detection.png": "00ae9cb490875ba5ee79dab824619bf4faf1dd6d0a1a113502164d3ba024f412",
413
+ "figures/vae_latent_umap.png": "cf17f7a90a0abc9c851b05d5cdbab3f7e34bda0a805fad665a3d1259f3ca7eec",
414
+ "figures/vae_lstm_prediction.png": "b41dd8dbe3647a226fb6fb8256b6d528e2a944d64e80ff7d56cc2ae8c875f6cd"
415
+ },
416
+ "generated_at_utc": "2026-03-10T18:10:44.760892+00:00"
417
+ },
418
+ "verification": {
419
+ "hash_algorithm": "sha256",
420
+ "required": true,
421
+ "notes": "Verify checksums before serving or deploying artifacts.",
422
+ "last_verified_utc": "2026-03-10T18:10:44.760892+00:00"
423
+ },
424
+ "engineered_features": {
425
+ "capacity_retention": "Current capacity / initial capacity ratio",
426
+ "cumulative_energy": "Cumulative energy throughput (Wh)",
427
+ "dRe_dn": "Rate of change of electrolyte resistance per cycle",
428
+ "dRct_dn": "Rate of change of charge-transfer resistance per cycle",
429
+ "soh_rolling_mean": "Rolling mean SOH over 5-cycle window",
430
+ "voltage_slope": "Slope of voltage curve during discharge"
431
  },
 
 
 
432
  "improvements_over_v2": [
433
  "Cross-battery grouped split eliminates data leakage",
434
  "18 features (6 new physics-informed) vs 12 in v2",
435
  "Proper NaN imputation (ffill/bfill/median vs fillna(0))",
436
  "Optimized hyperparameters for all classical models",
437
+ "XGBoost R\u00b2 improved from 0.567 to 0.987"
438
  ]
439
  }
v3/{results/v3_dg_predictions.npz β†’ models/classical/re_rct_progression.joblib} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:66a3a7827d63161c22d7aad627593aab293cda079a8e7dd30941789deb2c99c5
3
- size 3633
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:663cb2d1f7ed9db174ed6ff7a9e1c915cc345b6d1119898913cba538fb0ab216
3
+ size 782
v3/models/deep/attention_lstm.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:9dc7c5c468cb8b5421238eac920e041988b8096e792b2e03f404e6255cd2700c
3
  size 1463313
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d08b1e02e0328925f0c105398226bacbf1efcf2ccf850a23dab6fd176fc3a9cc
3
  size 1463313
v3/models/deep/batterygpt.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:382a88b98bed1743ea60ceb9eca888d18838249e56ee1299c0c450b944eb674a
3
  size 432034
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f4bcca951f4d32c48a1f731359f999e83f22ae3ac95480d7ef2a084844122587
3
  size 432034
v3/models/deep/bidirectional_lstm.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:0fb4808e5f2d46541b979f9e2f18a132d3682ae8c1ac8d1eb9bec435e35cebe8
3
  size 2191585
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:60aabaf65ebaa709e97e29d7c72e189b7f2157d1a4607d05d461b053cebe5352
3
  size 2191585
v3/models/deep/dynamic_graph_itransformer.keras CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:22131e57ff2f26045208e5c5a51350e4b4475485ee759e7d215fbee3dabbe6a4
3
  size 1723503
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a38fa4831fb1c4c840b04d8b1e2372bb54cb9640696ef207dfc59a1165207272
3
  size 1723503
v3/models/deep/gru.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a16d909a6e607bda0505ad5679a415dd943079edef9a6431cd05b5b954b9836e
3
  size 626424
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:38b5af307d2d53cd6c9ca385b8a3f9350d558613fb9f236429902f00a67e012e
3
  size 626424