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

一种车辆调度方案并行化推演计算方法与流程

2022-02-22 08:14:03 来源:中国专利 TAG:


1.本发明涉及车辆调度技术领域,尤其涉及一种车辆调度方案并行化推演计算方法。


背景技术:

2.我国是进出口贸易和制造大国,进口额多年持续大幅增长,港口吞吐量迅速发展,提升码头或物流运输作业效率是提高竞争力和发展的主要问题。在码头内部车辆调度和作业安排中,由于装卸设备(如码头桥吊、场吊)作业点排队约束、以及作业点直接网络状的业务逻辑关系,针对任何一个方案的效率指标评估需要在时间和空间维度进行推演仿真才能够得到。但是对于大型码头、转运站来说,一天几万个运输任务,一个包含上万任务的车辆调度方案单次评估可能要有几十万条离散事件的处理和计算才能获得具体的效率指标,而行业里普遍应用的局域搜索或元启发式优化需要评估计算几万次以上的调度方案,是优化过程中耗时最长的环节。
3.由于在计算时需考虑到各个任务和设备间存在互相调用的关系,都一般采用按照时间节点顺序推演计算的方法,但这种单一线程的方法没有充分利用计算机多核性能,推演运算速度很慢,进而制约了优化算法的迭代次数,往往不能获得更好的方案。


技术实现要素:

