一种解决通用约束的城轨交通司机排班问题的方法

文档序号:30171140发布日期:2022-05-26 10:29阅读:211来源:国知局
一种解决通用约束的城轨交通司机排班问题的方法

1.本发明涉及轨道交通技术领域,具体涉及一种解决通用约束的城轨交通司机排班问题的方法。


背景技术:

2.轨道交通是指采用专用轨道导向运行的城市公共客运交通系统,包括地铁系统、轻轨系统、单轨系统、有轨电车、磁浮系统、自动导向轨道系统、市域快速轨道系统。
3.统计结果显示,人力成本在中国轨道交通运营成本中占比52.3%。根据《中华人民共和国国家标准
·
城市轨道交通运营指标体系》和《城市轨道交通2020 年度统计和分析报告》可以估算出,2020年中国地区的人工成本达到587亿元。由于轨道交通中的人力成本巨大,即使节省3-5%的人力,也会节约17-29亿元的成本。


技术实现要素:

4.本发明为了满足在司机人数尽可能少的前提下,使司机拥有较高的工作效率而提出的一种解决通用约束的城轨交通司机排班系统的方法。
5.本发明采用的技术方案为:一种解决通用约束的城轨交通司机排班问题的方法,该方法包括以下步骤:
6.步骤1,设定通用约束条件;
7.步骤2,输入列车运行时刻表和司机的最小间隔休息时间t0;
8.步骤3,统计每个车次与所有车次为临近车次的代价,生成代价矩阵a,并完成数学建模过程;
9.步骤4,在不考虑司机工作总时长的前提下,利用01整数规划算法对建模问题进行一体式求解;
10.步骤5,将步骤4中每位司机的工作量根据步骤1中的通用约束条件分割为多位司机的工作量;
11.步骤6,输出排班表,即司机driverj(j=1,2,

,n)对应的车次集合qj。
12.进一步,在步骤1中的通用约束为:
13.(a)所有的车次都要有司机驾驶,即
14.(b)司机在规定的站点进行上下班;
15.(c)司机每驾驶一个车次之后,至少要休息t0分钟,才能驾驶下一辆车次,即
16.(d)司机只能在所驾驶的上一个车次的终点站进行接车,即(d)司机只能在所驾驶的上一个车次的终点站进行接车,即
17.(e)将司机每天分成一定的班次,各班的人数要相同。
18.进一步,步骤2中,所述列车运行时刻表包括车次traini(i=1,2,

,m)的始发站
出发时刻和抵达时刻
19.进一步,在步骤3中,代价矩阵a的生成步骤包括:定义同一个司机接连驾驶的两个车次为临近车次,即train
jk
与train
j(k+1)
互为临近车次,i车次和j车次互为临近车次的代价为a
ij
,即
[0020][0021]
(i∈[1,m],j∈[1,m],x
ij
∈{0,1})
[0022]
其中,如果i车次的终点站和j车次的始发站不同,不满足式子6表示的约束,其代价为∞;如果车站满足要求,但是中间的间隔时间低于t0,即违反式子7表示的约束,其代价也是∞;只有车站满足要求,并且间隔时间大于t0,使用多余的休息时间表示代价;早上出库的车次没有上一个临近车次,而且晚上入库的车次也没有下一个临近车次时,代价矩阵a的大小是(m+1)
×
(m+1),并且与“假车次”相连的代价为θ,其表示一个足够大的数值。
[0023]
进一步,在步骤4中,由于问题被建模为01整数问题,借助matlab中 intlinprog函数直接进行求解。
[0024]
进一步,在步骤5中,将一体式的排班结果s进行分割,包括以下步骤:
[0025]
s1、输入x矩阵,早班占比p1,白班占比p2,夜班占比p3;
[0026]
s2、找到x矩阵中第一行对应取值为1的列索引j;
[0027]
s3、找到x矩阵中第j行对应取值为1的列索引并重新赋值给j;
[0028]
s4、循环s3,直到j=m+1,并在过程中将j的所有取值记为s1;
[0029]
s5、计算s1所对应的总工时t1;
[0030]
s6、将s1对应的车次按照下班地点进行分割;
[0031]
s7、按照时间顺序和分割后的车次,逐个累加工时。当工时累加到和p1×
t1相接近时,将累加过程中的车次恢复到切割之前的车次(最后一个车次是从下班点下车,当下班点和折返站不同时,对该车次不做切割恢复),并将这些车次作为“早1”司机所驾驶的车次;
[0032]
s8、按照时间顺序和分割后的车次,继续累加工时,工时累加到接近 t1×
(p1+p2)时,将累加车次中除去“早1”司机所开的车次的部分再做和步骤 7中相同的切割恢复,这些车次为“白1”司机驾驶的车次;
[0033]
s9、将s1中剩余的车次,作为“夜1”司机驾驶的车次;
[0034]
s10、仿照步骤s2、s3、s4、s5、s6、s7、s8、s9进行循环,直到求得所有司机所驾驶的车次q。
[0035]
本发明产生的有益效果是:
[0036]
1、本发明提出的代价矩阵可以大幅度降低排班问题的求解复杂性;依据代价矩阵和整数规划算法可以快速求得可行解;使用先一体式求解之后再分割的算法可以满足现实中各种划分班次的要求。
[0037]
2、本发明在满足通用约束的情况下,通过数学证明其排班方案是司机人数最少和当司机人数为最少时工作效率最高的方案,并且运行速度快,自动化程度高。
附图说明
[0038]
图1为本发明的算法流程图;
[0039]
图2为本发明中实施例的线路示意图;
[0040]
图3为本发明中实施例的司机人数对比图。
具体实施方式
[0041]
下面结合附图对本发明作进一步的说明。
[0042]
本发明是一种解决通用约束的城轨交通司机排班问题的方法,轨道交通司机排班问题是根据列车运行的时刻表,如表1所示,在满足一定约束的情况下,求解出较优的司机排班表,如表2所示。
[0043]
表1时刻表举例
[0044][0045]
表2司机排班表举例
[0046][0047]
在实际排班过程中,由于各个地区的劳工法规不同,且线路可能具有一些特殊情况,导致存在各种各样的约束。本发明只考虑通用约束,即多数线路都需要考虑的约束,如下所示:1、所有的车次都要有司机驾驶;2、司机在规定的站点进行上下班;3、司机驾驶一个车次之后,需要休息一定的时间;4、司机只能在所驾驶的上一个车次的终点站进行接车;5、将司机每天分成一定的班次,各班的人数要相同。
[0048]
优秀的司机排班表应满足以下两个特征:1、所需的司机人数较少;2、司机的工作效率较高。
[0049]
为了准确介绍轨道交通司机排班问题,下面使用数学语言定义排班问题,表 3展
示了需要使用的数学符号。其数学描述为:已知车次traini(i=1,2,

,m)的始发站终点站di,出发时刻抵达时刻求解司机driverj(j= 1,2,

,n)的车次集合qj。
[0050]
其中,部分符号可以具体表示为以下形式:
[0051]
qj={train
j1
,train
j2


,train
jk


,train
jl
}#(1)
[0052][0053][0054][0055]
其中,traini为第i个车次;driverj为第j个司机;train
jk
为第j个司机所驾驶的第k个车次;为车次i的出发时间;为车次i的抵达时间;为车次i的出发站;为车次i的终点站;t0为最小间隔休息时间;m为时刻表中车次的总数;n为司机总数;η为司机工作效率;wt为司机浪费的工作时长;at为司机的总工作时长;l为司机驾驶车次的总数;qj为第j个司机所驾驶的车次集合。
[0056]
在求解过程中,需要满足的约束如下:一个车次只能被一个司机驾驶,用式子5表示;一个司机只能在他当前等待的站点进行接车,用式子6表示;司机每驾驶一个车次之后,至少要休息t0分钟,才能驾驶下一辆车次,用式子7表示。
[0057]
对于任意小于n且不相等的两个正整数m,n,
[0058][0059][0060]
优化目标是司机人数少,如式子8所示,和司机的工作效率高,如式子9 所示。
[0061]
minimize n#(8)
[0062]
maximize η#(9)
[0063]
本发明的算法的整体流程如图1所示。
[0064]
排班问题是根据时刻表对司机进行安排车次,自然的解法是对司机安排车次或对车次安排司机,然后寻找可行解,进一步地寻找优秀解。然而,这两种思路都将使得搜索空间巨大,并且空间地型复杂,因而难以搜寻到可行解。基于上述考虑,本发明提出了车连车生成可行解的算法。
[0065]
定义同一个司机接连驾驶的两个车次为临近车次,即train
jk
与train
j(k+1)
互为临近车次。统计每个车次与所有车次为临近车次的代价,生成代价矩阵a。i车次和j车次互为临近车次的代价为a
ij
,其计算如式子10所示:如果i车次的终点站和j车次的始发站不同,不满足式子6表示的约束,其代价为∞;如果车站满足要求,但是中间的间隔时间低于t0,即违反式子7表示的约束,其代价也是∞;只有车站满足要求,并且间隔时间大于t0,使用多余的休息时间表示代价;另外还有一种特殊情况,代价取值为极大数θ,将在下面进行介绍。
[0066][0067]
(i∈[1,m],j∈[1,m],x
ij
∈{0,1})#(10)
[0068]
多数情况下,每个车次有且只有一个临近车次。式子11中的前两个式子分别约束一个车次只能有一个上临近车次和一个下临近车次。但是,早上出库的车次没有上一个临近车次,而且晚上入库的车次也没有下一个临近车次。针对这两种情况,将代价矩阵扩展一行和一列表示“假上一车次”和“假下一车次”,当一个车次不能找到上一个临近车次时,会与“假上一车次”相连,另外一种情况也做类似操作,所以代价矩阵a的大小是(m+1)
×
(m+1),并且与“假车次”相连的代价为θ。
[0069][0070]
式中:x
ij
表示第i个车次与第j个车次是否相邻;a
ij
为第i个车次与第j个车次为临近车次的代价;θ为一个极大数。
[0071]
优秀的排班方案是对于每一位司机,在获得足够的休息即休息t0时间之后,尽快驾驶下一个车次。所以,将降低累加多余休息时间设置为优化目标进行寻优可以找到优秀的排班方案,如式子12所示。在该步骤的求解过程中,先不对司机进行划分班次,即一体式求解。待求解完成后,在下一步骤中进行分割班次。
[0072][0073]
经过以上处理,将复杂的约束多目标排班问题建模为优化函数为式子12,约束函数为式子11的01整数规划问题,从而可以借助matlab中intlinprog 函数直接进行求解。
[0074]
经过0-1整数规划的求解可以获得累加多余休息时间最小时对应的x矩阵,再通过x矩阵可以获得每位司机所驾驶的班次集合q。
[0075]
根据x矩阵可以直接获得一体式的排班结果s。在轨道交通司机的排班中,轮歇方式不止一种,像四班三运作,五班三运作,五班四运作等。通过将s进行分割,使其能够满足各种轮歇方式。以三运作为例,全天的班次分为早班,白班和夜班。另外,出于人性化考虑,早班,白班和夜班的时长不同,所占全天的比例分别为p1,p2,p3。下面对求解步骤进行详细介绍。
[0076]
求解步骤为:
[0077]
s1、输入x矩阵,早班占比p1,白班占比p2,夜班占比p3;
[0078]
s2、找到x矩阵中第一行对应取值为1的列索引j;
[0079]
s3、找到x矩阵中第j行对应取值为1的列索引并重新赋值给j;
[0080]
s4、循环步骤3,直到j=m+1,并在过程中将j的所有取值记为s1;
[0081]
s5、计算s1所对应的总工时t1;
[0082]
s6、将s1对应的车次按照下班地点进行分割;
[0083]
s7、按照时间顺序和分割后的车次,逐个累加工时;当工时累加到和p1×
t1相接近时,将累加过程中的车次恢复到切割之前的车次(最后一个车次是从下班点下车,当下班点和折返站不同时,对该车次不做切割恢复),并将这些车次作为“早1”司机所驾驶的车次;
[0084]
s8、按照时间顺序和分割后的车次,继续累加工时,工时累加到接近 t1×
(p1+p2)时,将累加车次中除去“早1”司机所开的车次的部分再做和步骤 7中相同的切割恢复,这些车次为“白1”司机驾驶的车次;
[0085]
s9、将s1中剩余的车次,作为“夜1”司机驾驶的车次;
[0086]
s10、仿照s2、s3、s4、s5、s6、s7、s8、s9进行循环,直到求得所有司机所驾驶的车次q。
[0087]
以下将对该方法能够获得司机人数最少和当司机人数为最少时工作效率最高的排班方案进行证明。首先对该方法能够达到最少的司机人数进行证明:
[0088]
由于01整数规划算法为精确性算法,可以求得优化问题(12)的最优解。
[0089][0090]
将式子10代入式子12:
[0091][0092]
由于时刻表具有可行性,式子13求解出的代价小于∞,即生成的解是可行的,不存在第一个式子和第二个式子所表示的情况。式子13的意义是所有司机的多余休息时间wt加上2
×n×
θ(每位司机都有“假上一车次”和“假下一车次”,所以乘以2)的和,即:
[0093][0094]
由于θ是极大数,则有:
[0095]2×n×
θ》》wt#(15)
[0096]
所以当式子14取得最小值时,n一定是最小值,即该方法求得的司机人数一定是最少的。
[0097]
下面对该方法所得的排班方案是在司机为最少时,具有最高的工作效率进行证明:
[0098]
首先,如上所述,工作效率η的定义为:
[0099][0100]
其中,wt和at分别由式子2和式子3表示:
[0101][0102][0103]
另外,总工作时长at又等于所有车次的行驶时间tst,所有必要的休息时间 tsn,所有浪费的工作时长wt三者的和,即:
[0104]
at=tst+tsn+wt#(16)
[0105]
式子16中,tst由时刻表直接确定,为定值。tsn等于所有的行车间隔数与t0的乘积,而行车间隔数等于车次数与司机人数的差,即:
[0106]
tsn=(m-n)
×
t0#(17)
[0107]
将式子17改写为:
[0108]
tsn=m
×
t
0-n
×
t0#(18)
[0109]
将式子18代入式子16得:
[0110]
at=tst+m
×
t
0-n
×
t0+wt#(19)
[0111]
将式子19代入式子4得:
[0112][0113]
将式子20中分式的分子和分母同时除以wt得:
[0114][0115]
对式子21进行分析:
[0116]
tst+m
×
t0为定值,n为最小值,则(tst+m
×
t
0-n
×
t0)为最大值。如上述所说,当式子14取得最小值时,n为最小值,那么在n取最小值的情况下, wt也是对应的最小值。对于分式22,分子为最大值,分母为最小值,且分子和分母均大于0,则该分式的值为最大。
[0117][0118]
由式子22的值最大,可以得出式子21的值最大,即在n取最小时,该方法求解的工作效率η是理论最大值。
[0119]
以下为本发明的一种实施例。
[0120]
采用某市实际交通轨道线路的时刻表进行实验验证,并与该线路的真实排班情况进行对比。该线路的示意图如图3所示,其包含3个停车场和3个折返站,相较于常规线路,属于较复杂的线路。运营时间为05:38到00:26,近19个小时,全天共运营426个班次。另外,线路要求每位司机的行车间隔不低于30分钟,即t0=30,如图2所示。
[0121]
该算法得到的排班结果命名为“rert排班”,线路的真实排班结果命名为“现有排
班”。从司机的人数,效率,总工时,生成排班方案的用时等4个维度进行对比:
[0122]
司机人数的对比如图3所示,在早班,白班,夜班三个班次中均少3位司机,全天共节省9位司机,节省幅度为7.5%。
[0123]
现有排班司机的工作效率为78.1%,rert排班结果中司机的工作效率为82.2%,提升了4.1%。
[0124]
现有排班结果的司机总工时为719.8个小时,rert排班结果的工时为689.2 个小时,共节省30.6个小时,节省幅度为4.3%。
[0125]
最后,对得到排班结果所需的时间进行了对比:采用手工排班方法,通常需要数天的时间;现有的排班系统,多为半自动化排班系统,由于仍旧需要手工操作,通过需要数十分钟;而rert算法,没有需要人工进行调节的步骤,生成排班结果使用了4.8秒。
[0126]
通过以上数据的对比,验证了算法的有效性,展示了在应用方面上的优势。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1