铁路行车调度系统数据结构分析与设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第25卷,第6期 中国铁道科学V ol 125N o 16 
2004年12月 CHI NA RAI LW AY SCIE NCE
December ,2004 
文章编号:100124632(2004)0620124205
铁路行车调度系统数据结构分析与设计
王 明 慧
(西南交通大学交通运输学院,四川成都 610031)
摘 要:分析铁路行车调度系统基本结构和功能。

利用面向对象分析技术和数据结构理论,对铁路行车调度系统中的信息进行抽象,提出一种以列车为中心的十字链表数据存储结构,提出调整计划的数据帧结构形成算法Ajustment ()和在屏幕上画运行线的算法DrawCurve ()。

并对算法的复杂性进行分析,所有算法的复杂度与问题的规模呈线性关系。

系统具有较高的执行效率。

关键词:行车调度系统;面向对象分析;数据结构;算法设计 中图分类号:U284159 文献标识码:A
 收稿日期:2004205228
 作者简介:王明慧(1964—
),男,湖北省京山人,博士研究生 列车运行是一个复杂过程,列车在运行中不可
避免地要受到各种外来因素的影响[1,2]。

列车运行调整是在列车群运行过程中进行的,一方面调整不应给系统带来新的干扰,另一方面还应该给调度员确认方案、下达计划留下足够的时间,因此对于行
车调度系统的实时性、有效性要求很高[3]
,这种要求在一定程度上必须依赖软件系统,其中数据结构分析和设计是软件系统设计过程中的一个重要环节,它的好坏直接影响到软件系统的执行效率,对于软件系统实时响应特性具有重要影响。

为提高行车调度系统的快速反应性,本文对行车调度系统中
数据存储结构进行详细分析,利用面向对象技术[4]
提出相应的数据结构和算法,并对算法的复杂性进行理论分析。

1 系统基本结构和功能
行车调度系统软硬件结构简单示意图如图1

图1 行车调度系统构成简单示意图
示。

调度中心的行车调度台、系统服务器以及其他调度台如机调、客调、货调、特调、军调、行调等组成局域网,并通过相应的网络设备与各车站的计算机组成站间广域网。

行车调度系统基本工作流程如图2所示。

图2 行车调度工作流程示意图
显而易见,行车调度系统是一个分布式协同工
作的闭环智能控制系统[5]
,其工作原理如下所述:
1)初始状态,列车依据阶段计划运行,车站
终端收集列车实际运行信息和车次信息,并通过车站和调度中心之间的数传设备将该信息发送到行调台,铺画实际运行图;
2)行调台将日班计划与实际运行图结合,采用前向推理、后向推理和模糊推理等方法依据专家系统规则库中的规则进行滚动寻优处理,并将结果提供给调度员,供其选择合理的方案执行;
3)经调度员确认后,阶段计划由行调台下达给车站终端,指挥列车运行,然后从(1)开始进行下一个循环。

其本质就是不断调整列车到发点,使列车运行过程尽量与列车运行日班计划相符合。

2 数据结构分析和设计
211 对象分析
行调系统研究对象分为车站、区间和列车三部分。

其中车站和区间属于静止对象,列车属于动态对象。

列车、车站和区间之间的关系可简单描述为:列车通过车站和区间,一个区间对应两个车站或者说两个相邻车站组成一个区间。

它们之间的关系用E 2R 图描述,如图3所示。

图3 列车、车站和区间三实体之间的E 2R 图
图3中的矩形表示实体,椭圆形表示属性,菱形表示实体之间的关系。

其中,列车与区间之间的关系为多对多的关系,即一个区间可以让多趟列车通过,一个列车可以通过多个区间;同理,列车和车站的关系也为多对多的关系;区间和车站之间的关系为1∶2关系,即一个区间仅与两个车站相关联,两个车站组成一个区间。

列车通过区间时具有“运行时分”,列车通过车站具有“停站时分”、“到发时刻”和所通过的“进路”三个属性。

为简单整洁起见,图中只表示了关系的属性。

对于列车实体,它具有车次号T rain —Number 、长度T rain —Length 、速度T rain —S peed 和位置T rain —P osition 等属性;对于区间实体,它具有长度Sect 2ion —Length 、首车站First —Station 、末车站Last —Sta 2
tion 、轨道电路区段Railway —Circuit 和最高速度Max —S peed 等属性。

车站实体是一个比较复杂的实
体,对其必须进行细化。

车站在系统中是一个基层单位,同时也是生产单位,是行调台显示屏显示的主要内容。

主要由各种信号灯Signal —Lam p 、道岔S witch 、股道和无岔区段Railway —Circuit 和进路R oute 组成,并且它们和车站之间的关系为多对一的聚合关系,如图4所示。