4.针对上述现有技术的现状,本发明所要解决的技术问题在于提供一种车辆调度方案并行化推演计算方法,能够加快运算速度,高效率的实现车辆调度排班方案的推演。
5.本发明包括以下技术方案:
6.一种车辆调度方案并行化推演计算方法,包括步骤:s1、对车辆排班进行建模;s2、并行化计算推演车辆排班方案;s3、对得到的车辆排班方案进行评估与优化;
7.所述步骤s1中的建模包括步骤:
8.a1、使用tasksi={w
ij
},i=0,1,2,...n,j==0,1,2,...,mi表示车辆排班方案中各个车辆需要完成的运输任务;其中,tasksi表示指派任务集,w
ij
表示第i车辆的第j个运输任务,n表示车辆数,mi表示车辆i的运输任务数量;
9.a2、使用wp={nf}表示运输上需要进行装卸作业排队的关键工作节点;其中,f=0,1,2...,nf为第f个工作点;
10.a3、每个运输任务包含多个活动类型,使用a
il
表示第i车辆完成指派任务集的第l个活动,l表示车辆i活动列表的统一索引;
11.所述活动类型包括前往工作点活动和装卸作业活动;
12.所述前往工作点活动和所述装卸作业活动中均包括多个顺序发生的瞬时发生事件;
13.所述瞬时发生事件包括前往工作点事件、到达工作点事件、工作点作业开始事件以及工作点作业完成事件;
14.所述步骤s2中的并行化计算推演的过程包括步骤:
15.b1、输入环境参数;
16.b2、输入各个车辆待计算评价的任务列表;
17.b3、并行计算各个车辆和工作点设备的作业时间表,通过并行化的方式推演各个车辆和工作点设备在各个时间段的作业时间表;
18.b4、将并行推演的结果归并到各个车辆和工作点设备的时间排班表上,合并各个车辆和工作点设备的时间排班表到全局活动时间表上;
19.b5、计算获取评价指标,在推演出来的各个车辆和工作点设备的时间排班表上计算评价指标。
20.在上述方法中,关键工作点节点是一些完成任务所需的装卸活动单容量设备,一次只能处理一个车辆任务,先到先服务;一个运输任务,一般要经过两个工作点,一个装车点,一个卸车点,从装车点装上指定货物到卸车点卸下货物完成;任务在工作点作业时间一般由工作内容预先估计可以获得,但在工作点需要排队以此等待的先到达的车辆作业完成才能进行工作如装和卸等;活动是任务的分解步骤;一个活动包含若干顺序发生的事件,事件为瞬时发生的,事件类型包括派发前往工作点事件;到达工作点的事件;工作点作业开始事件;作业结束事件。以码头运输集装箱任务为例,一个典型的运输任务依次包含以下具体活动:前往第一工作点,工作点作业,前往第二个工作点作业,第二工作点作业包含以下具体事件,具体事件依次为派发前往工作点,空车到达、装车开始、装车结束、运输、满车到达、卸车开始、卸车结束、随后派发前往下一任务的工作点,这些事件属于基本事件类型,通过算法计算这些事件的时间点,就可以得到车辆和工作点的所有活动安排,最终计算各种性能指标。
21.在上述方法中,输入环境参数即输入各工作点距离,车辆总数,车辆当前位置,平均车速等,任务列表包含任务的起止位置,装卸工作点,工作点作业时间,任务内容,节点装卸时间等,将任务分配到各车,可以人工排班得到也可以是由优化算法自动生成得到;上述步骤所示的是一次的任务分配方案的过程推演和评价计算过程,实际在生产和优化改进过程中,可能需要计算成几万次,上述方法能够并行化计算方案推演过程,提高运算速度,大大加快优化算法运行,搜索更大的解空间进而提高寻找的解的质量。
22.进一步地,所述步骤b3中通过并行化的方式推演的过程包括步骤:
23.c1、选取一个可以完成时间安排运算的时间窗,所述时间窗可顺序向前滑动;
24.c2、分析各个车辆任务的关联性,根据车辆任务的输入进行关联分析,得到车辆任务分区方案;
25.c3、根据步骤c2的结果将各个车辆划分给对应的计算分区,一个计算分区实际执行时为一个单独的线程,计算分区间使用计算机线程并行计算,所述计算分区的最大数量等于待安排的车辆数n,所述计算分区的最小数量为单个计算分区;
26.c4、并行计算各计算分区内各个车辆的活动时间表,将车辆任务依次分解成活动和事件,并根据业务环节推演记录活动和事件的瞬时时间,写入计算分区内的活动安排表中,将结果上报并将结果合并到一个全局活动安排表中的主线程;
27.c5、主线程在时间窗内合并步骤c4中得到车辆并行推演结果,存放入全局活动安排表中;
28.c6、将各个计算分区获得的推演结果合并,检测是否有工作点在同一时间存在多个车辆任务;若是,则判定为冲突,建立计算分区回滚撤销及调整函数,并进行重新计算调整冲突;若否,则回到步骤c1继续滑动时间窗。
29.在上述方法中,冲突解决和重新计算,由级联回滚和撤销组成,按递归的方式实现,具体方法是首先建立一个计算分区回滚撤销及调整函数,它的作用是将本计算分区内的运算结果回滚到指定的步数,然后如果这个函数有传入需要调整的避让的任务就将该任务写入计算分区的活动安排表,并改动计算分区内信息(具体步骤为f1-f5),如果没有传入需要调整的任务,为单纯回滚到指定的步数即为回滚撤销,回滚过程中会撤销很多已经产生的活动安排,回滚后检查其他计算分区中有没有插入此次回滚后那些失效的活动,有的话也对该计算分区也进行一次回滚撤销及调整函数到最早一个需要撤销的活动时间以此递归运行完成级联回滚撤销。
30.在上述方法中,时间窗通常选取1小时,4小时,8小时等,时间窗是为了减少长时间安排汇总中遇到冲突,重算过多的问题,一般对于冲突多的场合下,可以选取小的时间窗,如果冲突少的场合下,可以选取大的时间窗;上述方法可以更改计算分区数量来灵活应对运行的系统并行算力,和车辆任务本身适合的并行数量,车辆关联性评估和计算分区调整,可依据现场条件的循环中跳过c1,c2即不做计算分区调整,系统依旧成立。
31.进一步地,所述步骤c6中将各个计算分区获得的推演结果合并的过程包括步骤:
32.d1、保留在冲突中开始时间位于前列的车辆活动不变,通知其他被冲突的车辆活动所在计算分区依次执行回滚撤销及调整函数,即从被冲突的车辆活动的开始事件中获得仿真器产生步数,发送给相应计算分区的回滚撤销及调整函数,并上传冲突的车辆活动内容;计算分区的回滚撤销及调整函数会以此回滚撤销计算分区产生冲突的车辆活动并进行重算,再经由调整函数递归特性回滚撤销其他受到冲突的车辆活动影响过的计算分区,然后返回步骤c4循环执行步骤c4至步骤c6;
33.d2、计算分区线程收到回滚调整信令和受到影响的车辆活动后,回滚到受影响的车辆活动产生的步骤中,若有传入产生影响的车辆活动,则同时将其车辆活动写入计算分区内的活动安排表内,然后重启步骤c4。
34.上述方法中,能够撤销冲突的活动,开始时间最早的活动可以是当前时间窗内开始时间最早的活动,以方便进行当前时间窗的调整,速度较快,针对局部,也可以是总流程中开始时间最早的活动,方便对所有活动进行调整,速度较慢,针对全体。
35.进一步地,所述步骤c4中根据业务环节推演记录活动事件的瞬时时间的过程包括步骤:
36.e1、设定系统的初始状态和事件,设定仿真器时间为初始时间t0,步数为0,根据计算分区内车辆列表中各个车辆待发任务第一个任务产生事件仿真的初始事件都放入待发生事件列表,t
ik
表示i车事件k的发生时间,k=0,1,2,

