一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

发车调度方法、装置、设备和存储介质

2022-10-13 06:50:01 来源:中国专利 TAG:

1.本发明涉及车辆调度技术领域,尤其涉及一种发车调度方法、装置、设备和存储介质。


背景技术:

2.构建数学模型来表示地铁乘客数量的复杂变化,寻找最优调度模式是调度领域常用的方法。sun l等人构建了三种针对不同情况下的数学模型,求解不同条件下的最优地铁时刻表,其中包括了没有发车数量限制约束的地铁调度,带有发车数量约束的仅针对高峰期/非高峰期的地铁调度,以及带有发车数量约束的全天地铁调度。yang x等人对地铁车站案例进行了多目标建模优化,其目标包含了最大化乘客的便利程度以及最小化地铁的发车所带来的成本,通过求解帕累托最优曲线得到了一系列的最优解。kang l等人构建了混合整数线性规划(milp)模型来协调多条线路末班车的发车时间。将模型分为两个小尺度的milp模型,利用websphere ilog cplex求解器对模型进行优化。
3.此外启发式算法也被用于地铁的调度之中,这一类的算法相比于构建数学模型的方法能够更快地完成较优解的求解过程。kuppusamy p等人结合长短期记忆(long short-term memory)和改进的遗传算法(improved genetic algorithm)来优化单个地铁站的时间表,提高地铁系统的抗干扰能力。yang s等人采用遗传算法非支配性排序遗传算法(non-dominated sorting genetic algorithm ii)来优化乘客的总旅行时间,包括了排队候车时间以及乘车时间。
4.然而,上述方案存在以下缺点:1、大多数数学解决方案都面临一个问题:地铁高频率的发车所造成的地铁模型的复杂性过高。如果将地铁系统的调度方案完整地采用数学方法进行建模求解,过高的复杂度(尤其是时间纬度)带来的过多的变量使得模型难以求解。因此通常的数学方法仅能够考虑系统的一部分,例如,只优化少量的车站,只考虑换乘或末班车的情况。这使得这一类解决方案的求解忽略了很多现实细节,在实际应用的过程中可能不甚理想。
5.2、数据记录的准确性较低,现实世界中,随着移动支付,“扫码入站”的方式逐渐普及,地铁运营方将很难在乘客进站的时候,知道乘客的目的地所在。而一些传统的模型往往需要精确到特定乘客的入、出站信息,这使得其算法无法很好地适应当前移动支付发展的趋势。
6.3、传统的学习方案,如遗传算法所给出的发车时刻,在实际应用上会有很大的局限。其算法需要在知道当天完整的客流情况后,才能进行计算,得出当天的最优发车时刻表。但此时当天的运营已经结束,此时得出的时刻表对过去并没有太大意义。遗传算法得出的时刻表为静态时刻表,若采用遗传算法,利用第t天的数据训练时刻表,并指导第t 1天的发车频率,则会难以把控第t 1天中出现的人流移动特点。若第t 1天有人群聚集事件,如大型演唱会的举办,地铁调度人员将无法根据原模型进行更优的地铁调度,会造成严重的人员滞留。


技术实现要素:

7.本发明所要解决的技术问题是:提供一种发车调度方法、装置、设备和存储介质,可实时动态调整发车模式。
8.第一方面,本发明提供了一种发车调度方法,包括:初始化当前值网络和目标值网络,并将一线路的列车的运营时间划分为预设数量的发车时间段;获取历史一天的乘客出行数据以及所述一线路的列车的容载量,所述乘客出行数据包括各乘客的入站时间、入站车站id、出站车站id和中转车站id,所述中转车站id根据入站车站和出站车站通过最短路径算法确定;根据所述乘客出行数据和所述一线路的列车的容载量,进行预设的模拟总次数的客流模拟,并在每次模拟的过程中,获取样本数据,存入记忆库,同时在每次模拟结束后,统计当次模拟对应的快发车时间段数量和总等待时间,并确定当次模拟对应的当前值网络,其中,一次模拟为进行一天的运营时间的客流模拟,每个样本数据包括一发车时间段的状态数据、所述一发车时间段的下一发车时间段的动作及状态数据以及回报值,所述状态数据包括所述一线路上各车站的站内人数、已发出列车的位置和已发出列出的车内人数,所述动作为以预设的快发车频率进行发车或以预设的慢发车频率进行发车,所述下一发车时间段的动作根据最新的当前值网络确定;当有新的样本数据存入记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值时,则根据预设的批次大小,从所述记忆库中随机选取一批次的样本数据,并根据所述一批次的样本数据对最新的当前值网络进行训练,将训练得到的当前值网络作为最新的当前值网络;当模拟次数达到预设的模拟总次数时,根据各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定各快发车时间段数量对应的最优当前值网络;根据需求,选取一快发车时间段数量对应的最优当前值网络;获取所述一线路的一发车时间段的状态数据,并根据所述一发车时间段的状态数据,通过所选取的最优当前值网络确定所述一发车时间段的下一发车时间段的动作。
9.第二方面,本发明还提供了一种发车调度装置,包括:初始化模块,用于初始化当前值网络和目标值网络,并将一线路的列车的运营时间划分为预设数量的发车时间段;获取模块,用于获取历史一天的乘客出行数据以及所述一线路的列车的容载量,所述乘客出行数据包括各乘客的入站时间、入站车站id、出站车站id和中转车站id,所述中转车站id根据入站车站和出站车站通过最短路径算法确定;模拟模块,用于根据所述乘客出行数据和所述一线路的列车的容载量,进行预设的模拟总次数的客流模拟,并在每次模拟的过程中,获取样本数据,存入记忆库,同时在每次模拟结束后,统计当次模拟对应的快发车时间段数量和总等待时间,并确定当次模拟对应的当前值网络,其中,一次模拟为进行一天的运营时间的客流模拟,每个样本数据包括一发车时间段的状态数据、所述一发车时间段的下一发车时间段的动作及状态数据以及回报值,所述状态数据包括所述一线路上各车站的站内人数、已发出列车的位置和已发出列出的车内人数,所述动作为以预设的快发车频率进行发车或以预设的慢发车频率进行发车,
所述下一发车时间段的动作根据最新的当前值网络确定;训练模块,用于当有新的样本数据存入记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值时,则根据预设的批次大小,从所述记忆库中随机选取一批次的样本数据,并根据所述一批次的样本数据对最新的当前值网络进行训练,将训练得到的当前值网络作为最新的当前值网络;第一确定模块,用于当模拟次数达到预设的模拟总次数时,根据各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定各快发车时间段数量对应的最优当前值网络;选取模块,用于根据需求,选取一快发车时间段数量对应的最优当前值网络;第二确定模块,用于获取所述一线路的一发车时间段的状态数据,并根据所述一发车时间段的状态数据,通过所选取的最优当前值网络确定所述一发车时间段的下一发车时间段的动作。
10.第三方面,本发明还提供了一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面提供的发车调度方法。
11.第四方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面提供的发车调度方法。
12.本发明的有益效果在于:由于dqn算法在训练时,是通过给予智能体当前时刻的环境状态,让其做出下一个时间段的发车动作选择,因此,当该算法部署到实际生产生活中时,只需要给它当前时刻的列车及车站状态,就可以实时地给出下个发车时间段的发车决策,从而可以根据当前人流情况,实时动态调整发车模式,有效减少轨道交通压力,且对异常人流等突发状况有出色的自适应能力;同时,本发明在训练过程中会随着智能体的学习过程产生不同快发车时间段数量对应的最优模型,工作人员可以根据实际情况选择适合的模型进行部署。
附图说明
13.图1为本发明提供的一种发车调度方法的流程图;图2为本发明提供的一种发车调度装置的结构示意图;图3为本发明提供的一种电子设备的结构示意图;图4为本发明实施例一的一种发车调度方法的流程图;图5为本发明实施例一中进行一次客流模拟的流程图;图6为本发明实施例一中进行一个发车时间段的客流模拟的流程图;图7为本发明实施例一的步骤s404的方法流程图;图8为本发明实施例一的快发车时间段数量为1-6时强化学习模型的训练结果示意图;图9为本发明实施例一的快发车时间段数量为7-14时强化学习模型的训练结果示意图;
图10为本发明实施例一的快发车时间段数量为15-24时强化学习模型的训练结果示意图;图11为本发明实施例一的不同快发车时间段数量的最优解示意图。
具体实施方式
14.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
15.在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子计算机程序等等。
16.此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本技术的范围的情况下,可以将第一信息为第二信息,且类似地,可将第二信息称为第一信息。第一信息和第二信息两者都是信息,但其不是同一信息。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
17.如图1所示,一种发车调度方法,包括:s101:初始化当前值网络和目标值网络,并将一线路的列车的运营时间划分为预设数量的发车时间段;s102:获取历史一天的乘客出行数据以及所述一线路的列车的容载量,所述乘客出行数据包括各乘客的入站时间、入站车站id、出站车站id和中转车站id,所述中转车站id根据入站车站和出站车站通过最短路径算法确定;s103:根据所述乘客出行数据和所述一线路的列车的容载量,进行预设的模拟总次数的客流模拟,并在每次模拟的过程中,获取样本数据,存入记忆库,同时在每次模拟结束后,统计当次模拟对应的快发车时间段数量和总等待时间,并确定当次模拟对应的当前值网络,其中,一次模拟为进行一天的运营时间的客流模拟,每个样本数据包括一发车时间段的状态数据、所述一发车时间段的下一发车时间段的动作及状态数据以及回报值,所述状态数据包括所述一线路上各车站的站内人数、已发出列车的位置和已发出列出的车内人数,所述动作为以预设的快发车频率进行发车或以预设的慢发车频率进行发车,所述下一发车时间段的动作根据最新的当前值网络确定;s104:当有新的样本数据存入记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值时,则根据预设的批次大小,从所述记忆库中随机选取一批次的样本数据,并根据所述一批次的样本数据对最新的当前值网络进行训练,将训练得到的当前值网络作为最新的当前值网络;
s105:当模拟次数达到预设的模拟总次数时,根据各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定各快发车时间段数量对应的最优当前值网络;s106:根据需求,选取一快发车时间段数量对应的最优当前值网络;s107:获取所述一线路的一发车时间段的状态数据,并根据所述一发车时间段的状态数据,通过所选取的最优当前值网络确定所述一发车时间段的下一发车时间段的动作。
18.传统的算法,如遗传算法只能通过前一天的地铁人流情况,计算出前一天的最优解,并假设今天的人流情况与前一天大致相同,将得到的结果用于当日。因此传统算法会忽略许多当日的人流特点,并且无法及时做出动态调整。而dqn算法在训练时,是通过给予智能体当前时刻的环境状态,让其做出下一个时间段的发车动作选择,因此,当该算法部署到实际生产生活中时,只需要给它当前时刻的地铁及地铁站状态,就可以实时地给出下个发车时间段的发车决策,从而可以根据当前地铁人流情况,实时动态调整发车模式,有效减少轨道交通压力,且对异常人流等突发状况有出色的自适应能力。
19.在一个可选的实施例中,所述步骤s103包括:预设第i次模拟中运营时间的第一个发车时间段的动作,并将所述第一个发车时间段作为当前发车时间段,i的初始值为1;根据当前发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行当前发车时间段的客流模拟,并获取当前发车时间段结束时的状态数据作为当前发车时间段的状态数据,同时根据当前发车时间段中的各单位时间内所述一线路上各车站的等车人数,统计当前发车时间段的总等待时间;生成随机数,所述随机数的范围为0-1;若所述随机数小于第i次模拟对应的探索率,则随机生成当前发车时间段的下一发车时间段的动作;若所述随机数大于或等于第i次模拟对应的探索率,则根据最新的当前值网络确定当前发车时间段的下一发车时间段的动作;根据所述下一发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行下一发车时间段的客流模拟,并获取下一发车时间段结束时的状态数据作为下一发车时间段的状态数据,同时根据下一发车时间段中的各单位时间内所述一线路上各车站的等车人数,统计下一发车时间段的总等待时间;根据当前发车时间段的总等待时间、下一发车时间段的动作以及第j轮迭代对应的惩罚项函数,计算回报值,j=

i/epoch

,epoch为预设的每轮迭代的模拟次数;根据所述当前发车时间段的状态数据、下一发车时间段的动作、回报值和下一发车时间段的状态数据,生成一个样本数据,并将所述样本数据存储至记忆库;判断所述下一发车时间段是否为运营时间的最后一个发车时间段;若否,则将所述下一发车时间段作为当前发车时间段,继续执行所述生成随机数的步骤;若是,则统计第i次模拟中动作为以快发车频率进行发车的发车时间段的数量,得到第i次模拟对应的快发车时间段数量,根据第i次模拟中运营时间的各发车时间段的总等待时间,计算得到第i次模拟对应的总等待时间,并将当前最新的当前值网络作为第i次模
拟对应的当前值网络;判断i是否等于预设的模拟总次数;若否,则根据第i次模拟对应的探索率以及预设的最小探索率,确定第i 1次模拟对应探索率,第一次模拟对应的探索率为预设的探索率初始值,并令i=i 1,继续执行所述预设第i次模拟中运营时间的第一个发车时间段的动作,并将所述第一个发车时间段作为当前发车时间段的步骤。
20.进行一次模拟即进行一天的运营时间的客流模拟,通过进行客流模拟,生成样本数据并存入记忆库,以便后续对当前值网络进行训练,并且,在模拟过程中,也会实时基于最新的当前值网络生成新的样本数据。
21.在一个可选的实施例中,根据所述当前发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行当前发车时间段的客流模拟,包括:将当前发车时间段的第一个单位时间作为当前单位时间;根据所述当前发车时间段的动作以及预设的列车运行数据,分别判断当前单位时间内所述一线路上的各车站是否有列车到站;若一车站有列车到站,则根据乘客出行数据以及列车的容载量,对所述一车站进行人流交互处理,所述人流交互处理包括到站乘客下车和站内乘客上车,所述到站乘客包括已上车且出站车站id或中转车站id为所述一车站的车站id的乘客,所述站内乘客包括入站乘客和换乘乘客,所述入站乘客包括入站时间早于当前单位时间、入站车站id为所述一车站的车站id且未上车的乘客,所述换乘乘客包括中转车站id为所述一车站的车站id、到达中转车站的时间超过预设的换乘时间、出站车站id对应的车站为所述一线路上的车站且未上车的乘客;根据人流交互处理结果,更新所述一车站的站内人数和已发出列车的车内人数,并统计当前单位时间内所述一车站的等车人数;若一车站无列车到站,则根据乘客出行数据以及所述一车站的车站id,更新所述一车站的站内人数,并统计当前单位时间内所述一车站的等车人数;根据当前单位时间内所述一线路上各车站的等车人数,统计当前单位时间内的总等车人数;判断当前单位时间是否为当前发车时间段的最后一个单位时间;若否,则将下一单位时间作为当前单位时间,继续执行所述根据当前发车时间段的动作以及预设的列车运行数据,分别判断当前单位时间内所述一线路上的各车站是否有列车到站的步骤。
22.模拟系统会以单位时间为最小分度值进行人员流动的模拟,并计算所有乘客的总等待时间,该模拟系统还支持换乘操作,换乘路线由最短路径算法给出。在每个发车时间段内。
23.在一个可选的实施例中,根据最新的当前值网络确定当前发车时间段的下一发车时间段的动作,包括:根据当前发车时间段的状态数据以及预设的动作集合,通过最新的当前值网络计算所述动作集合中的各动作的评分,并将评分最大值对应的动作作为下一发车时间段的动作,所述动作集合包括以预设的快发车频率进行发车以及以预设的慢发车频率进行发车。
24.也就是说,当生成的随机数不小于本次模拟对应的探索率,则会基于最新的当前值网络确定最优动作,作为下一发车时间段的动作。
25.在一个可选的实施例中,所述根据当前发车时间段的总等待时间、下一发车时间段的动作以及第j轮迭代对应的惩罚项函数,计算回报值,包括:根据回报值计算公式计算回报值,所述回报值计算公式为r=-c
tk-a(fj(x)-fj(x-1)),其中,r为回报值,c
tk
为当前发车时间段的总等待时间,若下一发车时间段的动作为以预设的快发车频率进行发车,则a=1,若下一发车时间段的动作为以预设的慢发车频率进行发车,则a=0,fj(x)为第j轮迭代对应的惩罚项函数。
26.进一步地,令i=i 1之前,进一步包括:判断i是否等于每轮迭代的模拟次数的整数倍;若是,则根据惩罚项函数更新公式以及第j轮迭代对应的惩罚项函数,确定第j 1轮迭代对应的惩罚项函数,所述惩罚项函数更新公式为f
j 1
(x)=k
new
×
smooth

(c
best,j
(x)) k
old
×fj
(x),其中,f
j 1
(x)为第j 1轮迭代对应的惩罚项函数,fj(x)为第j轮迭代对应的惩罚项函数,smooth()为平滑函数,c
best,j
(x)表示第j轮迭代中快发车时间段数量x对应的最少总等待时间,k
new
和k
old
为预设的调节参数,f1(x)=x

m0,x表示快发车时间段的数量,m0为预设的单次快发车的惩罚项。
27.也就是说,每当进行一轮迭代的模拟,即对惩罚项函数f(x)进行更新,使得模型效果更好,且更具有普适性以应对不同城市的地铁环境。
28.在一个可选的实施例中,步骤s102之后,进一步包括:将运营时间的各发车时间段的动作均设为以预设的慢发车频率进行发车,根据所述乘客出行数据和所述一线路的列车的容载量,进行一次慢发车模拟,并根据所述慢发车模拟中各发车时间段的总等待时间,统计得到理论最长等待时间;将运营时间的各发车时间段的动作均设为以预设的快发车频率进行发车,根据所述乘客出行数据和所述一线路的列车的容载量,进行一次快发车模拟,并根据所述快发车模拟中各发车时间段的总等待时间,统计得到理论最短等待时间;将所述理论最长等待时间与理论最短等待时间之差除以预设的一天的发车时间段总数,得到单次快车发的惩罚项。
29.也就是说,单次快车发的惩罚项可以看做为每增加一个快发车时间段所带来的总等待时间的减少值。
30.在一个可选的实施例中,所述根据第i次模拟对应的探索率以及预设的最小探索率,确定第i 1次模拟对应探索率,包括:根据探索率更新公式确定第i 1次模拟对应的探索率,所述探索率更新公式为ε
i 1
=max(ε
min
,εi 0.0045),其中,ε
i 1
为第i 1次模拟对应的探索率,εi为第i次模拟对应的探索率,ε
min
为预设的最小探索率。
31.其中,预设的探索率初始值ε1=1,预设的最小探索率ε
min
=0.1。
32.也就是说,每进行一次模拟,都会更新一次探索率。
33.在一个可选的实施例中,所述将所述样本数据存储至记忆库之前,进一步包括:若记忆库已存储满,则删除最早存储至记忆库的样本数据。
34.保证记忆库中存储的样本数据都是最新的样本数据。
35.在一个可选的实施例中,所述步骤s104,包括:当有新的样本数据存入所述记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值,则从所述记忆库中随机选取预设批次大小的样本数据,作为当前批次样本数据,并将最新的当前值网络作为待训练当前值网络;遍历当前批次样本数据,依序从当前批次样本数据中获取一样本数据;通过最新的待训练当前值网络计算所述一样本数据中的当前发车时间段的状态数据和下一发车时间段的动作对应的评分,作为所述一样本数据对应的第一评分;通过最新的目标值网络分别计算所述一样本数据中的下一发车时间段的状态数据对应各动作的评分,并将评分最大值作为所述一样本数据对应的第二评分;根据所述一样本数据中的回报值、所述一样本数据对应的第一评分和第二评分以及预设的折扣率,计算损失值,并根据所述损失值更新最新的待训练当前值网络的网络参数;当遍历完当前批次样本数据后,将最新的待训练当前值网络作为最新的当前值网络。
36.也就是说,根据完整的一批次样本数据进行训练后,才算作是对当前值网络进行一次完全的更新。
37.在一个可选的实施例中,还包括:当模拟次数达到预设的第一次数的整数倍时,根据最新的当前值网络的网络参数,更新目标值网络的网络参数。
38.也就是说,每进行一定次数的客流模拟,则会将目标值网络的网络参数替换为当前最新的当前值网络的网络参数。替换是为了神经网络可以进一步地学习。在下一次替换发生前,目标值网络的网络参数θ’是固定不变的,仅当前值网络的网络参数θ是通过步骤s104的训练而改变。
39.在一个可选的实施例中,所述根据所述一样本数据中的回报值、所述一样本数据对应的第一评分和第二评分以及预设的折扣率,计算损失值,包括:根据损失函数计算损失值,所述损失函数为loss=(q
target
(s,a)-q
evel
(s,a))2,q
target
(s,a)=r γ
×
max
a'∈a
q(s’,a’),其中,loss为损失值,q
evel
(s,a)为所述一样本数据对应的第一评分,r为所述一样本数据中的回报值,γ为预设的折扣率,max
a'


‍aq(s’,a’)为所述一样本数据对应的第二评分。
40.在一个可选的实施例中,步骤s105,包括:当模拟次数达到预设的模拟总次数时,比较同一快发车时间段数量的各次模拟对应的总等待时间,将所述对应的总等待时间最少的一次模拟对应的当前值网络作为所述同一快发车时间段数量对应的最优当前值网络。
41.考虑到快发车时间段数量有限,因此记录了所有可能的快发车时间段数量对应的最优模型。在实际生产生活中,运营方可以根据实际需求,选择所需快发车时间段数量对应的最优模型。
42.如图2所示,本发明还提供了一种发车调度装置,包括:初始化模块201,用于初始化当前值网络和目标值网络,并将一线路的列车的运营时间划分为预设数量的发车时间段;
获取模块202,用于获取历史一天的乘客出行数据以及所述一线路的列车的容载量,所述乘客出行数据包括各乘客的入站时间、入站车站id、出站车站id和中转车站id,所述中转车站id根据入站车站和出站车站通过最短路径算法确定;模拟模块203,用于根据所述乘客出行数据和所述一线路的列车的容载量,进行预设的模拟总次数的客流模拟,并在每次模拟的过程中,获取样本数据,存入记忆库,同时在每次模拟结束后,统计当次模拟对应的快发车时间段数量和总等待时间,并确定当次模拟对应的当前值网络,其中,一次模拟为进行一天的运营时间的客流模拟,每个样本数据包括一发车时间段的状态数据、所述一发车时间段的下一发车时间段的动作及状态数据以及回报值,所述状态数据包括所述一线路上各车站的站内人数、已发出列车的位置和已发出列出的车内人数,所述动作为以预设的快发车频率进行发车或以预设的慢发车频率进行发车,所述下一发车时间段的动作根据最新的当前值网络确定;训练模块204,用于当有新的样本数据存入记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值时,则根据预设的批次大小,从所述记忆库中随机选取一批次的样本数据,并根据所述一批次的样本数据对最新的当前值网络进行训练,将训练得到的当前值网络作为最新的当前值网络;第一确定模块205,用于当模拟次数达到预设的模拟总次数时,根据各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定各快发车时间段数量对应的最优当前值网络;选取模块206,用于根据需求,选取一快发车时间段数量对应的最优当前值网络;第二确定模块207,用于获取所述一线路的一发车时间段的状态数据,并根据所述一发车时间段的状态数据,通过所选取的最优当前值网络确定所述一发车时间段的下一发车时间段的动作。
43.如图3所示,本发明还提供了一种电子设备,所述电子设备包括:一个或多个处理器301;存储装置302,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器301执行,使得所述一个或多个处理器301实现如上所述的发车调度方法。
44.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的发车调度方法。
45.实施例一请参照图4-11,本发明的实施例一为:一种发车调度方法,可应用于地铁的发车调度。
46.针对现有方案普遍存在的一些问题,如计算时间长、复杂度高、细节特征忽略过多、所产生的静态时刻表不能调整及无法应对突发状况等,本实施例中,使用深度强化学习算法(deep reinforcement learning)来克服这些问题。
47.首先,利用某市的地铁数据,建立一个精确到分钟的地铁环境模拟系统。由于参考地铁网的真实运行情况经行搭建,利用地铁运行时间来进行距离度量,因此在不同城市之间也有很好的可移植性。具体地,模拟环境的数据为某市某个历史时段的乘客出行数据,主要包括乘客的入站时间、入站车站id和出站车站id。模拟环境会以分钟为最小分度值进行
整个地铁系统中人员流动的模拟,并计算所有人的总等待时间。
48.除去基本的单线路模拟外,该模拟环境还支持换乘操作。由于换乘乘客在原始数据中也只有入站车站和出站车站的记录,因此使用迪杰斯特拉算法为其指定最优的(花费时间最少的)中转站点,即乘客的换乘路线由通过迪杰斯特拉算法计算两个站点之间的最短路径给出。
49.假设地铁的发车频率每30分钟可以进行一次变更,该模拟环境将根据给定的地铁的发车频率生成接下来30分钟内的发车时刻表,并在该段时间内逐帧模拟,每帧时长为1min。以一个发车时间段t0=30min为例,模拟环境对当前发车时间段内进行发车间隔为tk分钟的地铁发车模拟,每隔t0=1min自我刷新,包括是否执行发车动作,更新列车位置,针对每个站点更新出入站人数,若有列车到站,则会根据乘客行程进行列车与站内人数的交互,并保证列车不会超载等实际指标。同时,由于考虑到大部分地铁站刷卡位置距上车位置较近,故模拟系统中没有考虑乘客入站到走到站台的时间。但由于地铁路线的设置,乘客走到换乘站点往往需要花费一定时间,因此,为了充分考虑乘客的换乘时间,设计站内换乘乘客在t1时间内处于“换乘状态”,即无法立刻换乘下一班地铁。
50.在上述模拟环境的基础上,选择深度强化学习中的deep q-network(dqn)算法来进行发车策略的制定。为了使该地铁调度问题更好的被dqn解决,对该问题进行适当地抽象与简化。
51.将地铁的运营时间均匀地划分为若干个发车时间段,例如,假设地铁运营时间为早上6点至晚上24点,共计18个小时,将其均匀地分为36个发车时间段,每个发车时间段的时长为半个小时。dqn算法将根据当前时刻的地铁运行状态,站内的人数等因素决定下个发车时间段内发车的频率。官方所使用的时刻表将发车的间隔划分为平峰期以及高峰期两种,高峰期为早上6:30至8:30以及下午16:30至18:30,在高峰期增快了地铁的发车频率,其余时间认为是平峰期。为了更加符合现实状况,采用一个36位的0、1变量来作为一天的发车频率的象征,其中,0表示以平峰期的发车频率缓慢发车,1表示以高峰期的频率进行快速发车。0和1代表的慢发车、快发车将根据当前线路映射到具体的发车间隔经行模拟,例如,慢发车是8min/次,快发车是3min/次。
52.在效果度量方面,通过计算该线路上的所有乘客的总等待时间t来评估。因此,将地铁调度该问题抽象为在维度为36的二值向量中,选出n个1(0≤n≤36),并在n尽量小的情况下,使得t尽可能小的双目标优化问题。
53.由于上述问题的完整的解空间的大小为,即使考虑单目标优化问题,即限制快发车的发车时间段的数量为8(即与现有官方发车时刻表中快发车时间段数目相同,但不限定这8个1在二值向量中的位置),也会有的解空间的大小,由于每一天的仿真模拟总时间在1min左右,仅考虑8个快发车时间段也需要约57.6年来暴力求解。因此,采取一个更加有效的求解算法是十分必要的。
54.至此,就将地铁调度问题抽象为一个可以用dqn算法解决的双目标优化问题。本实施例中,对于该双目标优化问题,遍历了其中一个目标的所有值后求出了一组帕累托最优解集。
55.dqn模型的训练部分主要分为两个阶段,探索阶段和学习阶段。
56.在探索阶段中,dqn模型将不断从模拟环境中获取当前环境的状态,由于模拟环境的时间精度为1min,可以很容易地从模拟环境中获取模拟过程中的地铁/地铁站状态信息。但因为dqn的动作输出为每30min一次,因此只需每隔30min(模拟时间)对模拟环境的状态做切片,将每个地铁站的实时站内人数、已发出地铁的实时位置、已发出地铁的车上实时人数作为特征,即作为输入数据(也称为状态数据s)输入dqn模型中的深度神经网络部分,深度神经网络将计算所有动作对应的q值q(s,a),a∈a,即计算网络为状态s下执行动作a给出的评分(可以理解为综合考虑了该发车时间段内的总等待时间、目前总快发车数带来的惩罚项以及对未来考虑前两者后再按一定比例折算到现在的一个分值),本实施例中,a={0,1},即a=0(表示以预设的慢发车频率进行发车)或a=1(表示以预设的快发车频率进行发车)。之后选择q值最大的动作a并执行。执行动作后,环境发生改变,并获得环境的奖励r,并将该条记录存到dqn的记忆库中。同时,随着环境的改变,重复以上动作,直至记忆库储满。
57.在学习阶段,dqn模型除了继续探索阶段的获取“新信息”并更新记忆库以外,还将从“记忆库”中随机抽取“记忆”来训练其中的神经网络部分。神经网络部分有两个相同结构的网络:q-目标网络和q-估计网络。其中,q-目标网络相对固定,存放了先前学到的知识,q-估计网络则随学习过程不断更新,并在一定的迭代次数后,更新q-目标网络的网络参数。
58.dqn模型的q值以以下方式更新:第一公式:q
target
(s,a)=r(s,a) γ
×
max
a'∈a
q(s’,a’)第二公式:loss=(q
target
(s,a)-q
evel
(s,a))2其中,第一公式中的(s,a,s’,a’)分别表示(当前状态、当前(状态下的)动作、下一状态、下一(状态下的)动作),即a表示根据当前状态s生成的动作,s’表示状态s在经过动作a后得到的状态,因此,本实施例中,s可以当作是当前发车时间段结束时的环境状态,a可以当作是下一发车时间段的动作,s’可以当作是下一发车时间段结束时的环境状态;r(s,a)为回报函数;γ为折扣率,取值范围为0-1;a为预设的动作集合,a={0,1};q
target
(s,a)表示目标网络在(s,a)下给出的q值评分,其由两部分之和给出,其中前一项r(s,a)是对当前状态和当前动作的评分,后一项表示对未来的估计,max
a'∈a
q(s’,a’)给出了在状态s’下选择最佳动作的q值,同时折扣率γ会对未来的估值以一定比例折算到当前状态下。
59.第二公式为估计网络的损失函数,在每隔步数用估计网络更新目标网络之前,评估网络将会向着第一公式收敛。
60.在实验过程中,发现dqn算法中回报函数的设计对该地铁调度优化问题的结果起着至关重要的影响。对此,在结合对地铁优化问题解空间的分布后,针对r值设计了一种有效的回报函数,具体如下:第三公式:r=-c
tk-a

m其中,c
tk
为第k个发车时间段内所有乘客的等待时间,a∈{0,1},a=0表示当前发车时间段的动作为慢发车,即以预设的慢发车的频率进行发车,a=1表示当前发车时间段的动作为快发车,即以预设的快发车的频率进行发车。上述回报函数的设计思路为,希望每增加一段快发车,能使总等待时间减少至少m分钟。
61.通过进一步的分析发现,可以通过调节初代回报函数中m的值,使其与解空间“理论上界”的形状更加接近来得到更优质的解,因为这将有利于dqn算法在接近最优解的上界
时进行“平行探索”,而不是陷入某一个局部最优解之中。为了使模型效果更好,且更具有普适性以应对不同城市的地铁环境,又设计了一种动态调节m的方法。此时的m是一个关于快发车时间段数量x的函数,用f(x)=f(x)-f(x-1)来表示,f(x)可理解为当一天中快发车时间段数量为x时,所期望减少等待时间的下限,本实施例中0《=x《=36。
62.第四公式:f1(x)=x

