摘 要: 地鐵列車運(yùn)行圖是地鐵運(yùn)輸中十分重要的組成部分,它是地鐵行車組織的工作計劃和工作基礎(chǔ)。將列車運(yùn)行圖自動編制及優(yōu)化系統(tǒng)分為數(shù)據(jù)庫子系統(tǒng)和運(yùn)行圖調(diào)圖子系統(tǒng)兩部分,闡述了整個系統(tǒng)的框架結(jié)構(gòu)及其優(yōu)化算法,給出了開發(fā)結(jié)果。
關(guān)鍵詞: 列車運(yùn)行控制;運(yùn)行圖;運(yùn)行優(yōu)化
中國城市軌道交通正處于快速發(fā)展階段,尤其在上海,軌道交通已成為公共交通的主要方式。大量軌道交通ATS(Automatic Train Supervision)系統(tǒng)的使用,有效地提高了地鐵調(diào)度效率,增強(qiáng)了軌道交通的安全性和準(zhǔn)確性。
而列車運(yùn)行圖是ATS系統(tǒng)的重要組成部分,一方面列車運(yùn)行圖是軌道交通運(yùn)輸部門實(shí)現(xiàn)列車安全、正點(diǎn)運(yùn)行的基礎(chǔ),另一方面也是其經(jīng)濟(jì)有效地組織地鐵運(yùn)輸工作和列車運(yùn)行生產(chǎn)計劃的根據(jù)[1]。列車運(yùn)行圖自動編制的實(shí)現(xiàn),將有效地減輕編圖人員勞動強(qiáng)度、縮小編圖周期、提高運(yùn)行圖編制質(zhì)量。而在此基礎(chǔ)上對運(yùn)行的優(yōu)化將進(jìn)一步提高列車的運(yùn)行效率,節(jié)約運(yùn)行成本。
1 列車運(yùn)行圖自動編制系統(tǒng)結(jié)構(gòu)
城市軌道列車運(yùn)行圖的要素包括:列車區(qū)間運(yùn)行時分、列車停站時間、列車在折返站停留時間、列車折返出發(fā)間隔時間、列車出入車輛段作業(yè)時間、追蹤列車間隔時間和連發(fā)間隔時間[2]。
整個系統(tǒng)有兩個主要組成部分:數(shù)據(jù)庫子系統(tǒng)和運(yùn)行圖調(diào)圖子系統(tǒng)。其中數(shù)據(jù)庫子系統(tǒng)包括數(shù)據(jù)管理和數(shù)據(jù)存儲兩個模塊,它是編圖的基礎(chǔ)又是編圖的歸屬,負(fù)責(zé)存儲、組織、管理整個排布系統(tǒng)的數(shù)據(jù)信息。調(diào)圖子系統(tǒng)包括運(yùn)行圖自動編制、運(yùn)行圖調(diào)整、運(yùn)行圖輸出模塊,它是系統(tǒng)的核心部分。根據(jù)地鐵運(yùn)營情況,通過求解模型中的函數(shù),得到編制列車運(yùn)行圖的數(shù)據(jù),自動完成列車運(yùn)行圖的排布并經(jīng)人工介入調(diào)整后輸出使用。運(yùn)行圖自動編制系統(tǒng)結(jié)構(gòu)如圖1所示。
2 調(diào)圖子系統(tǒng)結(jié)構(gòu)設(shè)計與實(shí)現(xiàn)
2.1 調(diào)圖子系統(tǒng)中的文檔/視圖結(jié)構(gòu)
微軟MFC的文檔/視圖結(jié)構(gòu)為實(shí)現(xiàn)運(yùn)行圖自動編制系統(tǒng)提供了方便、實(shí)用的框架結(jié)構(gòu),便于程序的設(shè)計、分工、調(diào)試和系統(tǒng)維護(hù),所以本系統(tǒng)采用文檔/視圖結(jié)構(gòu)[3]。所用到的幾個非常重要的成員函數(shù)如下:
?。?)CView::GetDocument函數(shù):該函數(shù)返回的是指向文檔的指針,利用它就可以對文檔類成員函數(shù)及公共數(shù)據(jù)成員進(jìn)行訪問。
?。?)CView::OnInitialUpdate函數(shù):對視圖對象進(jìn)行初始化。當(dāng)應(yīng)用程序啟動或用戶從File菜單中選擇了New或Open時,該CView虛函數(shù)會被自動調(diào)用。
?。?)CDocument::UpdateAllViews函數(shù):文檔數(shù)據(jù)改變時通知所有視圖對所顯示的數(shù)據(jù)進(jìn)行相應(yīng)的更新。
?。?)CView::OnUpdate函數(shù):對文檔進(jìn)行訪問、讀取文檔數(shù)據(jù),然后對視圖的數(shù)據(jù)成員或控制進(jìn)行更新,以便文檔的變化。應(yīng)用程序調(diào)用CDocument::UpdateAllViews時,應(yīng)用程序框架會相應(yīng)地調(diào)用該函數(shù)。
?。?)CDocument::OnNewDocument函數(shù):當(dāng)用戶從File菜單中選擇了New時,框架將首先構(gòu)造一個文檔對象,然后調(diào)用該虛函數(shù),在此設(shè)置文檔數(shù)據(jù)成員的初始值。
2.2 文檔/視圖結(jié)構(gòu)的實(shí)現(xiàn)
主要圖形數(shù)據(jù)放在CMTTDDoc類(從CDocument派生的文檔類)中,在CDynSplitView2視圖(運(yùn)行圖顯示與調(diào)圖視圖)中用圖形數(shù)據(jù)對象提供的接口對圖形數(shù)據(jù)進(jìn)行顯示輸出,即顯示/打印運(yùn)行圖。在CMTTDview視圖(站名與區(qū)間信息視圖)中,同樣調(diào)用圖形數(shù)據(jù)對象接口顯示車站和區(qū)間信息。
由于車站信息也是運(yùn)行圖的一部分,因此,兩視圖顯示的位置必須一致,二者都依賴于文檔類中的圖形數(shù)據(jù)進(jìn)行統(tǒng)一。m_TrainGraph是一個CTrainGraph類的對象,而CTrainGraph類封裝了運(yùn)行圖的圖形數(shù)據(jù),并提供操作接口,基本上所有的運(yùn)行圖操作都圍繞該類進(jìn)行。與CMTTDDoc類相關(guān)聯(lián)的有CMTTDview類和CDynSplitView2類兩個視圖類,后者用于運(yùn)行圖的顯示和調(diào)圖操作,而前者在與后者對應(yīng)的位置顯示車站和區(qū)間信息。OnLButtonDown()等操作都必須做類似:CMTTDDoc*pDoc=GetDocument();的操作,最后通過pDoc進(jìn)行操作。
實(shí)現(xiàn)時采用的結(jié)構(gòu)如圖2所示。
3 數(shù)據(jù)庫子系統(tǒng)的設(shè)計與實(shí)現(xiàn)
由于地鐵運(yùn)行圖的特點(diǎn),開發(fā)時采用微軟的Access作為平臺,共分為三個數(shù)據(jù)庫:系統(tǒng)數(shù)據(jù)庫、基本數(shù)據(jù)庫及結(jié)果數(shù)據(jù)庫。其中系統(tǒng)數(shù)據(jù)庫包含了地鐵線路表和運(yùn)行參數(shù)表,如表1所示。該表決定了排哪一條線路的運(yùn)行圖以及對該線路運(yùn)行圖的基本要求;基本數(shù)據(jù)庫則可以存儲該線路的所有參數(shù):車站、股道、道岔、區(qū)間、列車、上下行客流、車庫、日行車計劃等多個數(shù)據(jù)字典;而結(jié)果數(shù)據(jù)庫則保存了經(jīng)過計算后該線路的旅客時刻表、查錯記錄表及質(zhì)量指標(biāo)表。
由于本系統(tǒng)的所有重要數(shù)據(jù)都存儲在全局變量中,因此數(shù)據(jù)庫子系統(tǒng)的數(shù)據(jù)管理工作主要是通過全局變量來傳遞窗口和界面的數(shù)據(jù)到數(shù)據(jù)庫,即要時時保持?jǐn)?shù)據(jù)庫中數(shù)據(jù)與全局變量的一致。如要更新某條記錄示例如下:
CString strSQL;
strSQL.Format(“update station_table站名=’%s’,\
代碼=’%s’ ,\
站型=%d,\
站臺中心X坐標(biāo)=%d\
站臺類型=%d\
停站時間=%d\
折返時間=%d\
存車線入正線時間=%d\
where代碼=’%s’”,”火車站”,”srs”,2,0,1,50, 60,60,”srs”);
myDAO.DBExcuteSQL(strSQL,0);
//myDAO是一個CDAO類的對象
數(shù)據(jù)庫子系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)操作簡便快捷,所用基礎(chǔ)數(shù)據(jù)輸入后便可自動生成部分關(guān)鍵編圖的特點(diǎn)。不僅減少了部分輸入數(shù)據(jù)的工作量、提高了數(shù)據(jù)的準(zhǔn)確度,而且經(jīng)檢查、查詢、修改、保存,形成了比較準(zhǔn)確、穩(wěn)定、可靠的運(yùn)行圖數(shù)據(jù)庫子系統(tǒng)。
4 運(yùn)行圖優(yōu)化方法的探討
在此重點(diǎn)探討由各折返段行車密度確定最少列車使用數(shù)的方法。
以此可以容易地推廣到m個折返區(qū)段以及環(huán)形路的情況,在此不再贅述。運(yùn)行圖的優(yōu)化可以從多個角度考慮,此處討論的只是其中的一種情況。
對運(yùn)行圖的優(yōu)化是有必要的,通過優(yōu)化可以確定最少的列車使用數(shù),得到最優(yōu)的日班行車計劃,對提高地鐵運(yùn)能、節(jié)約運(yùn)輸成本起到積極的作用。
本研究以上海軌道交通8號線為原型,設(shè)計開發(fā)了供地鐵調(diào)度人員使用的運(yùn)行圖自動編制及優(yōu)化系統(tǒng)。列車運(yùn)行圖自動編制的實(shí)現(xiàn)將有效地減輕編圖人員的勞動強(qiáng)度、縮小編圖周期、提高運(yùn)行圖編制質(zhì)量。在此基礎(chǔ)上對運(yùn)行的優(yōu)化將進(jìn)一步提高列車的運(yùn)行效率,節(jié)約運(yùn)行成本。該系統(tǒng)也可以作為ATS系統(tǒng)的一部分,可大量節(jié)省ATS系統(tǒng)二次開發(fā)的成本。
參考文獻(xiàn)
[1] Binarne Stroutrup. The c++ programming language[M]. 北京:高等教育出版社,2001.
[2] 姜堅華.上海軌道交通線ATC系統(tǒng)的比較[J].城市軌道交通研究,2003(2):56-59.
[3] 莊巍,陳永生.上海地鐵列車運(yùn)行圖自動編制系統(tǒng)[J]. 計算機(jī)工程,2003,29(21):11-16.