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

基于启发式算法和时变行驶时间的公交排班表生成算法的制作方法

2021-10-24 12:50:00 来源:中国专利 TAG:算法 排班 启发式 自动生成 行驶


1.本发明涉及智能交通领域,具体涉及一种基于启发式算法和时变行驶时间来自动生成公交排班表的算法。


背景技术:

2.公共交通对于缓解交通拥堵具有重要意义。然而,目前的公交系统很难以可承受的成本为乘客提供高质量的服务。ceder等人通过研究合适的发车间隔、均匀的负载以及寻找最大的协同来提高服务。目前已有一些文献将多条公交线路视为一个系统,然后通过最大化协同或均衡发车间隔来生成公交时刻表,以提高公交服务水平。但目前,关注一条公交线路时刻表的现有文献很少。实际中,即使我们忽略时间依赖的行驶时间,公交排班问题也是np

hard问题,直接求解是相当耗时的,并且在合理的时间内获得大规模实例的最优解是很难的。


技术实现要素:

3.不同时间发出的车辆,面临的路况不同,从始发站到终点站的行驶时间也不同,我们把这种情况称为时间依赖,对应的行驶时间称为时变行驶时间。本发明针对现有技术所存在的不足,提出一种基于启发式算法和时变行驶时间的公交排班表生成算法,在满足最低发车频次要求的前提下,将各个时段的发车频次降到最低,并自动生成考虑时间依赖行驶时间的针对单条公交线路的公交排班表,以解决现有技术针对单条公交线路的公交排班问题难以求解的技术问题。
4.本发明为解决上述技术问题提出如下技术方案:一种基于启发式算法和时变行驶时间的公交排班表生成算法,包括如下步骤:s1、初始化该公交线路的所有公交车的初始状态,该初始状态是运营开始前公交车所处的状态;s2、在当前发车时间点,根据公交车的可用时间判断公交车的状态是否需要改变;s3、判断完所有公交车的状态之后,将状态为“在主场站空闲”的公交车依序添加到集合i
b
中,将状态为“在副场站空闲”的公交车依序添加到集合i
v
中;其中,主场站和副场站为该条公交线路的两个端点;s4、在当前发车时间点,从需要发车的场站的集合中选择第一辆公交车执行任务,并把该公交车的状态变更为从发车场站开往目的地场站,可用时间变更为在当前发车时间点的基础上加上从发车场站到目的地场站的时变行驶时间再加上在目的地场站的最少休息时间而得到的时间点;s5、遍历该公交线路的初始发车时刻表,在每一发车时间点均执行步骤s2~s4,即生成在初始发车时刻表下的公交排班表。
5.进一步地,还包括:根据最低发车频次要求以及运营时间,获得该公交线路的所述初始发车时刻表。
6.进一步地,所述初始发车时刻表通过如下方式获得:对于每个发车时间段,用该时间段的时长除以最低发车频次计算得到发车间隔;若发车间隔不是整数分钟,则取距离该发车间隔最近的两个整数作为发车间隔,在不超出该时间段的时间跨度的前提下,仅选择
较大整数作为发车间隔;结合该条公交线路的运营时间,即得到所述初始发车时刻表。
7.进一步地,公交车的可用时间的初始值设为该条公交线路的结束运营时间。
8.进一步地,步骤s1中,该条公交线路主场站的所有公交车的初始状态为“在主场站空闲”,副场站的所有公交车的初始状态为“在副场站空闲”。
9.进一步地,步骤s2包括:在当前发车时间点,若公交车的可用时间大于当前发车时间点,则公交车的状态保持不变;若公交车的可用时间小于或等于当前发车时间点,则公交车的状态改变,包括:将状态为“从主场站开往副场站”的公交车,变为“在副场站空闲”;将状态为“从副场站开往主场站”的公交车,变为“在主场站空闲”;其中,当公交车执行任务的次数大于预设值时,公交车的状态变为“不可用”。
10.进一步地,步骤s3中:将状态为“在主场站空闲”的公交车依序添加到集合i
b
中,包括:先依序添加属于副场站的公交车,再依序添加属于主场站的公交车;将状态为“在副场站空闲”的公交车依序添加到集合i
v
中,包括:先依序添加属于主场站的公交车,其次依序添加属于副场站的公交车。
11.进一步地,步骤s3中:将状态为“在主场站空闲”的公交车依序添加到集合i
b
中,还包括:往集合i
b
中添加状态为“在主场站空闲”的外包车辆,添加顺序为:在添加了属于主场站的公交车之后,先依序添加属于副场站的外包车辆,再依序添加属于主场站的外包车辆;将状态为“在副场站空闲”的公交车依序添加到集合i
v
中,还包括:往集合i
v
中添加状态为“在副场站空闲”的外包车辆,添加顺序为:在添加了属于副场站的公交车之后,先依序添加属于主场站的外包车辆,再依序添加属于副场站的外包车辆。
12.进一步地,步骤s3中所述依序,是依照车号从小到大或从大到小的顺序。
13.进一步地,步骤s4具体包括:s41、从发车场站的集合中选择第一辆公交车;s42、判断所选公交车属于哪个场站,若属于目的地场站,执行s43;若属于发车场站,执行s44;s43、选择该公交车执行发车任务,并执行s45;s44、先计算在选择该公交车执行发车任务的情况下,该公交车的可用时间,计算方式是:在当前发车时间点的基础上加上从发车场站到目的地场站的时变行驶时间再加上在目的地场站的最少休息时间而得到的时间点;然后将计算得到的可用时间与目的地场站的结束运营时间相比较,若计算得到的可用时间小于或等于目的地场站的结束运营时间,则选择该公交车执行发车任务,并执行s45;若计算得到的可用时间大于目的地场站的结束运营时间,则继续在发车场站的集合中选择相邻下一辆公交车并返回s42;s45、将该公交车的状态变更为“从发车场站开往目的地场站”,同时将可用时间变更为在当前发车时间点的基础上加上从发车场站到目的地场站的时变行驶时间再加上在目的地场站的最少休息时间而得到的时间点;其中,当所述发车场站为主场站时,所述目的地场站为副场站;当所述发车场站为副场站时,所述目的地场站为主场站。
14.与现有技术相比,本发明的技术方案具备如下有益效果:本发明可以在满足最低发车频次要求的前提下,考虑时间依赖的行驶时间,使用尽可能少的公交车完成发车任务,不但解决了目前公交排班求解难的问题,同时得到了基于场站公交车容量和最低发车频次要求的最优排班表;该排班表展示了不同时间段内各公交车的使用情况,为回场控制的安排提供依据。
15.本发明另还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述的基于启发式算法和时变行驶时间的公交排班表生成算法
的步骤。
附图说明
16.图1是本发明实施例提出的一种基于启发式算法和时变行驶时间的公交排班表生成算法的流程图。
17.图2是一条公交线路运行的部分时空图。
具体实施方式
18.下面结合附图和具体的实施方式对本发明作进一步说明。
19.在本发明实施例中,提出了针对单条公交线路在一天当中的公交排班问题的解决方案。具体而言,是一种基于启发式算法和时变行驶时间的公交排班表生成算法,根据初始发车时刻表,用启发式算法将场站内的公交车与发车时间进行匹配,来生成公交排班表。图1所示为该算法的流程图,图2为一条公交线路运行的部分时空图,参照图1和图2来对该算法进行说明,该算法主要包括如下步骤s1~s5:s1、初始化该公交线路的所有公交车的初始状态,该初始状态是运营开始前公交车所处的状态。在具体的实施例中,将一条公交线路两端点的两个站分别定义为主场站和副场站,应当理解的是,主场站和副场站仅便于描述,二者并无区别。当由主场站开往副场站时,主场站即为起始站(发车场站)、副场站即为终点站(目的地场站);反之,当由副场站开往主场站时,副场站即为起始站、主场站即为终点站。初始化时,主场站的所有公交车状态均初始化为“在主场站空闲”,副场站的所有公交车状态均初始化为“在副场站空闲”。
20.s2、在当前发车时间点,根据公交车的可用时间判断公交车的状态是否需要改变。可用时间可认为是公交车的一个时间属性,属性值会随着时间发生改变。若当前发车时间点为当天的第一个发车时间点(比如主场站的开始运营时间6:00),此时所有公交车的“可用时间”均为初始可用时间,在具体的实施例中,将所有公交车的初始可用时间都设置为结束运营时间(比如22:00)。若当前发车时间点已不是第一个发车时间点,则有些公交车的可用时间已发生了变更,比如6:00从主场站发车的公交车a,其可用时间变更为6:00加上该发车时段的时变行驶时间(比如103分钟)再加上公交车a在副场站的休息时间或称等待时间(比如15分钟),即公交车a的可用时间由初始的22:00变更为7:58,表示在7:58时公交车a应当完成了最近的一趟运营任务。
21.其中,所述的时变行驶时间即为考虑时间依赖的行驶时间,不同时间段发出的车,即使起始站和终点站以及行走路线相同,其行驶时间也会不同。比如,针对从主场站到副场站的方向,在6:00~6:30这一时间段内发出的公交车到达副场站的历史平均行驶时间为103分钟,而在6:30~7:00这一时间段内发出的公交车到达副场站的历史平均行驶时间为132分钟。
22.在具体的实施例中,每辆公交车有5种可能的状态,分别为:“在主场站空闲”、“从主场站开往副场站”、“在副场站空闲”、“从副场站开往主场站”和“不可用”。算法开始时,输入主场站和副场站的发车时间,以及场站车辆的初始状态。在每个需要发车的时间节点,都需要根据车辆的时间属性“可用时间”判断车辆的状态。在当前发车时间点,若公交车的“可用时间”大于当前发车时间点,则公交车的状态保持不变;若个公交车的“可用时间”小于或
等于当前发车时间点,则公交车的状态改变,包括:将状态为“从主场站开往副场站”的公交车,变为“在副场站空闲”;将状态为“从副场站开往主场站”的公交车,变为“在主场站空闲”;其中,当公交车执行任务的次数大于预设值时,公交车的状态变为“不可用”,比如某辆公交车执行任务的次数超过6次,则状态变为“不可用”。
23.举例而言,假设遍历到的当前发车时间点为8:00,此时判断各公交车的状态是否需要改变。接前述的例子,在当前发车时间点8:00时,公交车a的可用时间已是变更后的值为7:58,小于当前发车时间点8:00,此时公交车a考虑时间依赖,也应当已经完成最近的一次运营任务,则其状态应该改变,由“从主场站开往副场站”变更为“在副场站空闲”。
24.s3、判断完所有公交车的状态之后,将状态为“在主场站空闲”的公交车依序添加到集合i
b
中,将状态为“在副场站空闲”的公交车依序添加到集合i
v
中,而状态为“不可用”的公交车不会添加到任意集合。
25.在一些实施例中,可以根据公交车的编号/车号依序排列,比如由小到大或者由大到小。在初始时,所有公交车均未运行,可以将属于主场站的公交车依序记为v
b1
、v
b2
、v
b3