m0第五公式:m0=(理论最长等待时间-理论最短等待时间)/发车时间段总数第六公式:f
i 1
(x)=k
new
×
smooth(c
best,i
(x)) k
old
×fi
(x),其中,第六公式中,f
i 1
(x)表示用于第i 1次迭代的函数;smooth()是平滑函数;c
best,i
(x)是第i轮迭代中得到的不同快发车时间段数量的最优解,该函数通过记录第i轮迭代中,快发车时间段数量为x的最佳发车模型下的最少总等待时间得到。k
new
和k
old
是两个调节参数,用于控制f(x)在迭代中的更新步长。
63.进一步地,在实际过程中,由于单轮迭代中的模拟次数有限以及dqn算法的择优性,可能会出现没有快发车时间段数量较多时的解。例如,在图11中,当快发车时间段数量大于28时,发现该算法没有给出这种情况下的解。这是由于在快发车时间段数量较多的情况下,再提升快发车时间段数量并不会显著缩短总等待时间,但额外的快发车会有额外的惩罚。因此,在迭代时,需要找到前一个最近的“合理值”来进行迭代,即若第j轮迭代中没有某个发车时间段数量对应的解,则使用第i-1轮中该发车时间段数量对应的解替代,若第i-1轮迭代中也没有对应的解,则继续往前寻找第i-2轮迭代中对应的解,直接找到第一轮迭代。
64.基于上述分析可得,如图4所示,本实施例的发车调度方法包括如下步骤:s401:初始化当前值网络、目标值网络以及超参数,并将一线路的列车的运营时间划分为预设数量的发车时间段。
65.其中,超参数包括迭代轮数、每轮迭代的模拟次数epoch、记忆库容量、折扣率γ、探索率初始值等。本实施例中,迭代轮数为3,每轮迭代的模拟次数epoch=2250,探索率初始值ε1=1。
66.所述一线路即待分析的线路,本实施例中,以发车时间段的时长为30min,对该线路的列车的运营时间进行划分。例如,假设运营时间为每天的早上6点至晚上24点,则可以将运营时间分为36个发车时间段。
67.s402:获取历史一天的乘客出行数据以及所述一线路的列车的容载量,所述乘客出行数据包括各乘客的入站时间、入站车站id、出站车站id和中转车站id。
68.其中,中转车站id是根据入站车站和出站车站通过最短路径算法(如迪杰斯特拉算法)确定的,即在地铁线路图中,以各个车站为节点,以地铁道路为边,以地铁道路的长度为边的权值,然后以入站车站为起点,以出站车站为终点,通过最短路径算法计算最短路径,如最短路径包括两条以上的地铁线路,则可确定出中转车站,如可确定出两个以上的中转车站,则随机选取其中一个。
69.在获取到乘客出行数据后,可先进行初步筛选,筛选出入站车站id、出站车站id或中转车站id与所述一线路上的车站id匹配的乘客出行数据,即先筛选出与所述一线路有关的乘客出行数据。
70.本实施例中,获取历史某一天的乘客出行数据,后续用这些数据进行完整一天的
运营时间的客流模拟,即认为进行了一次模拟。
71.s403:根据所述乘客出行数据和所述一线路的列车的容载量,进行预设的模拟总次数的客流模拟,并在每次模拟的过程中,获取样本数据,存入记忆库,在每次模拟结束后,得到当次模拟对应的快发车时间段数量、总等待时间以及当前值网络。
72.本实施例中,模拟总次数=迭代轮数
×
每轮迭代的模拟次数=3
×
2250,即进行三轮迭代,每轮迭代进行2250次模拟。
73.由于一次模拟是进行一天的模拟,因此每次模拟结束后,都可得到每次模拟对应的快发车时间段数量(即一天中以预设的快发车频率进行发车的发车时间段数量)、总等待时间(即一天中该线路上的所有乘客的总等待时间)和当前值网络(即结束当次模拟时的最新的当前值网络)。
74.本实施例中,会对模拟次数进行计数,每进行一次模拟就令模拟次数加一。
75.具体地,如图5所示,进行一次客流模拟的过程包括如下步骤:s501:初始化模拟环境,将第一个发车时间段作为当前发车时间段。
76.s502:根据所述当前发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行当前发车时间段的客流模拟,并获取当前发车时间段结束时的状态数据作为当前发车时间段的状态数据,同时根据当前发车时间段中的各单位时间内所述一线路上各车站的等车人数,统计当前发车时间段的总等待时间。
77.其中,第一个发车时间段的动作为预设的动作,动作包括以预设的快发车频率进行发车(下述简称快发车)和以预设的慢发车频率进行发车(下述简称慢发车)两种,一个发车时间段对应一个动作。状态数据包括所述一线路上各车站的站内人数、已发出列车的位置和已发出列出的车内人数。
78.s503:生成随机数,所述随机数的范围为0-1。
79.s504:判断所述随机数是否小于本次模拟对应的探索率,若是,则执行步骤s505,若否,则执行步骤s506。
80.其中,第一次模拟对应的探索率即探索率初始值ε0=1,之后每次模拟对应的探索率根据其上一次模拟对应的探索率以及预设的最小探索率确定,具体地,探索率更新公式为εi=max(ε
min
,ε
i-1
0.0045),其中,εi为第i次模拟对应的探索率,ε
i-1
为第i-1次模拟对应的探索率,ε
min
为预设的最小探索率,本实施例中,ε
min
=0.1。
81.s505:随机生成当前发车时间段的下一发车时间段的动作。
82.s506:根据最新的当前值网络确定当前发车时间段的下一发车时间段的动作。
83.具体地,将当前发车时间段的状态数据s以及预设的动作集合a中的一动作a输入当前值网络,当前值网络会输出该状态数据和该动作的评分q(s,a)。通过进行本次模拟时的最新的当前值网络获取到动作集合中各动作的评分后,将评分最大值对应的动作作为下一发车时间段的动作,即argmax
a∈a q(s,a,θ
evel
),其中,θ
evel
表示当前最新的当前值网络的网络参数。
84.s507:根据所述下一发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行下一发车时间段的客流模拟,并获取下一发车时间段结束时的状态数据作为下一发车时间段的状态数据,同时根据下一发车时间段中的各单位时间内所述一线路上各车站的等车人数,统计下一发车时间段的总等待时间。
85.s508:根据当前发车时间段的总等待时间、下一发车时间段的动作以及当轮迭代对应的惩罚项函数,计算回报值,即计算元组(s,a,s’)的回报值r,s为当前发车时间段的状态数据,a表示下一发车时间段的动作,s’为下一发车时间段的状态数据。
86.具体地,回报值计算公式为r=-c
tk-a(fj(x)-fj(x-1)),其中,r为回报值,c
tk
为当前发车时间段的总等待时间;a表示下一发车时间段的动作,本实施例中,若下一发车时间段的动作为快发车,则a=1,若下一发车时间段的动作为慢发车,则a=0。
87.fj(x)为第j轮迭代对应的惩罚项函数,第一轮迭代对应的惩罚项函数为惩罚项函数的初始值f1(x)=x

m0,x表示快发车时间段数量,m0为预设的单次快发车的惩罚项。之后每轮迭代对应的惩罚项函数根据其上一轮迭代对应的惩罚项函数就进行更新,惩罚项函数更新公式为f
j 1
(x)=k
new
×
smooth(c
best,j
(x)) k
old
×fj
(x),其中,smooth()为平滑函数,c
best,j
(x)表示第j轮迭代中快发车时间段数量x对应的最少总等待时间,该函数通过记录第j轮迭代过程中快发车时间段数量为x的最佳发车模型下的最少总等待时间得到k
new
和k
old
为预设的调节参数,用于控制fj(x)在迭代中的更新步长。
88.因此,第一轮迭代中回报值计算公式为r=-c
tk-a

