
马里兰大学锂电池数据集 CALCE,基于 Python 的锂电池寿命预测(Remaining Useful
Life,RUL)& (End Of Life,EOL)
主要库版本:
� pytorch >=1.6.0
� pandas 0.24.2
预测结果
关于代码的说明:
最近经常收到有同学问代码中一些问题,现汇总如下:
(1) SOH 的由来,它 dec 计算的部分,减去 3.8 和减去 3.4 代表着什么。
就是取放电电压在 [3.4, 3.8] 之间的容量作为 电池的 SOH。因为现在 SOH 还没有稳定的
定义,所以这个区间的数值不一定就是这两个,你可以选择放电电压在 [3.3, 3.8], [3.5, 3.8]
之间的容量作为 SOH 也没问题。因为容量预测的时候可能不太准确,不可能满充满放,所
以选择电池在中间这段放电的时候的电容量来作为 SOH。
这部分的具体分析,可以查看论文的分析。
� Tian, J., Xiong, R., Shen, W., Lu, J., & Yang, X. G. (2021). Deep neural network battery
charging curve prediction using 30 points collected in 10 min. Joule, 5(6), 1521-1534.
� Lin, C., Xu, J., Shi, M., & Mei, X. Constant Current Charging Time Based Fast State-of-
Health Estimation for Lithium-Ion Batteries. Available at SSRN 4018988.
(2) build_sequences(text, window_size) 函数生成的预测数据为什么是序列不是下一个点?
序列[1, 2, 3, 4, 5], build_sequences 函数生成的 x=[[1, 2, 3], [2, 3, 4]], y=[[2, 3, 4], [3, 4, 5]]
的目的有两个:
一种是用序列预测序列,即 x=[1, 2, 3] 预测 y=[2, 3, 4],x=[2, 3, 4] 预测 y=[3, 4, 5];
一种是用序列预测下一个点,即 x=[1, 2, 3] 预测 y=[4],x=[2, 3, 4] 预测 y=[5];
本次实验中,我采用后者。所以,代码中,我训练的时候最后是取了 train_y 的最后一列: