这个例子展示了如何使用线性回归(一种监督机器学习算法)预测快速充电锂离子电池的剩余循环寿命。使用基于物理的建模方法预测锂离子电池的循环寿命是非常复杂的,因为不同的操作条件和显著的设备可变性,即使是来自同一制造商的电池。对于这种情况,当有足够的测试数据可用时,基于机器学习的方法提供了有希望的结果。在电池寿命的早期阶段准确的电池循环寿命预测将允许快速验证新的制造工艺。它还允许最终用户在足够的交货时间内发现性能恶化的情况,以更换有问题的电池。为此,仅考虑基于前100个周期的特征来预测剩余循环寿命,预测误差约为10%[1]。
数据
该数据集包含来自124个锂离子电池的测量值,这些电池的额定容量为1.1Ah,额定电压为3.3V,具有各种充电和放电配置文件。完整的数据集可以在这里访问[2]这里有详细的描述[11.对于此示例,数据仅包含与提取的特征相关的子集测量值。这减少了下载的大小,而不会改变正在考虑的机器学习模型的性能。训练数据包含来自 41 个细胞的测量值,验证数据包含来自43 个细胞的测量值,测试数据包含来自 40 个细胞的测量值。每个单元的数据存储在一个结构中,该结构包括以下信息:
1.描述性数据:电池条形码,充电策略,循环寿命
2.循环汇总数据:循环次数、放电容量、内阻、充电时间
3.在一个循环内收集的数据:时间、温度线性插值放电容量、线性插值电压
加载数据(这是一个很大的数据集,约1.7GB)
url = 'https://ssd.mathworks.com/supportfiles/predmaint/batterycyclelifeprediction/v1/batteryDischargeData.zip';
websave('batteryDischargeData.zip',url);
unzip('batteryDischargeData.zip')
load('batteryDischargeData');
特征提取
放电容量是反映电池健康状况的关键特征,其值指示电动汽车的行驶里程。绘制训练数据中电池前1,000个周期的放电容量,以可视化电池寿命范围内的变化。
figure, hold on;
for i = 1:size(trainData,2)
if numel(trainData(i).summary.cycle) == numel(unique(trainData(i).summary.cycle))
plot(trainData(i).summary.cycle, trainData(i).summary.QDischarge);
end
end
ylim([0.85,1.1]),xlim([0,1000]);
ylabel('Discharge capacity (Ah)');
xlabel('cycle');