本发明涉及动力电池,尤其涉及一种基于深度学习和网络压缩的电池荷电状态估计方法。
背景技术:
1、可众所周知,电池荷电状态估计是电池管理系统的重要功能之一,实时准确的电池荷电状态信息为电池充放电管理、安全管理、电芯均衡等提供重要参考依据。然而,由于电池本身结构及内部电化学反应复杂,无法直接测量得到电池荷电状态,只能通过各种直接或间接的方式测量得到。
2、目前常用的电池荷电状态估计方法主要包括:基于模型的估计方法与基于机器学习的估计方法;实践发现,现有技术存在如下缺陷:
3、基于模型的电池状态估计方法,其性能高度依赖于所建立的电池模型。而想要建立能够精确描述电池动态特性的电池模型需要掌握一定的先验知识,基于对电池的化学或物理特性的了解来建立相应的电化学模型或等效电路模型。此外,电池模型中涉及到的参数并非常数,不同的电池运行工况或电池老化状态往往对应着不同的参数值。这意味着在估算电池荷电状态的同时,还需要对这些参数进行实时更新,这会提高电池荷电状态估计过程中的计算复杂度。
4、基于机器学习的电池荷电状态估计方法不需要对电池动态特性有充分的理解,只要有足够的数据,就可以训练得到满足需求的电池荷电状态估计模型。其中,深度神经网络(dnn)在电池状态估计领域展现强大应用潜力。然而,dnn通常具有较多的层数和神经元个数,使用经验法确定dnn的层数和神经元个数费时费力,最终确定的模型结构仍然含有冗余结构和信息,从而带来额外的内存占用和计算量。因此,本发明提出一种网络压缩技术,基于重要性剪枝去除模型的冗余结构,确保模型以最少的层数和神经元个数来提供满足要求的电池荷电状态估计精度。
技术实现思路
1、本发明的目的在于克服上述一种或多种现有的技术问题,提供一种基于深度学习和网络压缩的电池荷电状态估计方法。
2、为实现上述目的,本发明提供的一种基于深度学习和网络压缩的电池荷电状态估计方法,包括:
3、s1、获取基础数据,基础数据包括电池在不同运行状态下的电压、电流和温度;
4、s2、对时间段t内的基础数据进行标注,并计算时间段t内基础数据的平均电压和累积容量,得到训练样本;
5、s3、构建并训练dnn模型;
6、s301、构建具有a个隐藏层的dnn模型,a为大于1的自然数;
7、s302、基于训练样本,使用adma优化算法训练dnn模型的参数;
8、s4、优化dnn模型的层数;
9、s401、根据泰勒权重算法依次计算每个隐藏层的重要性指标;
10、s402、按照隐藏层的先后顺序,对a个重要性指标进行排序;
11、s403、判断是否需要删除部分隐藏层:当第l个隐藏层的重要性指标最大时,则保留1~l个隐藏层,删除其他隐藏层,若a等于l,则执行s6;若a大于l;则执行s5;
12、s5、更新dnn模型的参数,使用adma优化算法训练dnn模型的参数;
13、s6、优化每一个隐藏层的神经元个数;
14、s7、保存dnn模型;
15、s8、使用dnn模型估计电池荷电状态。
16、根据本发明的一个方面,s301具体为:构建具有3个隐藏层的dnn模型,每个隐藏层有32个神经元,第l隐藏层第j个神经元的输出为,
17、
18、其中,m表示输入神经元个数;
19、表示第l隐藏层的第k个输入;
20、表示连接第l隐藏层中第k个输入与第j个神经元的输出的权重;
21、b(l)表示第l隐藏层的偏置项;
22、f()表示relu激活函数。
23、根据本发明的一个方面,s401中,根据泰勒权重算法计算第l个隐藏层的重要性指标q(l)的公式为,
24、
25、其中,nl表示第l隐藏层的神经元个数;
26、表示连接第l隐藏层第i个神经元和第i+1隐藏层所有神经元的权重向量;
27、表示与权重对应的梯度;
28、⊙表示哈达玛积。
29、根据本发明的一个方面,s6中还包括:
30、s601、使用快速回归算法,计算第l个隐藏层中每一个神经元的重要性;
31、s602、按照神经元的重要性大小对神经元排序;
32、s603、逐次选择重要性排在前n的神经元,并更新所选择的神经元对应的权重;
33、s604、根据所选择的神经元及更新的权重,计算选择n个神经元时输出结果的均方差,以判断是否能满足该隐藏层的输出精度要求;若均方差满足精度要求,则执行s606,否则,执行s605;
34、s605、若均方差不满足精度要求,则对s603中的n进行n+1,重复s603~s604,直到精度达到要求或n大于n时停止,n为该隐藏层神经元个数,此时该隐藏层保留了n个对该隐藏层输出结果贡献最大的神经元;
35、s606、若l=1,则所有的隐藏层神经元都已经过选择;若l-1不为0,则对s601中的l进行l-1,重复步骤s601-s605。
36、根据本发明的一个方面,s601中,使用快速回归算法,计算隐藏层每一个神经元的重要性qneuroni+1,其公式为,
37、
38、其中,y表示下一个隐藏层的输出;
39、表示第i隐藏层的i+1个神经元的输入;
40、t表示转置。
41、根据本发明的一个方面,s603中,逐次选择重要性排在前n的神经元,并更新所选择的神经元对应的权重其公式为,
42、
43、其中,表示第j-1隐藏层的j+1个神经元的输入;
44、表示更新前的权重。
45、根据本发明的一个方面,s604中,根据所选择的神经元及更新的权重,计算选择n个神经元时输出结果的均方差,判断是否能满足该隐藏层的输出精度要求,其公式为,
46、
47、其中,yref表示下一个隐藏层的理想输出;
48、表示重新选择神经元后下一个隐藏层的实际输出;
49、ny表示下一个隐藏层的神经元个数。
50、为实现上述目的,本发明提供一种基于深度学习和网络压缩的电池荷电状态估计系统,包括:
51、数据获取模块:s1、获取基础数据,基础数据包括电池在不同运行状态下的电压、电流、温度;
52、数据预处理模块:s2、对时间段t内的基础数据进行标注,并计算时间段t内基础数据的平均电压和累积容量,得到训练样本;
53、模型构建训练模块:s3、构建并训练dnn模型;
54、s301、构建具有a个隐藏层的dnn模型,a为大于1的自然数;
55、s302、基于训练样本,使用adma优化算法训练dnn模型的参数;
56、层数优化模块:s4、优化dnn模型的层数;
57、s401、根据泰勒权重算法依次计算每个隐藏层的重要性指标;
58、s402、按照隐藏层的先后顺序,对a个重要性指标进行排序;
59、s403、判断是否需要删除部分隐藏层:当第l个隐藏层的重要性指标最大时,则保留1~l个隐藏层,删除其他隐藏层,若a等于l,则执行s6;若a大于l;则执行s5;
60、参数更新模块:s5、更新dnn模型的参数,使用adma优化算法训练dnn模型的参数;
61、神经元个数优化模块:s6、优化每一个隐藏层的神经元个数;
62、保存模块:s7、保存dnn模型;
63、执行模块:s8、使用dnn模型估计电池荷电状态。
64、为实现上述目的,本发明提供一种电子设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现上述针对一种基于深度学习和网络压缩的电池荷电状态估计方法。
65、为实现上述目的,本发明提供一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述针对一种基于深度学习和网络压缩的电池荷电状态估计方法。
66、基于此,本发明的有益效果在于:
67、本发明首先利用电池在不同工况运行状态下的电压、电流、温度作为dnn模型的训练样本,以电池荷电状态估计作为训练输出,进而得到未压缩的dnn模型,然后基于重要性剪枝去除dnn模型的冗余结构,确保dnn模型以最少的层数和神经元个数来提供满足要求的电池荷电状态估计精度。