热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络模型_地铁时刻表建模之事件活动网络模型

篇首语:本文由编程笔记#小编为大家整理,主要介绍了地铁时刻表建模之事件-活动网络模型相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了地铁时刻表建模之事件-活动网络模型相关的知识,希望对你有一定的参考价值。


事件-活动网络(Event-Activity Network)建模方法是由替代图(Alternative Graph, AG)法衍生而来的一种新型建模方法。该方法常被用于解决地铁运营受到扰动或中断后的时刻表调整问题[1-3],使用该方法的研究机构主要来源于荷兰及意大利的高校代表学者如Rob Goverde、Yongqiu Zhu、Lucas P. Veelenturf等,所发表的成果主要集中在交通及运筹优化领域顶级期刊(TS, TR-B, EJOR)上。较之离散时间下的时空网络建模方法,该方法的优点是可以建立线性规划数学模型,大大减小求解的难度。




 1 




建模方法简介



将每一个时空节点看做一个事件(Event)而事件与事件之间的有效关系可看作为一个活动(Activity)列车在时空网络上的路径实则是由连接每个事件的一系列活动组成。任意一张列车时刻表都可转换为相应的事件-活动网络,该转换示例见图1.1




1.1 
事件
-
活动网络举例


如图1.1所示,在列车运行时空图中,有两趟地铁列车从车站A运行至车站C。列车1从车站A出发到达车站B之后停站等待,再从车站B运行至车站C。列车2从车站A出发直接到达车站C,中途未在车站B停车。该列车时刻表可转换为事件-活动网络中的节点与弧的连接关系。针对于列车1,其事件-活动序列可表述为:列车1从车站A出发事件(Tr1, Dep, A),通过列车运行活动(可表示为((Tr1, Dep, A),(Tr1, Arr, B)))到达车站B,执行列车1到达车站B事件(Tr1, Arr, B);接着,列车1通过列车等待活动,执行列车1从车站B出发事件(Tr1, Dep, B);最后,列车1通过列车运行活动,执行列车1到达车站C事件(Tr1, Arr, C)。至此,列车1的所有事件-活动序列结束。针对于列车2,其事件-活动序列可表述为:列车2从车站A出发事件(Tr2, Dep, A),通过列车运行活动到达车站B,执行列车2通过车站B事件(Tr2, Pass, B);接着,列车2通过列车运行活动到达车站C,执行列车2到达车站C事件(Tr2, Arr, C)。到达终点站C后,列车2的所有事件-活动序列结束。需要补充说明的是,在考虑客流加载时,换乘客流弧段的加入将使图中的事件-活动网络连接成连通图。

因此,可以采用事件-活动网络建模的方法将规划的列车运行时空图转化为一个新的事件-活动网络。在事件-活动网络中,事件的属性包括事件的执行者(该事件是由哪一趟列车发生)、该事件的类型(到达事件、出发事件或者是通过事件)、事件的位置(该事件发生在哪一个车站)和事件的时刻(该事件在哪一时刻发生);活动的属性包括活动的类型(等待活动、运行活动、通过活动、或者车头时距活动)和活动持续时间(该活动持续了多长时间)。

一般地,采用事件-活动网络建模的方法构造任意一张简易时刻表,所考虑的约束条件通常分为三类:单一事件约束、同一车次事件约束和不同车次事件约束。单一事件约束即对于单个事件自身的约束,该约束保证单个事件的自身属性满足列车运行的条件;同一车次事件约束,该约束保证同一车次的列车事件之间的关系满足列车运行条件,如列车区间运行时间、车站等待时间等等;不同车次的事件约束,该约束诸如相邻车次的车头时距等。

地铁列车时刻表设计问题分为两类:一类是非周期性时刻表设计问题,另一类是周期性时刻表设计问题。非周期时刻表的设计只考虑在所研究时间段内的列车时刻表安排;而周期性时刻表需要首先制定一个周期之内的时刻表,接着延续之后周期的时刻表。本文首先介绍非周期性时刻表的建模。




 2 




非周期性地铁时刻表建模


非周期性时刻表是建立周期性时刻表的基础。在制定非周期性时刻表时,首先给定该时刻表铺画的周期时长以及列车数量,其次通过建立数学优化模型得到满足列车运行约束条件的最优时刻表。

2.1 目标函数

目标函数是评估地铁列车时刻表铺画质量的重要衡量指标。针对高峰时刻的客流需求,本文将铺画一条密集的列车时刻表,因此选择目标函数为最小化最晚列车到达最后车站的时间。

地铁时刻表建模之事件-活动网络模型(一)

2.2 约束条件



(1)单一事件约束

在铺画一个周期内的地铁列车运行图时,单一事件约束要求在该周期内所有事件的发生时刻不超过该周期的时间边界。约束表达如下:

地铁时刻表建模之事件-活动网络模型(一)



(2)同一车次事件约束

对于同一车次的事件,可分为三种:到达事件、出发事件、通过事件。同一车次的活动分为运行活动和等待活动。针对同一车次在某站停站或运行的时间限制,可对其事件得出如下约束:

地铁时刻表建模之事件-活动网络模型(一)



 
(3)不同车次事件约束

对于不同车次的活动,只有一种活动,即列车的车头时距活动。

地铁时刻表建模之事件-活动网络模型(一)



(4)决策变量



在进行简单的时刻表铺画时,只需决策每个事件的发生时刻。按照每列车的活动依次连接各个事件,便可得到每列车完整的列车运行图。

地铁时刻表建模之事件-活动网络模型(一)



 3




案例分析

3.1 案例背景及参数设置