m0,即希望每增加一个快发车时间段,至少能带来m0分钟的总等待时间的减少。
89.进一步地,在进行该步骤之前,甚至在进行预设的模拟总次数的客流模拟之前,先进行一次快发车模拟(即一天中的所有发车时间段的动作均为快发车)和一次慢发车模拟(即一天中的所有发车时间段的动作均为慢发车),得到理论最短等待时间和理论最长等待时间,然后将所述理论最长等待时间与理论最短等待时间之差除以预设的一天的发车时间段总数(本实施例中为36),得到单次快车发的惩罚项m0,即m0=(理论最长等待时间-理论最短等待时间)/一天的发车时间段总数。
90.s509:根据所述当前发车时间段的状态数据、下一发车时间段的动作、回报值和下一发车时间段的状态数据,生成一个样本数据(s,a,r,s’),并将所述样本数据存储至记忆库。
91.进一步地,若记忆库的存储量已达到预设的记忆库容量,即记忆库已满,则删除最早存储至记忆库的样本数据。
92.s510:判断所述下一发车时间段是否为运营时间的最后一个发车时间段,若是,则表示已经完成一天中所有发车时间段的客流模拟,执行步骤s512,若否,则执行步骤s511。
93.s511:将所述下一发车时间段作为当前发车时间段,同时将所述下一发车时间段的状态数据作为当前发车时间段的状态数据,将下一发车时间段的总等待时间作为当前发车时间段的总等待时间,然后返回执行步骤s503。
94.s512:统计本次模拟中动作为以快发车频率进行发车的发车时间段的数量,得到本次模拟对应的快发车时间段数量,并根据本次模拟中运营时间的各发车时间段的总等待时间,计算得到本次模拟对应的总等待时间;同时,将本次模拟结束时最新的当前值网络作为本次模拟对应的当前值网络。
95.其中,假设本次模拟中第k个发车时间段的总等待时间为c
tk
,k=[1,z],k∈n*,z为一天的发车时间段的总数,本实施例中z=36,则对本次模拟中的36个发车时间段的总等待时间进行累加,即可得到本次模拟对应的总等待时间。
[0096]
进一步地,对于步骤s502和s507,如图6所示,进行一个发车时间段的客流模拟的
过程包括如下步骤:s601:将当前发车时间段的第一个单位时间作为当前单位时间。
[0097]
本实施例中,单位时间为1min,一个发车时间段为30min,因此一个发车时间段内包含30个单位时间。
[0098]
s602:根据所述当前发车时间段的动作以及预设的列车运行数据,分别判断当前单位时间内所述一线路上的各车站是否有列车到站,若是,即部分车站有列车到站,部分车站无列车到站,则执行步骤s603后执行步骤s604,若否,即该线路上的所有车站均无列车到站,则执行步骤s604。
[0099]
根据当前发车时间段的动作,可以确定当前发车时间段的具体发车时间。例如,假设快发车频率为4min/次(即每4分钟发一趟车,也即发车间隔为4min),慢发车频率为8min/次(即每8分钟发一趟车,也即发车间隔为8min),当前发车时间段的动作为慢发车,则会在当前发车时间段的第0、8、16、24分钟分别进行一次发车。
[0100]
进一步地,本实施例中,会记录一个变量t
p
,表示距离上次发车时间的时长,通过比较t
p
与当前发车时间段的发车间隔来决定是否发车。例如,假设上一个发车时间段的动作为慢发车,在上一个发车时间段的第0、8、16、24分钟分别进行了发车,那么,若当前发车时间段的动作为慢发车,则会在当前发车时间段的第2分钟进行当前发车时间段内的第一次发车,若当前发车时间段的动作为快发车,此时,t
p
=6min,大于当前发车时间段的发车间隔4min,则会立即发车,即在当前发车时间段的一开始就进行当前发车时间段内的第一次发车。
[0101]
由于同一线路上的列车的运行模式一般是一样的,因此根据列车运行数据,即可得知列车在发车后的第几分钟到达了第几站,再结合上述得到的发车时间,即可确定每个单位时间内有哪几个车站有列车到站。
[0102]
s603:根据乘客出行数据以及列车的容载量,分别对有列车到站的各车站进行人流交互处理,并根据人流交互处理结果,分别更新有列车到站的各车站的站内人数(不包括已下车且不换乘的乘客)和已发出列车的车内人数,同时分别统计当前单位时间内有列车到站的各车站的等车人数。
[0103]
具体地,若当前单位时间内该线路上的一车站有列车到站,则根据乘客出行数据以及列车的容载量,对所述一车站进行人流交互处理,其中,人流交互处理包括到站乘客下车和站内乘客上车,到站乘客包括已上车(即已在该线路已发出的列车上)且出站车站id或中转车站id为所述一车站的车站id的乘客,站内乘客包括入站乘客(即刚入站的乘客)和换乘乘客(即从其他线路换乘该线路的乘客),所述入站乘客为入站时间早于当前单位时间、入站车站id为所述一车站的车站id且未上车的乘客,所述换乘乘客为中转车站id为所述一车站的车站id、到站车站id对应的车站属于该线路、到达中转车站的时间超过预设的换乘时间且未上车的乘客。
[0104]
本实施例中,考虑到大部分地铁站刷卡位置距上车位置较近,因此模拟系统中没有考虑乘客入站到走到站台的时间,即默认乘客刷卡进站后即开始等车。但由于地铁路线的设置,在中转车站下车后走到换乘站点往往需要乘客花费一定时间,因此,为了充分考虑乘客的换乘时间,设计站内换乘乘客在换乘时间t1内处于“换乘状态”,无法立刻换乘下一班地铁,即处于“换乘状态”的乘客不计入等车人数。本实施例中,t1=1min,该参数可以调
节。
[0105]
进行人流交互处理后,根据下车的到站乘客人数以及上车的站内乘客人数,更新当前单位时间到达所述一车站的一已发出列车的车内人数,同时更新所述一车站的站内人数。
[0106]
s604:根据乘客出行数据,分别更新当前单位时间内无列车到站的各车站的站内人数,并分别统计当前单位时间内无列车到站的各车站的等车人数。
[0107]
具体地,若当前单位时间内该线路上的一车站无列车到站,则根据乘客出行数据以及所述一车站的车站id,确定当前单位时间内进入所述一车站的乘客人数,并根据进站的乘客人数,更新所述一车站的站内人数,同时统计当前单位时间内所述一车站的等车人数。
[0108]
s605:根据当前单位时间内所述一线路上各车站的等车人数,统计当前单位时间内的总等车人数。
[0109]
s606:判断当前单位时间是否为当前发车时间段的最后一个单位时间,若是,则表示当前发车时间段的客流模拟结束,执行步骤s607,若否,则执行步骤s608。
[0110]
s607:根据当前发车时间段内的各个单位时间内的总等车人数以及单位时间的时长,计算得到当前发车时间段的总等待时间。
[0111]
具体地,第k个发车时间段的总等待时间c
tk
的计算公式如下:其中,t0为单位时间的时长,t0为一个发车时间段的时长,本实施例中,t0=1min,t0=30min,ni为第k个发车时间段中的第i个单位时间内的总等车人数。
[0112]
s608:将下一单位时间作为当前单位时间,返回执行步骤s602。
[0113]
s404:当有新的样本数据存入记忆库且记忆库中的样本数据的数量达到预设的数量阈值时,则根据预设的批次大小,从所述记忆库中随机选取一批次的样本数据,并根据所述一批次的样本数据,训练得到最新的当前值网络。
[0114]
具体地,如图7所示,本步骤包括如下步骤:s701:当有新的样本数据存入记忆库且记忆库中的样本数据的数量预设的数量阈值(如360),则从记忆库中随机选取预设批次大小的样本数据,作为当前批次样本数据,并将此时最新的当前值网络作为待训练当前值网络。
[0115]
本实施例中,预设批次大小为64,即随机选取64个样本数据作为当前批次样本数据。
[0116]
s702:从当前批次样本数据中获取第p个样本数据作为当前样本数据,p的初始值为1。
[0117]
s703:通过最新的待训练当前值网络计算当前样本数据中的当前发车时间段的状态数据和下一发车时间段的动作对应的评分q
evel
(s,a),作为当前样本数据对应的第一评分。
[0118]
s704:通过最新的目标值网络分别计算当前样本数据中的下一发车时间段的状态数据对应各动作的评分,并将评分最大值maxq
a’∈a
(s’,a’)作为当前样本数据对应的第二评
分。
[0119]
其中,a为预设的动作集合,本实施例中,a为{0,1}。
[0120]
s705:根据当前样本数据中的回报值、当前样本数据对应的第一评分和第二评分以及预设的折扣率,计算损失值,并根据所述损失值,通过反向传播算法更新最新的待训练当前值网络的网络参数。
[0121]
具体地,根据损失函数计算损失值,所述损失函数为:loss=(q
target
(s,a)-q
evel
(s,a))2,q
target
(s,a)=r γ
×
max
a'∈a
q(s’,a’)其中,loss为损失值,q
evel
(s,a)为当前样本数据对应的第一评分,r为当前样本数据中的回报值,γ为预设的折扣率,max
a'∈a
q(s’,a’)为当前样本数据对应的第二评分。
[0122]
计算得到损失值后,根据损失值,通过反向传播算法更新最新的待训练当前值网络的网络参数,此时,更新后的待训练当前值网络为最新的当前值网络。
[0123]
s706:判断是否遍历完当前批次样本数据,即p是否等于预设批次大小,若是,则执行步骤,若否,则执行步骤s707。
[0124]
s707:从当前批次样本数据中获取下一样本数据作为当前样本数据,即令p=p 1,返回执行步骤s702。
[0125]
s708:将最新的待训练当前值网络作为最新的当前值网络。
[0126]
也就是说,在进行客流模拟的过程中,同步进行训练的过程,每进行一批次的样本数据的训练,则会得到一个最新的当前值网络,而每当得到一个最新的当前值网络后,又会运用到之后的客流模拟的过程中。
[0127]
s405:当模拟次数达到预设的第一次数的整数倍时,则根据最新的当前值网络的网络参数,更新目标值网络的网络参数。
[0128]
本实施例中,预设的第一次数为720,即每进行720次的客流模拟,即将目标值网络的网络参数替换为当前最新的当前值网络的网络参数。替换是为了神经网络可以进一步地学习。在下一次替换发生前,目标值网络的网络参数θ’是固定不变的,仅当前值网络的网络参数θ是通过步骤s404的训练而改变。
[0129]
s406:当模拟次数达到预设的模拟总次数时,根据各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定各快发车时间段数量对应的最优当前值网络。
[0130]
具体地,比较同一快发车时间段数量的各次模拟对应的总等待时间,将所述对应的总等待时间最少的一次模拟对应的当前值网络作为所述同一快发车时间段数量对应的最优当前值网络。也就是说,对于每个快发车时间段数量,都可得到一个对应的最优当前值网络,而本实施例中有36种快发车时间段数量,因此有36个最优当前值网络。
[0131]
进一步地,可每进行一轮迭代,就根据当轮迭代中各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定当轮迭代中各快发车时间段数量对应的最优当前值网络,再与前几轮迭代的最优解进行比较,从而确定出已迭代轮次中的最优解。
[0132]
图8-10示出了dqn算法在学习过程中,对不同快发车时间段数量的最优解寻找过程,其中,图8示出了快发车时间段数量为1-6时强化学习模型的训练结果示意图,图9示出了快发车时间段数量为7-14时强化学习模型的训练结果示意图,图10示出了快发车时间段数量为15-24时强化学习模型的训练结果示意图,图8-10中的横坐标为模拟次数,纵坐标为总等待时间的相反数。由于单轮迭代中的模拟次数有限,以及dqn算法的择优性,图示的实
验中,dqn算法并没有尝试选择快发车时间段数量过高的策略,这是由于当快发车时间段数量过多时,继续增加快发车时间段数量带来的收益较小。在经过训练后,可以得到如图11所示的不同快发车时间段数量的最优解示意图,图11中,横坐标为快发车时间段数量,纵坐标为总等待时间的相反数,加粗的黑线所穿过的点即为当前情况下,快发车时间段数量为横坐标值时的最优模型。图中横坐标为8时,黑色的星型点为按照官方时刻表发车的结果。
[0133]
s407:根据需求,选取一快发车时间段数量对应的最优当前值网络。
[0134]
s408:获取所述一线路的一发车时间段的状态数据,并根据所述一发车时间段的状态数据,通过所选取的最优当前值网络确定所述一发车时间段的下一发车时间段的动作。
[0135]
具体地,即根据实际需求,选取最优当前值网络,例如,假设实际需求中,待分析线路在运营时间内的快发车数量为8,则选取快发车时间段数量x=8对应的最优当前值网络,进一步地,加载所选取的最优当前值网络的网络参数至目标值网络,然后依据实际情况,获取该线路在当前发车时间段结束时的状态数据,并分别将该状态数据以及动作集合中的各动作传入加载后的目标值网络,得到各动作对应的评分,然后将评分最大值对应的动作作为下一发车时间段的发车建议。
[0136]
也就是说,对于待分析线路,可根据地铁运营方的实际需求先确定其快发车时间段数量,然后根据所确定的快发车时间段数量,选取最优当前值网络,然后获取该线路上当天的第一个发车时间段的状态数据,并通过所选取的最优当前值网络确定当天第二个发车时间段的动作,并在第二个发车时间段结束时,获取第二个发车时间段的状态数据,再通过所选取的最优当前值网络确定当天第三个发车时间段的动作,以此类推。
[0137]
现有方法(如遗传算法)只能通过前一天的地铁人流情况,计算出前一天的最优解,并假设今天的人流情况与前一天大致相同,将得到的结果用于当日,因此传统算法会忽略许多当日的人流特点,并且无法及时做出动态调整。而dqn算法在训练时,是通过给予智能体当前时刻的环境状态,让其做出下一个时间段的发车动作选择。这也就意味着当该算法部署到实际生产生活中时,只需要给它当前时刻的地铁及地铁站状态,就可以实时地给出下个时间段的发车决策。
[0138]
综上,本实施例具有如下优点:1、可以根据当前地铁人流情况,实时动态调整发车模式,有效减少轨道交通压力。
[0139]
2、对异常人流等突发状况有出色的自适应能力。在早/晚间的异常人流测试中,本实施例的方案相对于静态时刻表分别减少了43.37%(751723min)和21.96%(319761min)的乘客等待时间。
[0140]
3、其产生的用于与官方时刻表相对比的,快发车时间段数量为8的静态时刻表,已有约2%的总等待时间的减少(约为12663min)。
[0141]
4、相较于一些传统算法,如遗传算法,在几个子数据集上所产生的静态对比,几乎都达到了小范围可穷举测试样例中的最优解,而训练时间仅有小幅增长。除此之外,训练完成后,所得到的模型在之后仅需要执行推断即可,推断功能一般在1分钟左右即可完成,可以适应实际地铁的发车需要。
[0142]
5、与传统的静态方法不同,该方法探索了更大的解空间,并在训练过程中会随着智能体的学习过程产生不同快发车数量的最优模型,地铁工作人员可以根据实际情况选择
适合的模型进行部署。
[0143]
实施例二请参照图2,本发明的实施例二为:一种发车调度装置,可执行本发明实施例一所提供的发车调度方法,具备执行方法相应的功能模块和有益效果。该装置可以由软件/或硬件实现,具体包括:初始化模块201,用于初始化当前值网络和目标值网络,并将一线路的列车的运营时间划分为预设数量的发车时间段;获取模块202,用于获取历史一天的乘客出行数据以及所述一线路的列车的容载量,所述乘客出行数据包括各乘客的入站时间、入站车站id、出站车站id和中转车站id,所述中转车站id根据入站车站和出站车站通过最短路径算法确定;模拟模块203,用于根据所述乘客出行数据和所述一线路的列车的容载量,进行预设的模拟总次数的客流模拟,并在每次模拟的过程中,获取样本数据,存入记忆库,同时在每次模拟结束后,统计当次模拟对应的快发车时间段数量和总等待时间,并确定当次模拟对应的当前值网络,其中,一次模拟为进行一天的运营时间的客流模拟,每个样本数据包括一发车时间段的状态数据、所述一发车时间段的下一发车时间段的动作及状态数据以及回报值,所述状态数据包括所述一线路上各车站的站内人数、已发出列车的位置和已发出列出的车内人数,所述动作为以预设的快发车频率进行发车或以预设的慢发车频率进行发车,所述下一发车时间段的动作根据最新的当前值网络确定;训练模块204,用于当有新的样本数据存入记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值时,则根据预设的批次大小,从所述记忆库中随机选取一批次的样本数据,并根据所述一批次的样本数据对最新的当前值网络进行训练,将训练得到的当前值网络作为最新的当前值网络;第一确定模块205,用于当模拟次数达到预设的模拟总次数时,根据各次模拟对应的快发车时间段数量、总等待时间和当前值网络,确定各快发车时间段数量对应的最优当前值网络;选取模块206,用于根据需求,选取一快发车时间段数量对应的最优当前值网络;第二确定模块207,用于获取所述一线路的一发车时间段的状态数据,并根据所述一发车时间段的状态数据,通过所选取的最优当前值网络确定所述一发车时间段的下一发车时间段的动作。
[0144]
在一个可选的实施方式中,所述模拟模块203,包括:第一预设单元,用于预设第i次模拟中运营时间的第一个发车时间段的动作,并将所述第一个发车时间段作为当前发车时间段,i的初始值为1;第一模拟单元,用于根据当前发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行当前发车时间段的客流模拟,并获取当前发车时间段结束时的状态数据作为当前发车时间段的状态数据,同时根据当前发车时间段中的各单位时间内所述一线路上各车站的等车人数,统计当前发车时间段的总等待时间;第一生成单元,用于生成随机数,所述随机数的范围为0-1;第二生成单元,用于若所述随机数小于第i次模拟对应的探索率,则随机生成当前发车时间段的下一发车时间段的动作;
第一确定单元,用于若所述随机数大于或等于第i次模拟对应的探索率,则根据最新的当前值网络确定当前发车时间段的下一发车时间段的动作;第二模拟单元,用于根据所述下一发车时间段的动作、乘客出行数据、容载量以及预设的单位时间,进行下一发车时间段的客流模拟,并获取下一发车时间段结束时的状态数据作为下一发车时间段的状态数据,同时根据下一发车时间段中的各单位时间内所述一线路上各车站的等车人数,统计下一发车时间段的总等待时间;第一计算单元,用于根据当前发车时间段的总等待时间、下一发车时间段的动作以及第j轮迭代对应的惩罚项函数,计算回报值,j=

