摘 要:地铁列车运行图是地铁运输中十分重要的组成部分,它是地铁行车组织的工作计划和工作基础。将列车运行图自动编制及优化系统分为数据库子系统和运行图调图子系统两部分,阐述了整个系统的框架结构及其优化算法,给出了开发结果。
关键词:列车运行控制;运行图;运行优化
中国城市轨道交通正处于快速发展阶段,尤其在上海,轨道交通已成为公共交通的主要方式。大量轨道交通ATS(Automatic Train Supervision)系统的使用,有效地提高了地铁调度效率,增强了轨道交通的安全性和准确性。
而列车运行图是ATS系统的重要组成部分,一方面列车运行图是轨道交通运输部门实现列车安全、正点运行的基础,另一方面也是其经济有效地组织地铁运输工作和列车运行生产计划的根据[1]。列车运行图自动编制的实现,将有效地减轻编图人员劳动强度、缩小编图周期、提高运行图编制质量。而在此基础上对运行的优化将进一步提高列车的运行效率,节约运行成本。
1 列车运行图自动编制系统结构
城市轨道列车运行图的要素包括:列车区间运行时分、列车停站时间、列车在折返站停留时间、列车折返出发间隔时间、列车出入车辆段作业时间、追踪列车间隔时间和连发间隔时间[2]。
整个系统有两个主要组成部分:数据库子系统和运行图调图子系统。其中数据库子系统包括数据管理和数据存储两个模块,它是编图的基础又是编图的归属,负责存储、组织、管理整个排布系统的数据信息。调图子系统包括运行图自动编制、运行图调整、运行图输出模块,它是系统的核心部分。根据地铁运营情况,通过求解模型中的函数,得到编制列车运行图的数据,自动完成列车运行图的排布并经人工介入调整后输出使用。运行图自动编制系统结构如图1所示。
2 调图子系统结构设计与实现
2.1 调图子系统中的文档/视图结构
微软MFC的文档/视图结构为实现运行图自动编制系统提供了方便、实用的框架结构,便于程序的设计、分工、调试和系统维护,所以本系统采用文档/视图结构[3]。所用到的几个非常重要的成员函数如下:
(1)CView::GetDocument函数:该函数返回的是指向文档的指针,利用它就可以对文档类成员函数及公共数据成员进行访问。
(2)CView::OnInitialUpdate函数:对视图对象进行初始化。当应用程序启动或用户从File菜单中选择了New或Open时,该CView虚函数会被自动调用。
(3)CDocument::UpdateAllViews函数:文档数据改变时通知所有视图对所显示的数据进行相应的更新。
(4)CView::OnUpdate函数:对文档进行访问、读取文档数据,然后对视图的数据成员或控制进行更新,以便文档的变化。应用程序调用CDocument::UpdateAllViews时,应用程序框架会相应地调用该函数。
(5)CDocument::OnNewDocument函数:当用户从File菜单中选择了New时,框架将首先构造一个文档对象,然后调用该虚函数,在此设置文档数据成员的初始值。
2.2 文档/视图结构的实现
主要图形数据放在CMTTDDoc类(从CDocument派生的文档类)中,在CDynSplitView2视图(运行图显示与调图视图)中用图形数据对象提供的接口对图形数据进行显示输出,即显示/打印运行图。在CMTTDview视图(站名与区间信息视图)中,同样调用图形数据对象接口显示车站和区间信息。
由于车站信息也是运行图的一部分,因此,两视图显示的位置必须一致,二者都依赖于文档类中的图形数据进行统一。m_TrainGraph是一个CTrainGraph类的对象,而CTrainGraph类封装了运行图的图形数据,并提供操作接口,基本上所有的运行图操作都围绕该类进行。与CMTTDDoc类相关联的有CMTTDview类和CDynSplitView2类两个视图类,后者用于运行图的显示和调图操作,而前者在与后者对应的位置显示车站和区间信息。OnLButtonDown()等操作都必须做类似:CMTTDDoc*pDoc=GetDocument();的操作,最后通过pDoc进行操作。
实现时采用的结构如图2所示。
3 数据库子系统的设计与实现
由于地铁运行图的特点,开发时采用微软的Access作为平台,共分为三个数据库:系统数据库、基本数据库及结果数据库。其中系统数据库包含了地铁线路表和运行参数表,如表1所示。该表决定了排哪一条线路的运行图以及对该线路运行图的基本要求;基本数据库则可以存储该线路的所有参数:车站、股道、道岔、区间、列车、上下行客流、车库、日行车计划等多个数据字典;而结果数据库则保存了经过计算后该线路的旅客时刻表、查错记录表及质量指标表。
由于本系统的所有重要数据都存储在全局变量中,因此数据库子系统的数据管理工作主要是通过全局变量来传递窗口和界面的数据到数据库,即要时时保持数据库中数据与全局变量的一致。如要更新某条记录示例如下:
CString strSQL;
strSQL.Format(“update station_table站名=’%s’,\
代码=’%s’ ,\
站型=%d,\
站台中心X坐标=%d\
站台类型=%d\
停站时间=%d\
折返时间=%d\
存车线入正线时间=%d\
where代码=’%s’”,”火车站”,”srs”,2,0,1,50, 60,60,”srs”);
myDAO.DBExcuteSQL(strSQL,0);
//myDAO是一个CDAO类的对象
数据库子系统实现了数据操作简便快捷,所用基础数据输入后便可自动生成部分关键编图的特点。不仅减少了部分输入数据的工作量、提高了数据的准确度,而且经检查、查询、修改、保存,形成了比较准确、稳定、可靠的运行图数据库子系统。
4 运行图优化方法的探讨
在此重点探讨由各折返段行车密度确定最少列车使用数的方法。
以此可以容易地推广到m个折返区段以及环形路的情况,在此不再赘述。运行图的优化可以从多个角度考虑,此处讨论的只是其中的一种情况。
对运行图的优化是有必要的,通过优化可以确定最少的列车使用数,得到最优的日班行车计划,对提高地铁运能、节约运输成本起到积极的作用。
本研究以上海轨道交通8号线为原型,设计开发了供地铁调度人员使用的运行图自动编制及优化系统。列车运行图自动编制的实现将有效地减轻编图人员的劳动强度、缩小编图周期、提高运行图编制质量。在此基础上对运行的优化将进一步提高列车的运行效率,节约运行成本。该系统也可以作为ATS系统的一部分,可大量节省ATS系统二次开发的成本。
参考文献
[1] Binarne Stroutrup. The c++ programming language[M]. 北京:高等教育出版社,2001.
[2] 姜坚华.上海轨道交通线ATC系统的比较[J].城市轨道交通研究,2003(2):56-59.
[3] 庄巍,陈永生.上海地铁列车运行图自动编制系统[J]. 计算机工程,2003,29(21):11-16.