图4 车站的组成
212 数据结构设计
21211 对象类和结构设计
列车和区间两个实体分别用列车类T rain 和区间类Section 进行描述。

对于列车、车站和区间之间的关系属性,它是描述两个类之间关系的信息,如列车的到发点是描述列车和车站之间关系的一个信息,本文将其作为一个结构进行处理。

如图5所示。

图5 列车、区间以及关系属性类图
车站是一个相对比较复杂的类,关键在于确定
道岔、信号灯、股道和无岔区段、进路之间的关系。

为此采用了一个超类:节点类N ode ,即节点是道岔、信号灯、轨道电路区段的父类。

节点类具有属性:节点标识号I D ,节点类型码C ode 。

对于
5
21第6期 铁路行车调度系统数据结构分析与设计
进路,在设计中用链表来表示。

道岔、信号灯、轨
道电路区段类图如图6所示。

图中的三角形表示继承关系。

图6 节点、信号机、道岔和无岔区段对象结构图类图
定义如下链表结点 typedef struct tag —N ode {
 N ode N ode —Object ; //节点对象 tag —N ode 3Pre —N ode ;
//前结点
 tag —N ode 3N ormal —N ode ;//对道岔对象
表示定位时所对应的结点;否则表示后节点 tag —N ode 3Reverse —N ode ;//对道岔对象
表示反位时所对应的结点,否则为空}N odeList ;
typedef struct tag —R oute {
 int N ode —I D ;//组成进路的节点标识号 int N ode —Status ;//组成进路时节点状态 tag —R oute 3Next —N ode ;//下一节点}R outeList ;
在定义N odeList 和R outeList 的基础上,定义车
站类的结构如图7所示。

图7 车站的类图
其中,pSHead ,pST ail ,pXHead ,pXT ail 和
pR oute 分别表示上行线路列表的头指针、上行线路
列表的尾指针、下行线路列表的头指针、下行线路
列表的尾指针和车站的进路列表的头指针。

pSHead ,pST ail ,pXHead 和pXT ail 四个指针链表实际上是车站站场图在计算机内存中的存储结构。

21212 数据结构设计
列车、车站及区间三个类之间的关系在计算机中通过关系属性体现,如列车在车站有计划到达(出发)时间/实际到达(出发)时间、列车在车站所占用的进路等。

在进行数据结构设计时,首先确定以谁为主线。

若以车站为主线,则比较容易确定通过某一车站的所有列车及其关系属性;若以列车为主线,则比较容易确定某一列车通过的所有车站以及关系属性。

在行车调度系统中,经常要进行以列车为主线的操作和以车站为主线的操作,如在做3h 调整计划时要进行以车站为主线的操作,在画
列车运行线时要进行以列车为主线的操作。

因此,
在进行数据结构设计时,列车、车站和区间应该有相同的权重。

定义如下链表结点结构: typedef struct tag —T rain —Station {
 T rain —Station T rain —Station —Object ; //车站对象
 tag —T rain —Station 3pUpT rainStaton ; //指向列车经过的上一车站关系属性 tag —T rain —Station 3pD ownT rainStation ; //指向列车经过的下一车站关系属性 tag —T rain —Station 3pLeftT rainStation ; //指向经过该车站的上一列车关系属性 tag —T rain —Station 3pRightT rainStation ; //指向经过该车站的下一列车关系属性}T rain —Station —List ;
typedef struct tag —T rain —Section {
 T rain —Section T rain —Section —Object ; //区间对象 tag —T rain —Section 3pUpT rainSection ; //指向列车经过的上一区间关系属性 tag —T rain —Section 3pD ownT rainSection ; //指向列车经过的下一区间关系属性 tag —T rain —Section 3pLeftT rainSection ; //指向经过该区间的上一列车关系属性 tag —T rain —Section 3pRightT rainSection ; //指向经过该区间的下一列车关系属性
621中 国 铁 道 科 学 第25卷
}T rain —Section —List ;typedef struct tag —T rain {
 T rain T rainOject ;//列车对象 T rain —Station —List 3pT rainStation ; //指向列车和车站关系属性的指针 T rain —Section —List 3pT rainSection ; //指向列车和区间关系属性的指针 tag —T rain 3nextT rain ; //指向下一趟列车的指针}T rain List ;
typedef struct tag —Station {
 Station StationObject ;//车站对象 T rain —Station —List 3pT rainStation ; //指向列车和车站关系属性的指针 tag —Station 3nextStation ; //指向下一车站的指针}
typedef struct tag —Section {
 Section Section —Object ;//区间对象 T rain —Section —List 3pT rainSection ; //指向列车和区间的关系属性的指针
 tag —Section 3pNextSection ; //指向下一区间的指针}Section —List ;
在上述定义的基础上,可以生成一个十字链表类型的数据存储结构。

该存储结构以列车为核心,对列车、车站和区间之间的关系进行描述,在列车链表的上部是列车和区间的关系属性,下部是列车和车站的关系属性。

在该数据存储结构中,无论是以列车为主线还是以车站为主线,均可方便地找到相应的数据。

21213 算法设计和复杂度分析
对该数据存储结构进行操作的算法有多种。

这里着重描述两个常用的算法:调整计划的数据帧结构形成算法Ajustment ()和在屏幕上画运行线的算法DrawCurve (),并对算法的复杂性进行分析。

两个算法用类C ++语言描述如下: 1)v oid Ajustment (Station ST ,char result [200])
{
 T rain —Station 3p ;
 memset (result ,’\0’,200); //将缓冲区result 初始化;
 p =ST 1pT rainStation ;//取出该车站所对应的
属性列表的头指针; while (p ){ 将列车的车次号、计划到达时间和计划出
发时间存储在缓冲区result 中; (a );
p =p ->pRightT rainStation ; }}
2)v oid DrawCurve (T rain TR ){
 T rain —Station 3p ;
 p =TR 1pT rainStation ; //与列车TR 对应的属性列表的头指针 while (p ){ 在屏幕上画线列车通过站号为p ->
T rainStationObject 1StationI D 车站时的到 
发点; (b );
p =p ->pD ownT rainStation ; }} 在两个算法的描述中,(a )和(b )两个语句均包含一系列语句,不存在任何循环。

算法Ajust 2ment ()执行的结果是形成一个车站的调整计划的数据帧结构,算法DrawCurve ()执行的结果是在计算机屏幕上显示一列车的运行线。

若要形成所有车站的调整计划的数据帧结构和画所有列车的运行线,只需要在遍历车站链表和遍历列车链表的同时调用这两个算法。

假设车站数和列车数分别为m ,n ,则从两个算法的描述过程可知复杂度分别为O (n ),O (m )。

算法与车站数、列车数呈线性关系。

若要形成所有车站的调整计划的数据帧结构和画所有列车的运行线,即在遍历车站链表和列车链表的同时调度这两个算法,则算法的复杂度均为O (m ×n )。

算法的复杂度与问题的规模呈线性关系。

实际上,在对该数据存储结构的所有操作中,只有创建十字链表算法的复杂度与问题的规模呈平方指数关系,其余所有算法的复杂度均与问题的规模呈线性关系,而创建十字链表算法只在软件系统初始化时执行一次,对于程序的联机响应指标没有影响。

7
21第6期 铁路行车调度系统数据结构分析与设计
3 结 论
铁路提速对于行车调度系统的性能提出了更高要求,要求行车调度系统具有更好的联机响应特性。

本文在详细分析铁路系统的基础上,利用数据结构理论和面向对象分析技术,对运输行调系统这个现实系统的信息进行了抽象并提出一种以列车为中心的十字链表数据存储结构,并对算法进行了分析。

除创建十字链表的算法外,所有算法的复杂度与问题的规模呈线性关系,因此系统具有较高的执行效率。

参考文献
 [1] 杨 浩.铁路运输组织学[M].北京:中国铁道出版社,2001年.
 [2] 赵矿英,冯俊杰.铁路行车组织与管理[M].北京:机械工业出版社,2003年.
 [3] 张育升.列车运行计划调整自动化的几个问题[J].北方交通大学学报,1994,18(4):578—581.
 [4] G rady Booch.面向对象分析与设计[M].北京:机械工业出版社,2003年.
 [5] 傅京孙,等.人工智能及其应用[M].北京:清华大学出版社,1995年.
 [6] 刘卫东,沈官林.数据结构C++语言描述[M].北京:清华大学出版社,1999年.
Analysis and Design of the Data Structure for
R ail w ay T raffic Dispatching System
WANG Ming2hui
(School of C ommunication and T ransportation,S outhwest Jiaotong University,Chengdu S ichuan 610031,China)
Abstract:The basic structure and functions of railway traffic dispatching system is analyzed.Based on the OOA and da2 ta structure theory,this paper abstracts the data structure for dispatching system and presents the responding data struc2 ture and plan adjustment alg orithm(Ajustment()).The paper als o presents travel line alg orithm on screen(DrawCurve ()).The paper analyzes the alg orithm com plexity.All alg orithms com plex assumes the linear relations with the question scale.Therefore,the system is of high efficiency.
K ey w ords:T raffic dispatching system;OOA;Data structure;Alg orithm design
(责任编辑 刘卫华) 821中 国 铁 道 科 学 第25卷。

相关文档
最新文档