基于Q学习的地铁列车节能驾驶曲线计算方法与流程

文档序号:19411570发布日期:2019-12-14 00:28阅读:401来源:国知局
基于Q学习的地铁列车节能驾驶曲线计算方法与流程

本发明涉及轨道交通技术领域,尤其涉及一种基于q学习的地铁列车节能驾驶曲线计算方法。



背景技术:

我国城市轨道交通系统正处于快速发展的阶段,已基本形成了发达的城市轨道交通网络。与此同时,城市轨道交通的能耗量也很大,这其中,列车牵引能耗占据总能耗的50%左右。因此,优化列车驾驶曲线以减少列车的牵引能耗,对地铁系统节能具有重要的意义。

目前对于列车节能驾驶的相关研究有以两类:1.利用庞特里亚金极大值原理和拉格朗日松弛法,确定列车节能驾驶过程中只存在最大加速、惰行、部分制动和最大制动四种工况,并且确定了不同工况的最佳转换点。这种方法主要基于确定的模型对列车驾驶策略进行优化,无法适应列车实际运行中的复杂环境。其次,当考虑复杂的列车运行控制模型时,问题难以直接根据列车运行时间求解;2.利用启发式算法求解列车节能驾驶曲线,如遗传算法、蚁群算法等。该类方法通常计算时间较长,所需计算资源较多。

目前,基于确定模型的列车驾驶曲线计算方法对实际复杂运行环境的鲁棒性较低,基于数据驱动的列车驾驶曲线计算方法较少,强化学习理论能够充分利用列车历史运行数据(片段),对列车驾驶曲线进行优化。因此,本专利提出一种从能耗角度出发,应用强化学习方法求解地铁列车节能驾驶曲线计算方法,另外,在实际应用中,本专利提出的方法还可以有效地将列车运行数据作为训练片段,对列车驾驶曲线进行优化。



技术实现要素:

本发明提供了一种基于q学习的地铁列车节能驾驶曲线计算方法,以解决现有技术中存在的缺陷。

为了实现上述目的,本发明采取了如下技术方案。

本发明提供了一种基于q学习的地铁列车节能驾驶曲线计算方法,包括:

s1根据实际线路信息和车辆信息建立列车控制模型;

s2设置q学习的各个参数;

s3根据列车基本运行工况选取一条列车驾驶曲线作为初始解;

s4向线路中的区间分配能量,改进初始解,并根据设置的q学习的各个参数和列车运行片段进行训练,并根据q学习更新公式更新值函数;

s5根据预定条件判断值函数是否收敛到最优值函数,若收敛,则根据所述最优值函数得到最优能量分配策略和节能驾驶曲线;若不收敛,则返回至步骤s3。

优选地,根据实际线路信息和车辆信息建立列车控制模型,包括:根据实际线路信息,将站间长度s分为m段,每段长度为根据车辆信息,以牛顿第二定律为基础,以列车牵引能耗最小化为目标函数,求解每一段的运行速度,进而求解每一段和站间的运行时间和运行能耗;

所述的目标函数如下式(1)所示:

所述的运行速度如下式(2)所示:

所述的运行时间如下式(3)所示:

所示的牵引能耗如下式(4)所示:

其中,uf为列车牵引级位,x为列车位置,f为列车最大牵引力,μ为列车从电网吸收电能的效率;vi表示第i段的速度,fi表示第i段内列车所受合力,m为列车质量,v0、vm分别为初速度和末速度;ei为第i段内列车的牵引能耗,为列车在第i段内所受牵引力的大小,e为列车站间总牵引能耗;ti为第i段内列车的运行时间,t为列车站间总运行时间。

优选地,设置q学习的各个参数,包括:状态、动作、奖励和值函数;

所述的状态为列车当前运行时间或当前线路各区间的能量分配数量;

所述的动作为向当前线路各区间分配能量;

所述的奖励为判断当前列车运行时间是否达到规定的运行时间,若达到则奖励为0,否则为-1;

所述的值函数为不同状态下采取不同动作后,所能获得的奖励之和的期望值。

优选地,根据列车的基本运行工况选取一条列车驾驶曲线作为初始解,包括:由最大加速工况、惰行工况和最大制动工况组成的初始解。