i/epoch

,epoch为预设的每轮迭代的模拟次数;第三生成单元,用于根据所述当前发车时间段的状态数据、下一发车时间段的动作、回报值和下一发车时间段的状态数据,生成一个样本数据,并=将所述样本数据存储至记忆库;第一判断单元,用于判断所述下一发车时间段是否为运营时间的最后一个发车时间段,得到第一判断结果;第一执行单元,用于若第一判断结果为否,则将所述下一发车时间段作为当前发车时间段,返回执行第一生成单元;第一得到单元,用于若第一判断结果为是,则统计第i次模拟中动作为以快发车频率进行发车的发车时间段的数量,得到第i次模拟对应的快发车时间段数量,根据第i次模拟中运营时间的各发车时间段的总等待时间,计算得到第i次模拟对应的总等待时间,并将当前最新的当前值网络作为第i次模拟对应的当前值网络;第二判断单元,用于判断i是否等于预设的模拟总次数,得到第二判断结果;第二确定单元,用于若第二判断结果为否,则根据第i次模拟对应的探索率以及预设的最小探索率,确定第i 1次模拟对应探索率,第一次模拟对应的探索率为预设的探索率初始值,并令i=i 1,返回执行第一预设单元。
[0145]
在一个可选的实施方式中,所述第一模拟单元,包括:第一作为子单元,用于将当前发车时间段的第一个单位时间作为当前单位时间;第一判断子单元,用于根据所述当前发车时间段的动作以及预设的列车运行数据,分别判断当前单位时间内所述一线路上的各车站是否有列车到站;交互处理子单元,用于若一车站有列车到站,则根据乘客出行数据以及列车的容载量,对所述一车站进行人流交互处理,所述人流交互处理包括到站乘客下车和站内乘客上车,所述到站乘客包括已上车且出站车站id或中转车站id为所述一车站的车站id的乘客,所述站内乘客包括入站乘客和换乘乘客,所述入站乘客包括入站时间早于当前单位时间、入站车站id为所述一车站的车站id且未上车的乘客,所述换乘乘客包括中转车站id为所述一车站的车站id、到达中转车站的时间超过预设的换乘时间、出站车站id对应的车站为所述一线路上的车站且未上车的乘客;第一更新子单元,用于根据人流交互处理结果,更新所述一车站的站内人数和已发出列车的车内人数,并统计当前单位时间内所述一车站的等车人数;第二更新子单元,用于若一车站无列车到站,则根据乘客出行数据以及所述一车站的车站id,更新所述一车站的站内人数,并统计当前单位时间内所述一车站的等车人数;
统计子单元,用于根据当前单位时间内所述一线路上各车站的等车人数,统计当前单位时间内的总等车人数;第二判断子单元,用于判断当前单位时间是否为当前发车时间段的最后一个单位时间;第二作为子单元,用于若第二判断子单元的判断结果为否,则将下一单位时间作为当前单位时间,返回执行所述第一判断子单元。
[0146]
在一个可选的实施方式中,所述第一确定单元,具体用于若所述随机数大于或等于第i次模拟对应的探索率,则根据当前发车时间段的状态数据以及预设的动作集合,通过最新的当前值网络计算所述动作集合中的各动作的评分,并将评分最大值对应的动作作为下一发车时间段的动作,所述动作集合包括以预设的快发车频率进行发车以及以预设的慢发车频率进行发车。
[0147]
在一个可选的实施方式中,所述第一计算单元,具体用于根据回报值计算公式计算回报值,所述回报值计算公式为r=-c
tk-a(fj(x)-fj(x-1)),其中,r为回报值,c
tk
为当前发车时间段的总等待时间,若下一发车时间段的动作为以预设的快发车频率进行发车,则a=1,若下一发车时间段的动作为以预设的慢发车频率进行发车,则a=0,fj(x)为第j轮迭代对应的惩罚项函数。
[0148]
在一个可选的实施方式中,所述模拟模块203,还包括:第三判断单元,用于判断i是否等于每轮迭代的模拟次数的整数倍,得到第三判断结果;第三确定单元,用于若第三判断结果为是,则根据惩罚项函数更新公式以及第j轮迭代对应的惩罚项函数,确定第j 1轮迭代对应的惩罚项函数,所述惩罚项函数更新公式为f
j 1
(x)=k
new
×
smooth

