在铁路系统中, 经常有各类异常事件影响列车正常运行. 以异常事件发生的位置分类, 可以把它们分为发生在区间的异常事件与发生在车站的异常事件[1]. 这两类异常事件中发生在区间上发生的异常事件造成的影响往往比在车站发生的异常事件更大, 而在发生在区间的异常事件中, 又以区间失效造成的影响更大. 为了避免异常事件带来更坏的影响, 调度员需及时做出最优或次优的调整. 调整涉及到的内容有列车时刻表、乘务计划与列车交路计划, 其中列车时刻调整是首要调整任务[2].
区间失效后的列车时刻调整问题及相关研究中使用的方法主要有启发式算法、分支定界法、元启发式算法与专业数学优化软件等, 其中启发式算法与分支定界法是最常使用的两种方法[3]. Josyula等人把解空间表示为树, 并提出以深度优先的搜索策略为基础的顺序启发算法来快速遍历树[4]. 兰泽康等人提出使用组合列生成算法与分支定界法的分支定价法求解基于列车路径的整数规划模型[5]. Zhou等人分别使用进化算法与混沌萤火虫算法获得列车时刻调整方案[6]. 邓念和占曙光等人主要研究了高速铁路列车运行实时调整问题, 然后直接使用CPLEX求解其构建的模型[7, 8]; Hou等研究地铁系统发生异常状况时如何调整列车, 同样使用CPLEX求解[9]. 彭其渊等人则指出随着列车和车站数的增加, 模型求解呈指数型增长, 直接求解十分困难, 因此他们利用二阶段启发式算法结合CPLEX求解[10]. 这些经典的方法存在的问题是面对较大规模问题时, 求解时间较长, 算法的实时性较低. 为了提高算法的实时性, 引入变邻域下降算法(Variable Neighborhood Descend, VND)快速解决区间失效后的列车调整问题.
VND是由变邻域搜索算法(Variable Neighborhood Search, VNS)变化而来的一个算法框架, 它以某种方式搜索解的邻域. Shakibayifar与Sheikholeslami使用多目标变邻域搜索算法寻找列车调整问题的帕累托最优集[11], 本文则利用VND的局部搜索能力, 并定义适用于列车时刻调整的邻域结构, 结合禁忌表提出多阶段变邻域下降算法(Multi Stage Variable Neighborhood Descend, MSVND), 高效地获得不改变列车顺序时的调整后的列车运行时刻.
1 高速铁路区间失效的列车时刻调整模型双线高速铁路上的列车分向运行, 两个运行方向上的列车互不干扰. 为了简便起见, 本文研究双线高速铁路某一个方向上区间失效后的列车时刻调整问题, 线路上除了全程运行的列车以外, 还有只在线路上部分区间运行的列车.
1.1 模型假设(1) 区间失效之前的所有列车活动都正常进行;
(2) 一旦区间失效, 失效持续时间可以预测;
(3) 刚好进入失效区间的列车在区间等待区间恢复;
(4) 时间的最小单位为分钟.
1.2 符号说明某高速铁路的运行指定方向列车的轨道与车站组成有向图
在GA上运行的列车集合为
$ \begin{array}{*{20}{l}} {{O_t} = \{ o_1^t,o_2^t,o_3^t,o_4^t, \cdots ,o_{2N - 1}^t,o_{2N}^t\} ,}\\ {{X_t} = \{ x_1^t,x_2^t,x_3^t,x_4^t, \cdots ,x_{2N - 1}^t,x_{2N}^t\} .} \end{array} $ |
其余的参数与变量及其说明如表1所示, 其中
1.3 模型构建 1.3.1 基本模型
以最小化列车在各车站的总晚点时间为目标, 可以构建列车运行调整的基本模型如下:
$\min \sum\limits_{i \in D} {\sum\limits_{t \in T} {(x_i^t - o_i^t)} } $ | (1) |
$ {\rm{s.t.}}\;\;x_i^t = o_i^t\;\;\;\;\forall t \in T,\forall t \in D \cup A:x_i^t \le {r_1} $ | (2) |
$ x_i^t \ge o_i^t\;\;\;\;\forall t \in T,\forall t \in D:o_i^t \ne o_{i - 1}^t $ | (3) |
$ \begin{split}& o_{i + 1}^t - o_i^t + \theta _t^{{s^ + }}{e_{i + 1}} + \theta _t^{{s^ + }}{e_i} \le x_{i + 1}^t - y_i^t\\ &s = i \div 2,\forall i \in D,\forall t \in T:s_t^f \le s \le s_t^l \end{split} $ | (4) |
$ \begin{split} &{h_s}\beta _t^s \le x_{i + 1}^t - x_i^t \le {M^ + }\beta _t^s\\ &s = (i + 1) \div 2,\forall i \in A,\forall t \in T:s_t^f \le s \le s_t^l \end{split} $ | (5) |
$ \alpha _t^s \le \beta _t^s\;\;\;\;\;\;\forall s \in S,\forall t \in T:s_t^f \le s \le s_t^l $ | (6) |
式(1)是列车时刻调整的目标; 式(2)表示区间失效之前; 列车按照计划时刻运行; 式(3)表示列车在计划停站的车站的出站时刻不早于其计划出站时刻; 式(4)限定列车的区间运行时分; 式(5)限定若列车在车站s停站, 则其停站时间不能小于最小停站时间, 若列车在车站s不停车, 则列车的停站时间为0; 式(6)表示列车的停站选择约束, 在其计划停站的车站必须停站.
1.3.2 其他约束除了单列列车的约束条件以外, 还有列车之间因为互相影响而需遵守的一些约束条件.
(1) 出发间隔时间与到达间隔时间约束
$ \left\{ \begin{array}{*{20}{l}} \left| {x_i^t \le x_i^{t'}} \right| \le {g_i}\\ s = \left\lceil {i \div 2} \right\rceil ,\forall i \in A \cup D,\forall t \in T,t' \in T:t \ne t' \end{array} \right. $ | (7) |
式(7)表示任意两列列车在车站的到站与出站间隔时间都满足最小间隔时间约束.
(2) 出发与到达间隔时间约束
$ \left\{ {\begin{array}{*{20}{l}} {lQ_{tt'}^s(x_{i + 1}^t - x_i^{t'}) + Q_{tt'}^s(x_{i + 1}^{t'} - x_i^t) \ge (Q_{tt'}^s + Q_{tt'}^s)G_s^{d,a}}\\ {\forall s \in S;\forall t,t' \in T:t \ne t',s_t^f \le s \le s_t^l,s_{t'}^f \le s \le s_{t'}^l} \end{array}} \right.$ | (8) |
式(8)表示两列列车占用车站相同轨道需要满足最小发到间隔时间.
(3) 车站能力约束
$ \left\{ \begin{array}{*{20}{l}} l\displaystyle\sum\limits_{t,t' \in T} {\lambda _{tt'}^s} - \displaystyle\sum\limits_{t,t' \in T} {\varphi _{tt'}^s} \le {C_s} - 1\\ \forall s \in S:t \ne t',s_t^f \le s \le s_t^l,s_{t'}^f \le s \le s_{t'}^l \end{array} \right.$ | (9) |
式(9)表示列车t在到达车站s的时候, 车站s应有能力为列车t提供服务.
(4) 列车越行约束
$ \left\{ \begin{array}{*{20}{l}} l(x_{i + 1}^{t'} - x_{i + 1}^t)(x_i^{t'} - x_i^t) > 0\\ \forall i \in D;\forall t,t' \in T:t \ne t',s_t^f \le s \le s_t^l,s_{t'}^f \le s \le s_{t'}^l \end{array} \right.$ | (10) |
式(10)表示列车
在获得初始解之前, 根据列车的所有图定时刻是否在
本文使用右移法获得算法的初始解, 该方法把图定的大于
$ \max (\max ({r_2} - o_{2*s_0^ + - 1}^{{t_1}}),\max ({r_2} - o_{2*{s_0}}^{{t_2}})) \;\;{t_1} \in {T_0},{t_2} \in {T_0}^{\prime} . $ |
(1) 邻域结构
为列车集合
因为运行时刻在前的列车影响运行时刻在后的列车、运行位置在前方的列车影响运行位置在后方的列车, 优先平移运行时刻与运行位置在前方的列车可以加快邻域搜索. 因此列车集合
(2) 禁忌表
在对列车集合
(3) 约束条件
列车图定时刻
基于前述邻域结构、禁忌表与约束条件设计的第1阶段多邻域下降算法的伪代码如算法1.
算法1. 第1阶段多邻域下降算法
输入:
1 Tabu: = Ø
2repeat
3 for k=1 to M1
4 change = True
5 while change do
6
7 if
8
9 else then
10 change = False
11 end
12 if
13
14 end
15 end
16 M1:=在列车集合
17 until 某列车在第1次没有更优解与第2次没有更优解之间其他列车也没有更优解.
算法1中步骤2至17调整
第2阶段的算法流程与第1阶段一致, 区别只是第2阶段调整区间失效后仍在车站
(1) 邻域结构
为列车集合
(2) 禁忌表
如果
(3) 约束条件
第2阶段变邻域下降算法需要遵守式(3), 式(5), 式(7)–式(9)表示的约束条件.
2.2.3 第3阶段变邻域下降算法第3阶段调整的列车是
(1) 邻域结构
为列车集合
(2) 约束条件
第3阶段变邻域下降算法需要遵守式(3), 式(5), 式(7)–式(9)表示的约束条件.
第3阶段变邻域下降算法的伪代码如算法2.
算法2. 第3阶段多邻域下降算法
输入:
1
2 repeat
3 for
4
5
6 for m=1 to
7 change = True
8 while change do
9
10 if
11
12 else then
13 change = False
14 end
15 end
16 end
17 until 在列车集合
本阶段针对列车t在某车站s原计划不停车而调整后到达时刻与出发时刻不同的情况. 若满足条件的列车t在车站s的出发时刻与到达时刻之差大于等于
以西成客运专线上行方向为例, 根据2019年7月某日上线运行的列车进行实例分析. 算法基于Python3.6实现, 所有实验都使用CPU为Intel(R) Core(TM) i7-7500U 2.70 GHz, 内存为8 GB的计算机完成.
3.1 数据准备西成客运专线上行方向办理客运业务的车站共有22个, 车站将线路划分为21个区间. 当日上线运营的列车有89列, 其中44列全程运行, 其余45列只在西成客运专线某段运行.
算例的其他参数按如下规则设置. 两列列车同一车站的到达间隔时间与出发间隔时间都为2分钟, 车站使用相同到发线的发到间隔约束时间为3分钟. 青川站的起停附加时间为3分钟, 其余车站的起停附加时间为2分钟.
3.2 实验及对比分析实验设置4种基本失效场景, 4种场景由两类失效区间(绵阳至青莲, 宁强南至汉中)与两类失效开始时刻(10:00, 16:00)两两组合而成, 每种失效场景下又分别对应20, 60, 120分钟3类失效持续时间. 此外, 使用CPLEX获得上述多种失效场景下的列车停止结果并进行对比分析. CPLEX求解时间设置为3小时, 其余保持默认设置, 不包含约束条件(8). 由MSVND与CPLEX获得的列车调整结果如表2所示.
由表2可以看出, MSVND在获得列车调整结果上展示了优秀的效率. 相同失效区间与失效开始时刻下, 计算时间随着失效持续时间增加而增加. 在所有失效场景中(宁强南至汉中, 10:00, 120)的计算时间最长, 共20.765 s; 失效持续时间为20 s的场景的最长计算时间是 3.322 s. 此外, 从表2可以看出第一阶段计算时间占比都大于60%, 且失效持续时间为20与60分钟时, 该占比大于80%.
由表2中目标值与CPLEX求解目标值进行比较可以看出, M-S VND得到的列车运行时调整结果与CPLEX得到的结果差别较小. 在计算时间方面, CPLEX计算时间只有(宁强南至汉中, 16:00, 20)的计算时间小于3小时, 其余场景在使用CPLEX求解时在3小时内都未完成求解. 与MSVND相比, CPLEX求解耗费的计算时间太多, 反应了MSVND在计算时间方面优秀的性能.
4 结论与展望将多阶段变邻域下降算法应用到区间失效后的列车运行时刻调整问题, 实验证明算法调整的结果与全局最优结果相比没有差距, 同时其计算时间又有显著的提升, 表明了算法在列车运行时刻调整问题中的有效性与实时性. 第一阶段快速确定哪些列车恢复到图定时刻, 可以结合其他方法对未恢复到图定时刻的列车进行调整, 减少其他方法直接调整的范围.
[1] |
占曙光. 区间通过能力临时失效下高速铁路列车运行实时调整模型与算法研究[博士学位论文]. 成都: 西南交通大学, 2016.
|
[2] |
Cacchiani V, Huisman D, Kidd M, et al. An overview of recovery models and algorithms for real-time railway rescheduling. Transportation Research Part B: Methodological, 2014, 63: 15-37. DOI:10.1016/j.trb.2014.01.009 |
[3] |
Fang W, Yang SX, Yao X. A survey on problem models and solution approaches to rescheduling in railway networks. IEEE Transactions on Intelligent Transportation Systems, 2015, 16(6): 2997-3016. DOI:10.1109/TITS.2015.2446985 |
[4] |
Josyula SP, Krasemann JT, Lundberg L. A parallel algorithm for train rescheduling. Transportation Research Part C: Emerging Technologies, 2018, 95: 545-569. DOI:10.1016/j.trc.2018.07.003 |
[5] |
兰泽康, 何世伟, 黎浩东. 铁路网络列车运行调整的优化模型及其分支定价算法. 交通运输系统工程与信息, 2018, 18(1): 179-185. |
[6] |
Zhou XZ, Xu W, Zhang Q, et al. Application research for high-speed railway traffic intelligent rescheduling based on chaotic firefly algorithm. Proceedings of the 2018 33rd Youth Academic Annual Conference of Chinese Association of Automation. Nanjing, China. 2018. 258–263.
|
[7] |
邓念, 彭其渊, 占曙光. 干扰条件下高速铁路列车运行实时调整问题研究. 交通运输系统工程与信息, 2017, 17(4): 118-123. |
[8] |
占曙光, 赵军, 彭其渊. 高速铁路区间能力部分失效情况下列车运行实时调整研究. 铁道学报, 2016, 38(10): 1-13. DOI:10.3969/j.issn.1001-8360.2016.10.001 |
[9] |
Hou ZP, Dong HR, Gao SG, et al. Energy-saving metro train timetable rescheduling model considering ATO profiles and dynamic passenger flow. IEEE Transactions on Intelligent Transportation Systems, 2019, 20(7): 2774-2785. DOI:10.1109/TITS.2019.2906483 |
[10] |
彭其渊, 陆柳洋, 占曙光. 基于突发故障的高速列车运行调整研究. 交通运输工程与信息学报, 2018, 16(1): 1-8, 23. DOI:10.3969/j.issn.1672-4747.2018.01.001 |
[11] |
Shakibayifar M, Sheikholeslami A, Jamili A. A multi-objective decision support system for real-time train rescheduling. IEEE Intelligent Transportation Systems Magazine, 2018, 10(3): 94-109. DOI:10.1109/MITS.2018.2842037 |