优选地,向线路中的区间分配能量,改进初始解,并根据设置的q学习的各个参数和列车运行片段进行训练,并根据q学习更新公式更新值函数,包括:根据当前状态和值函数选择动作,选取当前状态下值函数最大的动作执行,执行动作得到新的状态,将新状态定为当前状态并根据q学习的更新公式更新值函数。

优选地,根据q学习的更新公式更新值函数,包括:根据下式(5)的q学习的更新公式更新值函数:

qt+1(s,a)=qt(s,a)+α[rt+1+γmaxa′qt(s′,a′)-qt(s,a)](5)

其中,qt(s,a)表示时刻t的值函数,rt+1表示在状态s下采取动作a后所获得的奖励值,s′表示状态s下采取动作a后得到的新状态,a′表示状态s′下可以采取的动作,α表示学习率,γ表示折扣因子。

优选地,当状态为所述的列车当前运行时间时,所述的根据设置的q学习的各个参数和列车运行片段进行训练,包括:

根据线路上不同的限速和坡度将站间划分为n+2个区间,每个区间内坡度和限速相同,其中n为可分配能量的区间数,将列车节能驾驶问题视为一个多步决策问题,其状态定义为当前列车运行时间,动作定义为向区间i分配单位大小的能量de,即:

s=fix(tk)(6)

a={ai=i|i=1,2,...n}(7)

式中,tk为当前驾驶曲线下列车的运行时间,fix为取整函数,初始状态为初始解的运行时间;

若列车运行时间符合规定的运行时间,则奖励为0,否则奖励为-1,即:

其中,ttarget表示规定的列车运行时间,即终点状态;

当列车运行时间首次小于或等于规定运行时间时,即达到终点状态,结束本片段训练。

优选地,当状态为所述的区间能量分配数量时,所述的根据设置的q学习的各个参数和列车运行片段进行训练,包括:

根据线路上不同的限速和坡度将站间划分为n+2个区间,每个区间内坡度和限速相同,其中n为分配能量的区间数,用一个搜索树表示整个状态空间,搜索树中每个节点包含以下三个信息:

(1)当前每个区间分配到的能量数量:用一个含有n个元素的数组表示:

s={d1,d2,...dn}(9)

数组中第i个元素表示第i个区间已经分配的能量数量;

(2)值函数:用一个含有n个元素的数组表示:

qs={q(s,a1),q(s,a2),...q(s,an)}(10)

数组中第i个元素q(s,ai)表示当前状态s下动作ai的值;

(3)下一个状态节点集合:由n个元素组成,第i个元素为分配一个单位能量至区间i后得到的新状态节点;

初始状态时,各个区间能量均为0,当列车运行时间首次小于或等于规定运行时间时,此时的能量分配方案即为终点状态,结束本片段训练。

优选地,判断达到预定条件的值函数是否收敛到最优值函数,包括:

设置一个阈值θ,每更新一次值函数后计算更新前后值函数的最大误差δ:

δ=maxs,a(abs(qk(s,a)-qk-1(s,a))(11)

abs表示取绝对值函数;

当误差δ<θ时,判定值函数已经收敛到最优值函数,否则判定值函数未收敛到最优值函数。

优选地,判断达到预定条件的值函数是否收敛到最优值函数,包括:

训练片段个数达到预定范围阈值时,判定值函数收敛到最优值函数。

由上述本发明的基于q学习的地铁列车节能驾驶曲线计算方法提供的技术方案可以看出,本发明的节能驾驶曲线求解方法以q学习为基础,该方法的优势在于:

1.不需要先验知识,完全通过列车与环境交互确定列车驾驶曲线;

2.得到的地铁列车节能驾驶曲线可以降低列车运行能耗,并符合运行时间要求;

3.可以应用在不同坡度和不同限速的线路上,适应性强,并算法的实施过程不受复杂运行环境的影响;

4.可以充分利用列车历史运行数据对列车驾驶曲线进行更新。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本实施例提供的基于q学习的地铁列车节能驾驶曲线计算方法流程示意图;

图2为本实施例的基于q学习的地铁列车节能驾驶曲线计算方法实现原理图;

图3为以列车运行时间为状态时采取q学习方法得到的最优驾驶曲线图;

图4为以各区间能量分配数量为状态时采取q学习方法得到的最优驾驶曲线图;

图5为不同学习率α和衰减率γ对训练效果的影响结果图;

图6为不同的ε和片段数对训练效果的影响结果图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明。

实施例

q学习是强化学习方法的一种,它利用时序差分法实时、在线地完成值函数学习和策略的改进,最终得到最优值函数相应的最优策略。

图1为本实施例提供的基于q学习的地铁列车节能驾驶曲线计算方法流程示意图,图2为本实施例的基于q学习的地铁列车节能驾驶曲线计算方法实现原理图,参照图1和图2,该方法包括:

s1根据实际线路和车辆信息建立列车控制模型。

根据列车信息(包括列车质量、最大牵引力和制动力)及线路信息(包括区间长度、坡度和限速),利用列车的运动学方程及牛顿第二定律建立列车控制模型。由控制模型可以计算出列车驾驶曲线、列车的运行时间和牵引总能耗。

具体地,根据实际线路信息,将站间长度s分为m段,每段长度为以牛顿第二定律为基础,以列车牵引能耗最小化为目标函数,求解每一段的运行速度,进而求解每一段和站间的运行时间和运行能耗;

所述的目标函数如下式(1)所示:

所述的运行速度如下式(2)所示:

所述的运行时间如下式(3)所示:

所示的牵引能耗如下式(4)所示:

其中,uf为列车牵引级位,x为列车位置,f为列车最大牵引力,μ为列车从电网吸收电能的效率;vi表示第i段的速度,fi表示第i段内列车所受合力,m为列车质量,v0、vm分别为初速度和末速度;ei为第i段内列车的牵引能耗,为列车在第i段内所受牵引力的大小,e为列车站间总牵引能耗;ti为第i段内列车的运行时间,t为列车站间总运行时间。

s2设置q学习的各个参数。

设置q学习的各个参数,包括:状态、动作、奖励和值函数。

状态为列车当前运行时间或当前线路各区间的能量分配数量;

动作为向当前线路各区间分配能量;

奖励为判断当前列车运行时间是否达到规定的运行时间,若达到则奖励为0,否则为-1;

状态动作值函数(简称为值函数)为不同状态下采取不同动作后,所能获得的奖励之和的期望值。以值函数来衡量不同状态下采取不同动作的效果,将其初始化为任意值。终点状态的值函数设置为0。

s3根据列车基本运行工况选取一条列车驾驶曲线作为初始解。

初始解,包括:由最大加速(ma)工况、惰行(c)工况和最大制动(mb)工况组成的初始解。该初始解的牵引能耗很小,但运行时间比规定的运行时间长。

若以列车运行时间作为状态,则初始解的列车运行时间即为初始状态;若以各个区间能量分配数量为状态,则以初始解的各区间能量分配数量为初始状态。由于初始解中没有能量分配,因此对应初始解的各个区间分配的能量均为0。

s4向线路中的区间分配能量,改进初始解,并根据设置的q学习的各个参数和列车运行片段进行训练,并根据q学习更新公式更新值函数。

训练的过程就是向各区间分配能量,逐步改进列车驾驶曲线并更新值函数。若向某个区间分配了单位大小的能量,即表明列车运行到该区间时可以执行“最大加速(ma)”工况或“最大加速+惰行(c)”组合工况,直到分配的能量耗尽。

根据当前状态和值函数选择动作,选取当前状态下值函数最大的动作执行,执行动作得到新的状态,将新状态定为当前状态并根据q学习的更新公式更新值函数。

当状态为列车当前运行时间时,根据设置的q学习的各个参数和列车驾驶片段进行训练,包括:

根据线路上不同的限速和坡度将站间划分为n+2个区间,每个区间内坡度和限速相同,其中n为可分配能量的区间数。将列车节能驾驶问题视为一个多步决策问题,其状态定义为当前列车运行时间,其动作定义为向区间i分配单位大小的能量de,即:

s=fix(tk)(5)

a={ai=i|i=1,2,...n}(6)

式中,tk为当前驾驶曲线下列车的运行时间,fix为取整函数,初始状态为初始解的运行时间。

若列车运行时间符合规定的运行时间,则奖励为0,否则奖励为-1,即:

其中,ttarget表示规定的列车运行时间,即终点状态。当列车运行时间首次小于或等于规定运行时间时,即达到终点状态,结束本片段训练。

具体训练流程为:

s411初始化:初始化值函数q(s,a)为任意值,终点状态的所有动作的值函数均为0,设定一个阈值θ,设定ε-greedy策略中的ε值,ε-greedy策略定义为:对于任意状态,都有(1-ε)的概率选择值函数最大的动作,有ε的概率随机等可能地选择任意动作;

s412开始一个训练片段,令选取的列车的驾驶曲线为初始解,此时初始解的运行时间即为初始状态;

s413根据当前状态和值函数,利用ε-greedy策略选取相应的动作;

s414执行该动作,得到新的状态,并使用q学习公式更新动作值函数,若此时达到规定运行时间则结束本片段并进入s415,否则重复s413;

s415计算相邻两次训练后值函数的误差,若此误差值小于阈值θ,则结束训练,否则回到s412继续训练。

当所述的状态为区间能量分配数量时,所述的根据设置的q学习的各个参数进行片段训练,包括:

根据线路上不同的限速和坡度将站间划分为n+2个区间,每个区间内坡度和限速相同,其中n为可分配能量的区间数。用一个搜索树表示整个状态空间,搜索树中每个节点包含以下三个信息:

(1)当前能量分配数量:用一个含有n个元素的数组表示:

s={d1,d2,...dn}(8)

数组中第i个元素表示第i个区间已经分配的能量数量;

(2)值函数:用一个含有n个元素的数组表示:

qs={q(s,a1),q(s,a2),...q(s,an)}(9)

数组中第i个元素q(s,ai)表示当前状态s下动作ai的值;

(3)下一个状态节点集合:由n个元素组成,第i个元素为分配一个单位能量至区间i后得到的新状态节点;

初始状态中各个区间能量分配数量均为0。当列车运行时间首次小于或等于规定运行时间时,此时的能量分配方案即为终点状态,结束本片段训练。

具体训练流程为:

s421初始化:初始化搜索树的根节点,能量状态为:zeros(1,n),动作值函数为zeros(1,n),下一个状态的节点为:-1*ones(1,n),其中zeros(1,n)表示一个1*n的全零数组,ones(1,n)表示1*n的全一数组;定义ε-greedy策略中的ε值;定义训练总片段数的范围阈值neps。neps一般要取300000以上,1000000以下。若太少则无法收敛到最优函数,若太多则计算时间过长。

s422令选取的列车驾驶曲线为初始解,此时各个区间能量分配数均为0,这种能量分配方案定义为初始状态;

s423根据当前状态和值函数,利用ε-greedy策略选取相应的动作;

s424执行该动作,得到新的状态。若此时对应的下一状态节点集合中的元素为-1,则建立新的状态节点并将新的状态节点扩充进搜索树,否则直接进入新的状态节点;

s425根据q学习公式更新值函数;

s426计算此时列车的运行时间,若没有达到规定运行时间则进入s423,否则进入s427;

s427若已经进行了neps个片段,则结束训练,否则重复s422。

以上算法,可以采用matlab、python或c#等语言实现,本实例采用matlab实现。

本实施例中根据下式(10)的q学习的更新公式更新值函数:

qt+1(s,a)=qt(s,a)+α[rt+1+γmaxa′qt(s′,a′)-qt(s,a)](10)

其中,qt(s,a)表示当前时刻t的值函数,rt+1表示在状态s下采取动作a后所获得的奖励值,s′表示状态s下采取动作a后得到的新状态,a′表示状态s′下可以采取的动作,α表示学习率,γ表示衰减因子。

需要说明的是,根据地铁列车驾驶习惯,列车出站时要先经过最大加速达到一定速度(如50km/h),进站时需要最大制动保证停稳停准,因此一个站间的第一个和最后一个区间不会被分配能量,即只有n个区间可以被分配能量。

s5根据预定条件判断值函数是否收敛到最优值函数,若收敛,则根据所述最优值函数得到最优能量分配策略和节能驾驶曲线;若不收敛,则返回至步骤s3。

每次分配能量后,列车驾驶曲线的运行时间和牵引能耗分别更新为:

由于单位能量de大小固定,为了使得总奖励最大化,希望能用尽量少的能量分配次数使列车运行时间达到规定的运行时间,因此希望分配到某个区间的能量能带来最大的运行时间减少量。

本实施例中的规定运行时间由列车运行时刻表确定。每次分配能量后,根据列车控制模型计算列车运行时间,若列车运行时间未达到规定时间则重复训练的过程,直至满足规定运行时间要求。

根据预定条件判断值函数是否收敛到最优值函数,包括:

当以列车运行时间为状态时,设置一个阈值θ,每更新一次值函数后计算更新前后值函数的最大误差δ:

δ=maxs,a(abs(qk(s,a)-qk-1(s,a))(11)

abs表示取绝对值函数。

当误差δ<θ时,判定值函数已经收敛到最优值函数,否则判定值函数未收敛到最优值函数。

当以区间能量分配方案为状态时,训练片段个数达到范围阈值时,判定值函数收敛到最优值函数。

当值函数收敛到最优值函数后,在不同状态上均采取值函数最大的动作即可得到最优能量分配策略。

通过对最优值函数采取下式greedy动作:

即可得到最优能量分配策略。其中argmax表示取最大函数值对应的变量。

在初始解的基础上,按最优能量分配策略向各个区间分配能量,即可得到节能驾驶曲线。

以下为采用本实施例的基于q学习的地铁列车节能驾驶曲线计算方法以北京地铁亦庄线小红门到肖村站间为例进行的仿真实验。

实际线路信息为:小红门到肖村站总距离为1350m,坡度从-3‰到3‰,按不同的坡度和限速将该站间分为12个区间,除去第一个区间(用于加速)和最后一个区间(用于制动)共有10个区间可以分配能量。列车最大牵引加速度为1.25m/s2,最大制动加速度为0.6m/s2。该站间列车的初始解为:在第一个区间采取最大加速(ma),在最后一个区间采取最大制动(mb)工况,在中间的十个区间采取惰行(c)工况。

当以列车运行时间作为状态时,初始状态即为初始解的运行时间144s,终点状态为列车的规定运行时间100s。初始化状态动作值函数q(s,a)为任意值,设定阈值θ为0.0001,ε为0.2。每个训练片段,列车均以初始解的时间144s作为初始状态,对值函数q(s,a)采取ε-greedy策略选择动作,得到新的状态并采用q学习的值函数更新公式更新值函数。当列车的运行时间达到终点状态的100s时结束一个片段的训练,并采用计算误差值,若此时误差值大于阈值0.0001,则重新开始一个片段的训练。当误差值小于0.0001时,表明值函数已经收敛到最优值函数。

当以各区间能量分配数量为状态时,初始状态即为初始解的能量分配数量,由于初始解并未分配能量,因此每个区间的能量分配数均为0,列车的运行时间达到规定时间100s时的各区间能量分配数量即为终点状态。初始化时,定义训练片段数的范围阈值为300000,ε为0.2。初始状态的能量分配节点为1*10的全零数组,动作值函数为1*10的全零数组,下一状态节点集合为1*10的数组,数组中所有元素均为-1。

每个训练片段中,对当前状态的动作值函数采取ε-greedy策略选择动作并执行该动作,得到新的状态。若新状态对应的节点为-1,则为该状态创建新节点,新节点的动作值函数为1*10的全零数组,下一状态节点集合为1*10的数组,数组中所有元素均为-1;若此时新状态的节点已经存在,则直接转移到新的状态。每采取一个动作计算一次列车的运行时间,并使用q学习的值函数更新公式更新值函数。重复以上步骤直到列车的运行时间达到规定时间,此时结束一个片段的训练。重复300000个片段,即可得到最优值函数。

得到最优值函数后,采取greedy策略,即可得到最优能量分配策略。根据该最优策略逐步更新驾驶曲线,直至得到最终的列车节能驾驶曲线,图3为以列车运行时间为状态时采取q学习方法得到的最优驾驶曲线图,参照图3,优化后的运行时间为99.8525s,能耗为9.9284kwh。图5为不同学习率α和衰减率γ对训练效果的影响结果图。采用能耗时间比来衡量训练效果,具体计算方法为:

式中,e表示列车牵引能耗,t表示列车运行时间。下标opt和0分别表示节能驾驶曲线和初始解的相关物理量。etr越小,训练效果越好。

由图5可知,α取值越大,训练的速度和效果越好。但考虑到实际工程应用中,由于周围环境的变化,无法保证每一次在相同状态下采取相同的动作总能带来相同的时间减少量,因此过大的α反而会造成误差。因此采用α取0.1-0.2时较为合适;γ取值对效果的影响不大。

图4为以各区间能量分配数量为状态时采取q学习方法得到的最优驾驶曲线图,参照图4优化后时间为99.6078s,耗能为9.9765kwh。图6为不同的ε和片段数对训练效果的影响结果图。由图6可知,ε<0.9时对训练效果影响较小,取值过大会对降低训练效果。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1