(c
best,j
(x)) k
old
×fj
(x),其中,f
j 1
(x)为第j 1轮迭代对应的惩罚项函数,fj(x)为第j轮迭代对应的惩罚项函数,smooth()为平滑函数,c
best,j
(x)表示第j轮迭代中快发车时间段数量x对应的最少总等待时间,k
new
和k
old
为预设的调节参数,f1(x)=x

m0,x表示快发车时间段的数量,m0为预设的单次快发车的惩罚项。
[0149]
在一个可选的实施方式中,所述发车调度装置还包括:慢发车模拟模块,用于将运营时间的各发车时间段的动作均设为以预设的慢发车频率进行发车,根据所述乘客出行数据和所述一线路的列车的容载量,进行一次慢发车模拟,并根据所述慢发车模拟中各发车时间段的总等待时间,统计得到理论最长等待时间;快发车模拟模块,用于将运营时间的各发车时间段的动作均设为以预设的快发车频率进行发车,根据所述乘客出行数据和所述一线路的列车的容载量,进行一次快发车模拟,并根据所述快发车模拟中各发车时间段的总等待时间,统计得到理论最短等待时间;计算模块,用于将所述理论最长等待时间与理论最短等待时间之差除以预设的一天的发车时间段总数,得到单次快车发的惩罚项。
[0150]
在一个可选的实施方式中,所述第二确定单元,具体用于根据探索率更新公式确定第i 1次模拟对应的探索率,所述探索率更新公式为ε
i 1
=max(ε
min
,εi 0.0045),其中,ε
i 1
为第i 1次模拟对应的探索率,εi为第i次模拟对应的探索率,ε
min
为预设的最小探索率。
[0151]
其中,预设的探索率初始值ε1=1,预设的最小探索率ε
min
=0.1。
[0152]
在一个可选的实施方式中,所述模拟模块203,还包括:
删除单元,用于若记忆库已存储满,则删除最早存储至记忆库的样本数据。
[0153]
在一个可选的实施方式中,所述训练模块204,包括:选取单元,用于当有新的样本数据存入所述记忆库且所述记忆库中的样本数据的数量达到预设的数量阈值,则从所述记忆库中随机选取预设批次大小的样本数据,作为当前批次样本数据,并将最新的当前值网络作为待训练当前值网络;获取单元,用于遍历当前批次样本数据,依序从当前批次样本数据中获取一样本数据;第二计算单元,用于通过最新的待训练当前值网络计算所述一样本数据中的当前发车时间段的状态数据和下一发车时间段的动作对应的评分,作为所述一样本数据对应的第一评分;第三计算单元,用于通过最新的目标值网络分别计算所述一样本数据中的下一发车时间段的状态数据对应各动作的评分,并将评分最大值作为所述一样本数据对应的第二评分;第四计算单元,用于根据所述一样本数据中的回报值、所述一样本数据对应的第一评分和第二评分以及预设的折扣率,计算损失值,并根据所述损失值更新最新的待训练当前值网络的网络参数;作为单元,用于当遍历完当前批次样本数据后,将最新的待训练当前值网络作为最新的当前值网络。
[0154]
在一个可选的实施方式中,所述发车调度装置还包括:更新模块,用于当模拟次数达到预设的第一次数的整数倍时,根据最新的当前值网络的网络参数,更新目标值网络的网络参数。
[0155]
在一个可选的实施方式中,所述第四计算单元,具体用于根据损失函数计算损失值,所述损失函数为loss=(q
target
(s,a)-q
evel
(s,a))2,q
target
(s,a)=r γ
×
max
a'∈a
q(s’,a’),其中,loss为损失值,q
evel
(s,a)为所述一样本数据对应的第一评分,r为所述一样本数据中的回报值,γ为预设的折扣率,max
a'


‍aq(s’,a’)为所述一样本数据对应的第二评分。
[0156]
在一个可选的实施方式中,所述第一确定模块205,具体用于当模拟次数达到预设的模拟总次数时,比较同一快发车时间段数量的各次模拟对应的总等待时间,将所述对应的总等待时间最少的一次模拟对应的当前值网络作为所述同一快发车时间段数量对应的最优当前值网络。
[0157]
实施例三请参照图3,本发明的实施例三为:一种电子设备,所述电子设备包括:一个或多个处理器301;存储装置302,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器301执行,使得所述一个或多个处理器301实现如上所述的发车调度方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0158]
实施例四本发明的实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的发车调度方法实施例中的各个过程,且能达
到相同的技术效果,为避免重复,这里不再赘述。
[0159]
综上所述,本发明提供的一种发车调度方法、装置、设备和存储介质,由于dqn算法在训练时,是通过给予智能体当前时刻的环境状态,让其做出下一个时间段的发车动作选择,因此,当该算法部署到实际生产生活中时,只需要给它当前时刻的列车及车站状态,就可以实时地给出下个发车时间段的发车决策,从而可以根据当前人流情况,实时动态调整发车模式,有效减少轨道交通压力,且对异常人流等突发状况有出色的自适应能力;同时,本发明在训练过程中会随着智能体的学习过程产生不同快发车时间段数量对应的最优模型,工作人员可以根据实际情况选择适合的模型进行部署。
[0160]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(randomaccess memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0161]
值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0162]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献