,t
i0
初始事件的开始时间均为t0,t0取值为该次推算的开始时间;
37.e2、从待发生事件列表中找出发生时间位于前列的事件,记录仿真状态步数到活动表中;
38.e3、前移时钟t到事件时间t
ik
,当前事件借由事件处理器处理,根据业务规则和环境数据进行计算,检查计算分区内部的节点工作安排表和队列,给出计算分区内不冲突的
车辆活动的时间安排,并根据车辆和待做任务产生计算得出后续事件;
39.e4、将后续事件按照开始时间顺序插入到待发生事件列表;
40.e5、重复步骤e2至步骤e4直到待发生事件列表事件执行完成,发送停止信号,并停止程序,若在循环中超过设定的时间窗,则发送待机信号,并暂停循环;若在循环中没有超过设定的时间窗,则返回步骤e2,每次循环步骤e2至步骤e4结束后,检查信号管道内是否有回滚调整信令,若是,则执行回滚调整。
41.上述方法中,实际是一个并行化信令控制的带记录回滚功能的离散仿真器实现,可以根据本发明的并行系统的回滚调整信令提及的步数返回到该步,做出调整后进行重新推演。
42.进一步地,所述步骤e5中执行回滚调整的过程包括步骤:
43.f1、当收到回滚调整指令后,撤销仿真器指定步数之后的变化,按照回滚调整指令要求回滚步数,查找计算分区内历史记录列表,撤销删除之后的历史记录;删除活动表中仿真器步数之后的记录、待发生事件列表产生步数之后的记录和已发生事件仿真器步数之后的记录,并读出环境变量覆盖当前计算分区仿真器的环境变量;
44.f2、若回滚调整指令有传入冲突的车辆活动,则在计算分区的活动表中写入传入的产生冲突的车辆活动,并记录当前计算分区仿真器的步数,作为回滚撤销使用;
45.f3、修改计算分区内产生冲突的车辆活动所在工作点的等待队列时间,并改为冲突的车辆活动的事件结束时间为所在工作点队列结束时间;
46.f4、依据回滚撤销及调整函数的特性,递归方式撤销其他计算分区的产生影响的车辆活动;
47.f5、重启循环回到步骤e2。
48.上述方法中,实现撤销冲突的活动这一功能,另外,每次前移时间窗后可以删除前一时间窗之前的历史列表完成的步数节省空间。
49.进一步地,所述步骤c2中分析各个车辆任务的关联性,根据车辆任务的输入进行关联分析的过程包括步骤:
50.g1、确定统计范围,将各个车辆当前仿真器时间的待做任务列表,按各自每b个任务一组分组,参数b按计算分区调整的周期内能够完成的任务数设置,计算前v个分组内任务列表之间的相关值,其中,v根据分组间任务相关性进行设置;
51.g2、计算繁忙工作点集合作为初始分区,将所有车辆任务经过繁忙工作点的次数累加,并除以所有车辆任务经过繁忙工作点的次数,得到车辆经过工作点nf比率p(nf),设定一个阈值h,把p(nf)大于h的工作点当作繁忙工作点集合中的一个繁忙工作点;一个繁忙工作点对应一个计算分区划分出初始分区,并以繁忙工作点为基础建立初始分区对应的繁忙工作点集合:wpco,o=1,2,3...其中,o表示分区号;
52.g3、将车辆划分到最相关的初始分区,计算各个车辆任务和繁忙工作点集合的相关性,取车辆经过初始分区的所有繁忙工作点的次数,除以车辆经过所有繁忙工作点的累计次数,依次计算出车辆i对初始分区的一维关系向量mt
oi
,并将车辆划入相关性取值最大的初始分区,当车辆对所有初始分区的相关性均小于设定的阈值u时,将车辆统一归入一个新建的额外分区中;
53.g4、合并强相关的初始分区,计算繁忙工作点集合之间的相关值,统计初始分区内
所有车辆的路径相似度,定义oi为初始分区的第i辆车,oi为初始分区的所有车辆的集合,oi∈oi;用a,b表示两个不同的初始分区,o表示所有初始分区的集合,使a≠b,a∈o,b∈o;用表示两个向量x,y之间的欧式距离,建立公式由此计算每个初始分区之间的相关性值xg,设置一个阈值g,如果xg小于设定的阈值g,则合并两个初始分区a,b内的车辆任务成为一个新的分区ab,将两个初始分区的繁忙工作点集合进行合并;
54.g5、重复计算步骤g3,g4,重新计算关系向量并合并强相关的初始分区,直到没有可以合并的初始分区,输出车辆任务分区方案。
55.上述方法中,通过优化分析车辆任务间的关联关系可以减少仿真的并行推演计算的冲突,提高并行效率,最大并行化初始分区数,提高运行速度。
附图说明
56.图1为本发明实施例一提供的车辆调度方案并行化推演计算方法流程图;
57.图2为本发明实施例二提供的车辆调度方案并行化推演计算方法的系统框架图;
58.图3为本发明实施例一提供的车辆调度方案并行化推演计算方法的步骤s2的流程图;
59.图4为本发明实施例一提供的车辆调度方案并行化推演计算方法的推演算法执行流程图;
60.图5为本发明实施例二提供的车辆调度方案并行化推演计算方法的系统时序图;
61.图6为本发明实施例一提供的车辆调度方案并行化推演计算方法的主要数据对象属性及关联关系图;
62.图7为本发明实施例一提供的车辆调度方案并行化推演计算方法的节点活动安排时间图和遇到重叠后调整的方案图;
63.图8为本发明实施例一提供的车辆调度方案并行化推演计算方法的任务活动安排事件被调整后的时间图;
64.图9为本发明实施例一提供的车辆调度方案并行化推演计算方法的并行可回滚事件仿真器执行流程图;
65.图10为本发明实施例一提供的车辆调度方案并行化推演计算方法的车辆计算分区调整的方式图。
具体实施方式
66.以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
67.实施例一
68.本实施例提供了一种车辆调度方案并行化推演计算方法,如图1所示,本方法包括步骤:s1、对车辆排班进行建模;s2、并行化计算推演车辆排班方案;s3、对得到的车辆排班
方案进行评估与优化。
69.具体的,本实施例主要针对单容量装卸工作点排队约束下的整车运输场景,单容量指工作点在任何时候最多只能同时处理一辆车的装卸任务。一个整车运输任务是指车辆从运输起点到终点的直达运输,包含起点的装车和终点的卸车作业。
70.本实施例提供了一种适用于装卸工作点单容量排队约束下的整车运输车辆调度方案效率指标快速计算方法。该计算方法能够通过推演计算得出设备和车辆的运作时间表,并计算最终的车队和工作点效率指标。该计算方法通过将需要计算的调度任务根据车辆划分到不同的计算分区,计算分区内顺序计算,计算分区间进行并行计算,计算完成后再合并相关结果。
71.以及可改变计算分区的方法,来可改变并行度来提高运算速度;并行计算时不同车辆任务划分到不同计算分区的方法,以便让计算分区间的逻辑关联性小冲突少,计算分区内的关联性大,有效减少冲突需要的回滚重算。计算分区计算后结果合并中发生冲突后,处理冲突回滚重算的算法。针对集装箱码头作业车辆调度方案快速推的数据建模方法。
72.步骤s1中的建模包括步骤:
73.a1、使用tasksi={w
ij
},i=0,1,2,...n,j==0,1,2,...,mi表示车辆排班方案中各个车辆需要完成的运输任务;其中,tasksi表示指派任务集,w
ij
表示第i车辆的第j个运输任务,n表示车辆数,mi表示车辆i的运输任务数量;
74.a2、使用wp={nf}表示运输上需要进行装卸作业排队的关键工作节点;其中,f=0,1,2...,nf为第f个工作点;
75.a3、每个运输任务包含多个活动类型,使用a
il
表示第i车辆完成指派任务集的第l个活动,l表示车辆i活动列表的统一索引;
76.活动类型包括前往工作点活动和装卸作业活动;
77.前往工作点活动和所述装卸作业活动中均包括多个顺序发生的瞬时发生事件;
78.瞬时发生事件包括前往工作点事件、到达工作点事件、工作点作业开始事件以及工作点作业完成事件。
79.其中,活动包括前往指定任务工作点、以及完成相应装、卸作业的过程。
80.以码头集装箱装卸环境为例,建模方式如下:一个运输车辆排班方案包含若干辆车和每个车需要完成的运输任务taski={w
ij
},i=0,1,2,...n,j==0,1,2,...,mi,w
ij
表示第i车第j个任务,任务属性参阅图6,n为车辆数,mi车辆i上的任务数,工作点wp={nf},f=0,1,2...为运输上需要进行装卸作业的关键的节点,是一些完成任务所需的装卸活动单容量设备,一次只能处理一辆车任务,先到先服务,nf为第f个工作点。一个运输任务,一般要经过两个工作点,一个装车点,一个卸车点,从装车点装上指定货物到卸车点卸下货物完成。任务在工作点作业时间一般由工作内容预先估计可以获得,但在工作点需要排队以此等待的先到达的车辆作业完成才能进行工作如装和卸等。一个任务包含的若干个活动w
ij
={a
il
},l=0,1,2...表示第i车第l个活动,活动是任务的分解步骤,活动类型分前往工作点和作业两种。
81.参阅图3,其中,步骤s2中的并行化计算推演的过程包括步骤:
82.b1、输入环境参数;
83.b2、输入各个车辆待计算评价的任务列表;
84.b3、并行计算各个车辆和工作点设备的作业时间表,通过并行化的方式推演各个车辆和工作点设备在各个时间段的作业时间表;
85.b4、将并行推演的结果归并到各个车辆和工作点设备的时间排班表上,合并各个车辆和工作点设备的时间排班表到全局活动时间表上;
86.b5、计算获取评价指标,在推演出来的各个车辆和工作点设备的时间排班表上计算评价指标。
87.参阅图4,显示本发明具体的并行推演过程,核心内容是通过并行化的方法将推演任务分散到各个计算分区中,对应到各个独立线程中,结果再由主线程检查合并,充分利用当前计算机多核并行化计算的速度优势,高速计算,其并行度(并行线程数量)可根据计算分区的设置的数量进行调节。
88.具体的,所述步骤b3中通过并行化的方式推演的过程包括步骤:
89.c1、选取一个可以完成时间安排运算的时间窗,所述时间窗可顺序向前滑动;
90.c2、分析各个车辆任务的关联性,根据车辆任务的输入进行关联分析,得到车辆任务分区方案;
91.c3、根据步骤c2的结果将各个车辆划分给对应的计算分区,一个计算分区实际执行时为一个单独的线程,计算分区间使用计算机线程并行计算,所述计算分区的最大数量等于待安排的车辆数n,所述计算分区的最小数量为单个计算分区;
92.c4、并行计算各计算分区内各个车辆的活动时间表,将车辆任务依次分解成活动和事件,并根据业务环节推演记录活动和事件的瞬时时间,写入计算分区内的活动安排表中,将结果上报并将结果合并到一个全局活动安排表中的主线程;
93.c5、主线程在时间窗内合并步骤c4中得到车辆并行推演结果,存放入全局活动安排表中;
94.c6、将各个计算分区获得的推演结果合并,检测是否有工作点在同一时间存在多个车辆任务;若是,则判定为冲突,建立计算分区回滚撤销及调整函数,并进行重新计算调整冲突;若否,则回到步骤c1继续滑动时间窗。
95.冲突解决和重新计算,由级联回滚和撤销组成,按递归的方式实现,具体方法是首先建立一个计算分区回滚撤销及调整函数,它的作用是将本计算分区内的运算结果回滚到指定的步数,然后如果这个函数有传入需要调整的避让的任务就将该任务写入计算分区的活动安排表,并改动计算分区内信息(具体步骤为f1-f5),如果没有传入需要调整的任务,为单纯回滚到指定的步数即为回滚撤销,回滚过程中会撤销很多已经产生的活动安排,回滚后检查其他计算分区中有没有插入此次回滚后那些失效的活动,有的话也对该计算分区也进行一次回滚撤销及调整函数到最早一个需要撤销的活动时间以此递归运行完成级联回滚撤销。
96.其中,步骤c6中将各个计算分区获得的推演结果合并的过程包括步骤:
97.d1、保留在冲突中开始时间位于前列的车辆活动不变,通知其他被冲突的车辆活动所在计算分区依次执行回滚撤销及调整函数,即从被冲突的车辆活动的开始事件中获得仿真器产生步数,发送给相应计算分区的回滚撤销及调整函数,并上传冲突的车辆活动内容;计算分区的回滚撤销及调整函数会以此回滚撤销计算分区产生冲突的车辆活动并进行重算,再经由调整函数递归特性回滚撤销其他受到冲突的车辆活动影响过的计算分区,然
后返回步骤c4循环执行步骤c4至步骤c6,最后结果参阅图7;
98.d2、计算分区线程收到回滚调整信令和受到影响的车辆活动后,回滚到受影响的车辆活动产生的步骤中,若有传入产生影响的车辆活动,则同时将其车辆活动写入计算分区内的活动安排表内,然后重启步骤c4。
99.分区线程收到回滚调整信令和影响的活动后,回滚到本活动产生那步或者产生过调整的那步,如果有传入产生影响的活动同时将该活动写入计算分区内的活动安排表内(单纯撤销的时候是不会传入有冲突的活动),然后重启计算分区内推演循环,因为已经有了该活动的时间,计算分区内计算活动安排会自动避开这段时间避免提交结果造成冲突,调整结果参阅图8,从单车辆任务视角看回滚造成的事件和活动延后。
100.参阅图6,系统中计算分区内推演各车时间表的方法,使用离散事件仿真处理方法,其典型原理就是建立一个待发生事件列表(fel即future event list)根据任务列表放入初始事件,设置一个仿真时钟t,每次取出待发生事件列表(fel)中取出发生事件最早的项即为下一个事件,时钟前进到下一个事件的时间点,然后利用系统内置的规则将事件和环境数据与工作点产生交互,然后计算产生后续事件放入待发生事件列表(fel),直到全部事件执行完成即待发生事件列表为空,就可以得到所有事件的发生顺序和时间点和活动安排的时间段。
101.参阅图9,本发明是一个并行化信令控制的带记录回滚功能的离散仿真器,可以根据本发明的并行系统的回滚调整信令提及的步数返回到该步,做出调整后进行重新推演,调整方式如步骤c6。
102.本发明的建模方法和运行步骤区别于一般的单线程离散仿真器,每个分计算区线程内包含一个独立的带回滚机制的离散事件仿真器,包含独立的当前仿真器步数,当前时钟,环境变量,车辆列表,计算分区车辆相关任务记录列表,事件列表(包含待发生事件列表即fel和已发生事件列表,合并存储),仿真器历史列表,活动安排列表,而主线程包含一份最终的活动记录和全部任务列表,车辆列表。
103.这里包含的任务信令分为分区端,主线程端,其中分区端为,时间窗待机信令,停止信令,时间窗待机信令为推演超过时间窗待机,信令的格式为信令类型和传入参数集合,本实施例中以函数参数形式传入。
104.停止信令,为计算分区内推演结束即线程停止,主线程端为,时间窗可开启信令,其中时间窗开启信令用于通知线程可以计算到该事件窗之后就待机,回滚调整信令用于发送给计算分区回滚和将冲突活动开始事件调整,包含分区号,回滚的步数以及与之冲突的任务占用的时间段,以让计算分区内接下去的任务避开。停止信令为计算分区车辆任务表均计算完成发送通知主线程。
105.其中,步骤c4中根据业务环节推演记录活动事件的瞬时时间的过程包括步骤:
106.e1、设定系统的初始状态和事件,设定仿真器时间为初始时间t0,步数为0,根据计算分区内车辆列表中各个车辆待发任务第一个任务产生事件仿真的初始事件都放入待发生事件列表,t
ik
表示i车事件k的发生时间,k=0,1,2,

