2021年10月8日科研周报
在最新的数据集中,里面并没有续驶里程这列数据,只有累计里程,于是我们把数据集分成了单次放电的状态,通过研究单次放电时SOC和已经行驶里程的关系,进而推到SOC和续驶里程的关系。
注:
我对行驶里程的测算方法是,找到一个时间点(初始时间),此时SOC为100,之后的一段时间为放电状态,在放电的某个时间点,累计里程减去初始时间的累计里程,即得到,消耗这么多SOC电量后,车辆的行驶里程。
这里,SOC从100变为96,就走了1.5km
我们取了两段放电状态test1(2020/7/7 15:01:30)和test2(2021/3/5 9:14:27),一段用于观测各列变量和车辆行驶里程的相关性,同时用来训练KNN模型,另一段用于作为测试集,检验模型的正确性。
这段数据集中,虽然中途有段缺失的数据,但我们还是可以看出,SOC和行驶里程具有很强的线性相关性。
从这部分图来看,电池单体电压最低值和行驶里程也具有不错的相关性
从这部分图来看,电池单体电压最高值和行驶里程也具有不错的相关性
所以,我们好像可以综合考虑电池单体电压最低值,电池单体电压最高值,SOC
同时我们也可以通过电池单体电压最低值,电池单体电压最高值来求SOC的值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-soGdznJ4-1633705325942)(C:\Users\86182\AppData\Roaming\Typora\typora-user-images\image-20211007163448686.png)]
附绘图代码
data = pd.read_excel('../static/test1.xlsx')
plt.scatter(data['累计里程']-131598.3,data['SOC'])
plt.xlabel('行驶里程')
plt.ylabel('SOC')
plt.show()
plt.scatter(data['累计里程']-131598.3,data['电池单体电压最高值'])
plt.xlabel('行驶里程')
plt.ylabel('电池单体电压最高值')
plt.show()
plt.scatter(data['累计里程']-131598.3,data['电池单体电压最低值'])
plt.xlabel('行驶里程')
plt.ylabel('电池单体电压最低值')
我们现在引入test2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WSrorHKj-1633705325946)(C:\Users\86182\AppData\Roaming\Typora\typora-user-images\image-20210929201945559.png)]
Knn预测准确率: 0.9187220283312564
我们发现SOC在70-100这段拟合的很好,但是SOC低于70时,预测值却比真实值底一些,我们来看下数据
测试集:2021/3/5 9:14:27
训练集:2020/7/7 15:01:30
这段时间我能想到的差异就是温度了,7/7是夏天,但是我们日常经验,天冷时电池存不了电,天热时充一段电就能跑好远,这很不合理
那么还有一种可能就是7/7日天太热,开了空调,所以才会导致这种结果
考虑温度影响,我继续换了一段放电过程,本来想找2021年7月的,但是没找到,于是换成了5月份的
test3:2021/5/20 19:16:11
vin | 时间 | 车速 | 车辆状态 | 充电状态 | 运行模式 | 总电压 | 总电流 | 累计里程 | SOC | 电池单体电压最高值 | 最高电压电池单体代号 | 电池单体电压最低值 | 最低电压电池单体代号 | 最高温度值 | 最高温度探针单体代号 | 最低温度值 | 最低温度探针单体代号 | 最高报警等级 | DC_DC状态 | 档位 | 最高电压电池子系统号 | 最低电压电池子系统号 | 最高温度子系统号 | 最低温度子系统号 | 驱动电机个数 | 驱动电机序号 | 驱动电机状态 | 驱动电机转速 | 驱动电机转矩 | 驱动电机温度 | 驱动电机控制器温度 | 电机控制器输入电压 | 电机控制器直流母流电流 | 经度 | 维度 | 加速踏板行程值 | 制动踏板状态 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Knn预测准确率: 0.8213905807852736
预测率反而低了,但是5月份可能也没开空调,于是我找了第四段放电数据,和训练集的数据接近
test4:2020/7/8 13:24:33 ,和训练集只差了一天,而且数据十分完整,正常情况,这天应该也会开空调的,但电池会不会随着年限产生变化呢
这段结果非常完美
Knn预测准确率: 0.9907640546172836
但是我们也知道,电池会随着使用年限而产生变化,那么,是开了空调还是电池使用时间影响了SOC对车辆续驶里程的预测呢
我们考虑把5月份的数据当做训练集,因为这段时间既有2020年的数据,又有2021年的数据
test5:
训练集:2020/5/24 13:38:08
测试集:2021/5/17 9:37:53
Knn预测准确率: 0.9842099689376295
这就证明了1年时间,电池结构的老化在SOC:50-100这段时间没有受到影响
更换数据集
效果依然很好
总结与展望
目前我对于缺失部分数据的行的处理是直接删掉,下一步我可以使用Largrange插值法进行一些处理
同时我也可以删去一些明显不合理的数据
此外,我可以探讨了其他变量和行驶里程的关系