北京地铁2号线(Beijing Subway Line 2)于1984920日开通运营,是中国第一条环形地铁线路,也是北京市最为繁忙的地铁线路之一。该线路全长23.1千米,设有18座车站和1座车辆段( 太平湖车辆段),如图3.1所示。它由北京地铁运营有限公司三分公司运营,运行轨距1435毫米(标准轨距),供电方式为直流750V第三轨供电。线路采用准B6节编组,车型为DKZ16T401-T450),最高时速为80千米[4]。据通知为配合好在建19号线与既有线换乘施工改造工作,2021410日至66对积水潭站进行封闭改造。地铁列车在积水潭站不停车直接通过[5]。 

3.1 北京市地铁2号线

区间的走行时间通过区间的长度与地铁的平均速度相除得到。区间长度可通过查阅北京市地铁官网得到[6]地铁列车的平均速度限制在40-80之间。据此通过计算得到的区间最大和最小走行时间见表2

区间走行时间
















































































































































































区间编号

点车站

点车站

区间长度(m)

地铁平均限速(km/h)

最大走行时间(min)

最小走行时间(min)

1

西直门

积水潭

1899

40-80

2.85

1.42

2

积水潭

鼓楼大街

1766

40-80

2.65

1.32

3

鼓楼大街

安定门

1237

40-80

1.86

0.93

4

安定门

雍和宫

794

40-80

1.20

0.60

5

雍和宫

东直门

2228

40-80

3.34

1.67

6

东直门

东四十条

824

40-80

1.24

0.62

7

东四十条

朝阳门

1027

40-80

1.54

0.77

8

朝阳门

建国门

1763

40-80

2.64

1.32

9

建国门

北京站

945

40-80

1.41

0.71

10

北京站

崇文门

1023

40-80

1.53

0.77

11

崇文门

前门

1634

40-80

2.45

1.23

12

前门

和平门

1171

40-80

1.76

0.88

13

和平门

宣武门

851

40-80

1.28

0.64

14

宣武门

长椿街

1235

40-80

1.85

0.93

15

长椿街

复兴门

1234

40-70

1.85

0.93

16

复兴门

阜成门

1832

40-70

2.75

1.37

17

阜成门

车公庄

960

40-70

1.44

0.72

18

车公庄

西直门

909

40-70

1.36

0.68

为了简化模型,本文假设列车在每个车站的停站时间最大为3分钟,最小为1分钟。

3.2 结果分析

本文采用MATLAB R2014b调用ILOG CPLEX 12.6.3对所建立的线性规划模型进行求解,处理器配置为Intel(R) Core(TM)i5-4210U CPU@ 1.70HZ 2.40GHZ,求解时间为2.689秒。求解结果见图3.2。

               

3.2 列车运行图

如图3.2所示,在一个小时之内铺画了7条地铁列车运行线,最后一趟列车到达车公庄站的时刻为55.83分。另外,经笔者调试,在一个小时内最多能够铺画8张完整的地铁列车运行线,且该铺画方案中第8条地铁列车到达车公庄站的时刻为59.83分。值得注意的是,本模型的最优解有无穷多个。可以看到,在第7趟列车运行线中,西直门站至鼓楼大街站为折线。事实上,在图中红色矩形框中,红色折线可用绿色直线代替,替换后并不改变模型的最优目标函数值。为了避免模型的无穷多解,就需要多考虑一些因素,使得模型的解更具唯一性。




4




总结

本文用事件-活动网络模型建立了铺画简单列车时刻表的数学优化模型。在模型中只考虑了地铁列车及线路的运行条件,并未考虑客流的加载。事实上,时刻表的制定应充分考虑客流的需求,根据客流的需求制定列车时刻表更加符合实际运营的需求。因此,更加实用的地铁列车时刻表应当是在客流需求驱动下所设计的时刻表,而这也是我们后续文章中将要介绍的内容。






5


 参考文献

[1]Veelenturf, Lucas P., M. Kidd, Valentina Cacchiani, L. Kroon and P. Toth. A Railway Timetable Rescheduling Approach for Handling Large-Scale Disruptions[J]. Transportation Science. 50 (2016): 841-862.

[2] Zhu Y, Goverde R. Railway timetable rescheduling with flexible stopping and flexible short-turning during disruptions[J]. Transportation Research Part B: Methodological, 2019, 123(5):149-181.

[3]Ilse, Louwerse, Dennis . Adjusting a railway timetable in case of partial or complete blockades[J]. European Journal of Operational Research, 2014.

[4]https://baike.baidu.com/item/北京地铁2号线/4320943?fr=aladdin

[5]https://baijiahao.baidu.com/s?id=1699368874266244847&wfr=spider&for=pc

[6]https://www.bjsubway.com/station/zjgls/#



推荐阅读
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 中科院学位论文排版指南
    随着毕业季的到来,许多即将毕业的学生开始撰写学位论文。本文介绍了使用LaTeX排版学位论文的方法,特别是针对中国科学院大学研究生学位论文撰写规范指导意见的最新要求。LaTeX以其精确的控制和美观的排版效果成为许多学者的首选。 ... [详细]
  • 哈密顿回路问题旨在寻找一个简单回路,该回路包含图中的每个顶点。本文将介绍如何判断给定的路径是否构成哈密顿回路。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文介绍如何在SQL Server中创建动态SQL存储过程,并提供详细的代码实例和解释。通过这种方式,可以更灵活地处理查询条件和参数。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文探讨了Jsonapi-rb与ActiveModelSerializers (AMS)在性能上的差异,并分享了详细的基准测试结果。 ... [详细]
author-avatar
幸福的哈瑞宝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有