,t
i0
初始事件的开始时间均为t0,t0取值为该次推算的开始时间;
107.e2、从待发生事件列表中找出发生时间位于前列的事件,记录仿真状态步数到活动表中;
108.e3、前移时钟t到事件时间t
ik
,当前事件借由事件处理器处理,根据业务规则和环境数据进行计算,检查计算分区内部的节点工作安排表和队列,给出计算分区内不冲突的车辆活动的时间安排,并根据车辆和待做任务产生计算得出后续事件;
109.任务中活动后续事件对应计算如表1所示:
[0110][0111]
表1
[0112]
具体的,如果事件是出发前往工作点则后续事件为到达工作点t
ik 1
=t
ik
t(ns,nd),其中tc为活动完成时间,t(ns,nd)为车辆从工作点ns出发点到动作点nd目的地点的时间,这个数字可以通过业务环境中的路网信息和车辆速度设置得到。
[0113]
如果事件时到达工作点,那么后续事件为工作点作业开始,事件的时间为t
ik 1
=max(t
ik
,t
nfworkqueue
)该节点目前队列中预计完成时间,t
nfworkqueue
为该nf工作点队列结束时间,每个工作点单独记录,更新t
nfworkqueue
=max(t
nfworkqueue
,t
ik
) t
ilp
,其中t
ilp
为i车a
il
活动在工作点要完成作业的需要的时间,一般在运输问题上这个值可以取的统一的经验均值,也可以根据货物,位置等情况选用一个近似值,在发生前可以预估得到。
[0114]
具体的,如果事件是工作点作业开始,那么下一个事件是工作点作业完成,时间是t
ik 1
=t
ik
t
ilp