v
b20
(此处主场站拥有20辆公交车仅为举例,可以为其它数值),属于副场站的公交车依序记为v
v1
、v
v2
、v
v3


v
v10
(此处副场站拥有10辆公交车仅为举例,可以为其它数值),由于在初始时(开始运营之前)所有公交车均停在其所属场站,状态均为在所属场站空闲,因此初始时,主场站集合i
b
中的车辆为v
b1
、v
b2
、v
b3


v
b20
,副场站集合i
v
中的车辆为v
v1
、v
v2
、v
v3


v
v10
。为了避免无车可用的情况,可以视情况为主场站和/或副场站添加外包车辆,比如可以为主场站外包车辆,记为vv
b1
、vv
b2

等。初始时,为主场站外包的车辆其状态也是“在主场站空闲”,也依序添加于集合i
b
中,但需要注意的是,是在添加完属于主场站的公交车之后,再添加属于主场站的外包车辆。副场站也同理。
26.每遍历一个发车时间点,都要执行一次步骤s2,从而集合i
b
和i
v
都会发生更新。随着不断的更新,属于副场站的公交车和副场站外包车辆会进入集合i
b
中,而属于主场站的公交车和主场站外包车辆也会进入集合i
v
中,每一次执行步骤s3时,都要依序添加公交车,并且可依照以下原则:在当前发车时间点,所有状态为“在主场站空闲”的公交车和外包车辆,按照这样的顺序添加到集合i
b
中:先依序添加状态为“在主场站空闲”的属于副场站的公交车,其次依序添加状态为“在主场站空闲”的属于主场站的公交车,然后依序添加状态为“在主场站空闲”的副场站外包车辆,最后依序添加状态为“在主场站空闲”的主场站外包车辆。在当前发车时间点,所有状态为“在副场站空闲”的公交车和外包车辆,按照这样的顺序添加到集合i
v
中:先依序添加状态为“在副场站空闲”的属于主场站的公交车,其次依序添加状态为“在副场站空闲”的属于副场站的公交车,然后依序添加状态为“在副场站空闲”的主场站外包车辆,最后依序添加状态为“在副场站空闲”的副场站外包车辆。
27.s4、在当前发车时间点,从需要发车的场站的集合中选择第一辆公交车执行任务,并把该公交车的状态变更为从发车场站开往目的地场站,可用时间变更为在当前发车时间点的基础上加上从发车场站到目的地场站的时变行驶时间再加上在目的地场站的最少休息时间而得到的时间点。
28.在一些实施例中,步骤s4具体包括s41~s45:s41、从发车场站的集合中选择第一辆公交车;假如当前发车时间点需要发车的是
主场站,则从集合i
b
中选择第一辆公交车(排序第一);假如当前发车时间点需要发车的是副场站,则从集合i
v
中选择第一辆公交车(排序第一)。应当理解的是,存在在某些发车时间点,主场站和副场站都需要发车的情况,这种情况下主场站和副场站分别进行,互不影响,为主场站选择发车的公交车时则主场站为发车场站、副场站为目的地场站,为副场站选择发车的公交车时则副场站为发车场站、主场站为目的地场站。
29.s42、判断所选公交车属于哪个场站,若属于目的地场站,执行s43;若属于发车场站,执行s44;s43、选择该公交车执行发车任务,并执行s45;s44、先计算在选择该公交车执行发车任务的情况下,该公交车的可用时间,计算方式是:在当前发车时间点的基础上加上从发车场站到目的地场站的时变行驶时间再加上在目的地场站的最少休息时间而得到的时间点;然后将计算得到的可用时间与目的地场站的结束运营时间相比较,若计算得到的可用时间小于或等于目的地场站的结束运营时间,则选择该公交车执行发车任务,并执行s45;若计算得到的可用时间大于目的地场站的结束运营时间,则继续在发车场站的集合中选择相邻下一辆公交车并返回s42;s45、将该公交车的状态变更为“从发车场站开往目的地场站”,同时将可用时间变更为在当前发车时间点的基础上加上从发车场站到目的地场站的时变行驶时间再加上在目的地场站的最少休息时间而得到的时间点。
30.s5、遍历该公交线路的初始发车时刻表,在每一发车时间点均执行步骤s2~s4,即生成在初始发车时刻表下的公交排班表。
31.下面通过一个具体的示例来对本发明的前述算法进行展示说明。
32.假设某条公交线路,主场站有20辆公交车,副场站有10辆公交车。主场站开始运营的时间是6:00(采用24小时制),副场站开始运营的时间是6:30。对该条公交线路不同时间段的最低发车频次要求如表1所示:表1 最低发车频次要求不同出发时间和地点的部分行驶时间如表2所示:表2 从主场站到副场站的部分时变行驶时间
其中,时变行驶时间是根据历史行驶时间进行平均来计算得到。比如,在6:00~6:30这一时间段内从主场站发车到达副场站,所需的行驶时间103分钟,是采用6:00~6:30这一时间段内从主场站开到副场站的历史行驶时间进行平均而求得。应当理解的是,此种求平均的方法仅是一种示例,也可以采用其它方式求解某个时间段的时变行驶时间。
33.基于前述表1和表2,考虑在每个时间段内尽量均匀地发车,可以计算每个时间段的发车间隔,用时间段的时间跨度(也就是“时长”)除以该时间段的最低发车频次来计算,即:发车间隔等于时间跨度与最低发车频次的比值。考虑一种情况,若按照上述计算出的发车间隔,得到某一时间段内的发车时刻的数量大于该时间段的最低发车频次,则可以考虑逐步增大发车间隔以使发车时刻的数量等于最低发车频次,以使用尽可能少的车辆满足最低发车要求。考虑另外一种情况,若发车间隔不是整数(分钟),则取距离该发车间隔最近的两个整数作为发车间隔,在不超出该时间段的时间跨度的前提下,仅选择较大整数作为发车间隔;结合该条公交线路的运营时间,即得到该条公交线路的初始发车时刻表。比如,主场站开往副场站在6:00~6:30这一时间段,发车间隔为时间跨度30分钟与最低发车频次5的比值,即为30
÷
5=6,由于在开始运营时需要发出第一辆车,按照6分钟的发车间隔,则这一时间段会有6个发车时刻,即发车频次为6(大于最低发车频次5),此时调整发车间隔为7分钟,则在6:00~6:30这一时间段,主场站开往副场站的发车时刻分别为6:00、6:07、6:14、6:21、6:28(满足最低发车频次要求)。再比如,6:30~8:00这一时间段,用前述公式计算得到的发车间隔为90分钟除以19约为4.7,不是整数,则取距离4.7最近的两个整数作为发车间隔,由于仅选5分钟作为发车间隔时,该时间段的第19个车次的发车时间为8:03(超出了时间跨度),因此发车间隔包含4分钟和5分钟两种,接上一时间段,得到本时间段的发车时刻依次为6:32、6:36、6:40、6:45、6:50、6:55、7:00、7:05、7:10、7:15、7:20、7:25、7:30、7:35、7:40、7:45、7:50、7:55、8:00,共19个(满足表1的相应要求)。从而,得到表3所示的发车间隔表:表3 不同时间段发车间隔
以及,表4所示的发车时刻表:表4 两个场站的初始发车时刻表根据主场站和副场站的发车时刻表,采用本发明实施例前述的算法,为每个发车时间节点安排合适的车辆执行任务,自动生成主场站和副场站的排班表。算法开始时,初始化所有车辆的状态。主场站所有车辆的状态为“在主场站空闲”,副场站所有车辆的状态为“在副场站空闲”。所有车辆的初始“可用时间”为22:00。依序遍历所有发车时间点,在第一个发车时间点6:00时,主场站需要发车,此时先判断主场站和副场站所有车辆的状态在该时刻是否需要改变。此时所有车辆的可用时间均大于当前发车时间点,所有车辆的状态均
不需要改变,且所有车辆均为可用。完成状态判断,将将状态为“在主场站空闲”的公交车依序添加到集合i
b
中,将状态为“在副场站空闲”的公交车依序添加到集合i
v
中。此时由于是主场站需要发车,因此从主场站的当前车辆集合i
b
中选择第一辆公交车,如果选择的是v
b1
,其属于主场站公交车,开往副场站之后需要回场,因此需要判断其可用时间是否会超出副场站的结束运营时间,如果超出则其无法在副场站运营时间内由副场站返回主场站。因此,需要先计算在选择v
b1
执行发车任务的情况下,其可用时间是多少,可用时间为6:00加上当前发车时间段从主场站开往副场站所需的行驶时间103分钟,再加上该车到达副场站所需停留的休息时间(比如15分钟),则计算出公交车v
b1
的可用时间为7:58(代表在7:58时公交车v
b1
具备可以发车返回主场站的时间条件),小于副场站的结束运营时间22:00,因此可以选定为执行发车任务的车辆,此时将公交车v
b1
的状态由“在主场站空闲”变更为“从主场站开往副场站”,同时将可用时间变更为上述计算出的可用时间。当遍历完所有发车时刻之后,就为每个发车时刻匹配上了对应的公交车,从而生成公交排班表。其中表5为该例子的主场站公交排班表,表6为主场站外包车辆排班表,表7为副场站公交排班表:表5 主场站现有公交排班表
表6 主场站外包车辆排班表
表7 副场站公交排班表可见,本发明可以根据某条公交线路的最低发车频次要求和时间依赖下的行驶时间,立即自动生成该条线路两个终端场站的排班表,解决了人工排班的问题。同时,由于城市土地的限制,公交车在完成一天的任务后,需要回到它当天的出发地,即回场控制。回场控制的公交排班问题一直困扰着公交公司,而本发明生成的公交排班表,为基于场站公交车辆容量和最低发车频次要求下的最优排班表;该排班表展示了不同时间段内各个车辆的使用情况,为回场控制的安排提供依据。
34.本发明另一实施例还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,可实现前述实施例中基于启发式算法和时变行驶时间的公交排班表生成算法的步骤。其中,计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质中包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频等等,或者上述的任意合适的组合。
35.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定
本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