[0115]
具体的,如果事件是工作点作业完成,则根据当前任务的要求前往下一个工作点,在集装箱实施例中,如果集装箱装箱工作点完成,则根据当前任务前往卸箱的工作点的“前往工作点事件”,如果当前任务已经完成,则为读取该车任务列表产生前往下一个任务的装箱工作点的“前往工作点事件”,最后写入该后续事件的开始时间t
ik 1
=t
ik

[0116]
完成当前事件处理和后续事件产生后,记录后续事件的仿真器步数供回滚使用,并增加仿真器步数1,同时将当前事件所属的活动安排结果上报。
[0117]
e4、将后续事件按照开始时间顺序插入到待发生事件列表;
[0118]
e5、重复步骤e2至步骤e4直到待发生事件列表事件执行完成,发送停止信号,并停止程序,若在循环中超过设定的时间窗,则发送待机信号,并暂停循环;若在循环中没有超过设定的时间窗,则返回步骤e2,每次循环步骤e2至步骤e4结束后,检查信号管道内是否有回滚调整信令,若是,则执行回滚调整。
[0119]
其中,步骤e5中执行回滚调整的过程包括步骤:
[0120]
f1、当收到回滚调整指令后,撤销仿真器指定步数之后的变化,按照回滚调整指令要求回滚步数,查找计算分区内历史记录列表,撤销删除之后的历史记录;删除活动表中仿真器步数之后的记录、待发生事件列表产生步数之后的记录和已发生事件仿真器步数之后的记录,并读出环境变量覆盖当前计算分区仿真器的环境变量;
[0121]
f2、若回滚调整指令有传入冲突的车辆活动,则在计算分区的活动表中写入传入的产生冲突的车辆活动,并记录当前计算分区仿真器的步数,作为回滚撤销使用;
[0122]
f3、修改计算分区内产生冲突的车辆活动所在工作点的等待队列时间,并改为冲突的车辆活动的事件结束时间为所在工作点队列结束时间;
[0123]
f4、依据回滚撤销及调整函数的特性,递归方式撤销其他计算分区的产生影响的车辆活动;
[0124]
f5、重启循环回到步骤e2。
[0125]
参阅图10,计算分区的车辆合并和分离方法,只需要拆分和合并待发任务列表和待发生事件列表、车辆列表即可完成车辆在不同计算分区中的分离和合并。将车辆1从运算分区1移动到运算分区2,将运算分区1内任务表内的车辆1车辆任务记录,任务和待发生事件列表(fel)中记录移动到运算分区2中的任务列表和待发生事件列表(fel)中,计算分区调整方法只能在时间窗结束的时候用,所以一般周期为整数倍的时间窗。
[0126]
其中,步骤c2中分析各个车辆任务的关联性,根据车辆任务的输入进行关联分析的过程包括步骤:
[0127]
g1、确定统计范围,将各个车辆当前仿真器时间的待做任务列表,按各自每b个任务一组分组,参数b按计算分区调整的周期内能够完成的任务数设置,计算前v个分组内任务列表之间的相关值,其中,v根据分组间任务相关性进行设置;
[0128]
g2、计算繁忙工作点集合作为初始分区,将所有车辆任务经过繁忙工作点的次数累加,并除以所有车辆任务经过繁忙工作点的次数,得到车辆经过工作点nf比率p(nf),设定一个阈值h,把p(nf)大于h的工作点当作繁忙工作点集合中的一个繁忙工作点;一个繁忙工作点对应一个计算分区划分出初始分区,并以繁忙工作点为基础建立初始分区对应的繁忙工作点集合:wpco,o=1,2,3...其中,o表示分区号;
[0129]
g3、将车辆划分到最相关的初始分区,计算各个车辆任务和繁忙工作点集合的相关性,取车辆经过初始分区的所有繁忙工作点的次数,除以车辆经过所有繁忙工作点的累计次数,依次计算出车辆i对初始分区的一维关系向量mt
oi
,并将车辆划入相关性取值最大的初始分区,当车辆对所有初始分区的相关性均小于设定的阈值u时,将车辆统一归入一个新建的额外分区中;
[0130]
g4、合并强相关的初始分区,计算繁忙工作点集合之间的相关值,统计初始分区内所有车辆的路径相似度,定义oi为初始分区的第i辆车,oi为初始分区的所有车辆的集合,
oi∈oi;用a,b表示两个不同的初始分区,o表示所有初始分区的集合,使a≠b,a∈o,b∈o;用表示两个向量x,y之间的欧式距离,建立公式由此计算每个初始分区之间的相关性值xg,设置一个阈值g,如果xg小于设定的阈值g,则合并两个初始分区a,b内的车辆任务成为一个新的分区ab,将两个初始分区的繁忙工作点集合进行合并;
[0131]
g5、重复计算步骤g3,g4,重新计算关系向量并合并强相关的初始分区,直到没有可以合并的初始分区,输出车辆任务分区方案。
[0132]
上述方法中,通过优化分析车辆任务间的关联关系可以减少仿真的并行推演计算的冲突,提高并行效率,最大并行化初始分区数,提高运行速度;计算分区的车辆合并和分离方法,只需要拆分和合并待发任务列表和待发生事件列表、车辆列表即可完成车辆在不同计算分区中推送的分离和合并。
[0133]
本方法中主线程首先发送一个时间窗信号给所有的计算分区线程,所有的计算分区线程得到命令后开始依任务列表顺序推演各个车辆任务的活动时间信息,并根据结果上报,直到超过时间窗自动待机或被主线程中断,主线程把各个计算分区的上报信息,合并到活动安排表中。合并过程中如果检查有时间安排重叠后则单独发送信息给需要调整的计算分区,计算分区线程收到调整指令后,回滚到产生冲突的那个步骤,同时撤销该计算分区之后的安排结果,并加入受到影响的车辆活动到活动安排表中,继续运算并做上报。主线程直到所有计算分区计算结束,检查合并结果无冲突后,统计所有车辆和任务结果。
[0134]
实施例二
[0135]
本实施例提供了一种车辆调度方案并行化推演计算方法的系统,如图2所示,本系统包括:分别在独立的线程里面运行的多个运算计算分区,将各个计算分区运算结果实时上报的数据管道,把上报来的数据合并到一个全局的活动安排表中的主线程;计算分区和主线程通过任务信令交互。
[0136]
进一步地,任务信令包括计算分区端和主线程端;计算分区端包括时间窗待机信令和停止信令;时间窗待机信令为推演超过时间窗待机;停止信令为计算分区内推演结束即线程停止;主线程端包括时间窗可开启信令和回滚调整信令;时间窗开启信令用于通知线程计算到该事件窗之后就待机;回滚调整信令为发送给计算分区步数和活动开始事件调整到时间之后,包含分区号,回滚的步数以及与之冲突的任务占用的时间段。
[0137]
参阅图2,本发明的并行推演系统结构,运算分区数可以从1到n个可变(n为的车辆数量,最大为n时即为每辆车独立一个运算分区),在运算前调整完成后,各个运算分区分别在独立的线程里面运行,运算结果实时通过数据管道实时上报,主线程把上报来的数据进行合并到一个全局的活动安排表中。如果发现工作点活动安排有重叠即冲突的活动,按照步骤d1描述的方法处理,发送回滚调整信令给计算分区,计算分区回滚后调整重新计算接下去的部分,主线程继续进行合并,直到所有的线程报告待机或者结束,主线程重新发送前移动的时间窗,如果所有运算分区回报停止,代表所有任务推演完成,就结束合并进行结果计算。
[0138]
参阅图5,本发明内容中的并行系统中推演系统结构的时序由,在本发明例子中主线程首先发送一个时间窗信号给所有计算分区线程,所有计算分区线程得到命令后开始依任务列表顺序推演各个任务的活动时间信息,并根据结果上报,直到超过时间窗自动待机或被主线程通知回滚,主线程把各个计算分区的上报信息,合并到安排总表。合并过程中如果检查有时间安排重叠后单独发送信息给需要调整的计算分区(如图中的分区线程1),分区线程收到调整指令后,回滚到产生冲突的那步(同时撤销该计算分区之后的安排结果),并加入影响的活动安排到该计算分区的活动安排表,继续运算并做上报。主线程直到所有计算分区计算结束,检查合并结果无冲突后,统计所有车辆和任务结果。
[0139]
本方法充分利用车辆运输规划的特点,考虑任务间的逻辑关系,将任务划分到不同的计算分区中,让不同计算分区的推演在不同的线程里进行并行计算,来加快运算速度,而计算分区内进行的任务仍然按正常顺序进行计算,避免任务和事件冲突和设备重复占用,最后经过结果合并计算得到调度方案的效率指标。
[0140]
在该系统中,独立的分区线程通过管道将结果交给主线程合并,主线程通过滑动时间窗信令控制独立的分区线程推演的范围,这种框架系统能够有效解决本实施例的算法在节点工作安排冲突过多、大量计算分区结果需要重算的情况下的效率问题,同时这种系统能够有效减少数据合并的冲突检查范围,提高合并效率。
[0141]
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献