邵文杰,翟鵬程
中交鐵道設(shè)計(jì)研究總院有限公司,北京 100088
列流圖是鐵路設(shè)計(jì)文件中的重要組成部分,該圖能直觀反映列出編組情況及開行方案。大型樞紐或運(yùn)輸量大的鐵路線路的編組繁多且復(fù)雜,通常包含大量列流線,設(shè)計(jì)人員手工繪制列流線需耗費(fèi)較多時(shí)間及精力,而且易出錯(cuò)。另外,設(shè)計(jì)外部條件的變動(dòng)又會(huì)引起列流圖的修改,從而增加了繪制列流圖的工作量。為實(shí)現(xiàn)列流圖的自動(dòng)繪制,文章在已有研究基礎(chǔ)上針對(duì)列流圖自動(dòng)繪系統(tǒng)中的列流徑路自動(dòng)識(shí)別進(jìn)行研究,并詳細(xì)介紹其實(shí)現(xiàn)算法。
列流圖主要由車站、銜接方向、鐵路網(wǎng)和列流線四個(gè)部分組成。一個(gè)典型的簡(jiǎn)略列流圖如圖1所示。
圖1 列流圖示意圖
在列流圖繪制的過(guò)程中最復(fù)雜及煩瑣的是列流線的繪制,列流線如圖1中的箭頭線。列流圖中包含大量不同列車種類的列流線,列流線因車站或銜接方向的分布位置問(wèn)題可能導(dǎo)致大量列流線交叉重疊,影響圖形美觀及意義表達(dá)。因此在列流圖自動(dòng)繪制系統(tǒng)中,列流線的排列和布局是極其重要的關(guān)鍵性問(wèn)題。為方便計(jì)算機(jī)自動(dòng)對(duì)列流線進(jìn)行排列及布局,需對(duì)列流線進(jìn)行識(shí)別及分類。
列流線識(shí)別主要是對(duì)輸入列流圖自動(dòng)繪制系統(tǒng)中的數(shù)據(jù)進(jìn)行識(shí)別,該識(shí)別主要包括列流徑路識(shí)別、列流線機(jī)車種類。列車線機(jī)車種類相對(duì)簡(jiǎn)單,根據(jù)輸入機(jī)車類型數(shù)據(jù)進(jìn)行識(shí)別分類即可,而列流徑路識(shí)別相對(duì)較復(fù)雜,該識(shí)別過(guò)程包含列流線起點(diǎn)位置、終點(diǎn)位置、列流線拐點(diǎn)、列流線流向和列流線通過(guò)車站等信息。文章對(duì)已開發(fā)的列流圖自動(dòng)繪制系統(tǒng)的列流線識(shí)別方法進(jìn)行詳細(xì)介紹。
列流徑路識(shí)別方法核心思想是根據(jù)列流線的起終點(diǎn)信息,確定其起終點(diǎn)所處的主鏈和支鏈,并由主鏈和支鏈的順序確定列流徑路拐點(diǎn)及流向。列流徑路識(shí)別方法示例圖如圖2所示。
圖2 列流徑路識(shí)別方法示例圖
首先,確定列流徑路的主鏈和支鏈,一般情況下以從左至右的路網(wǎng)連接的車站和方向?yàn)橹麈?,例如圖2中F5方向→A站→B站→C站→F4方向。不含主鏈的路網(wǎng)連接的車站和方向?yàn)橹ф?,支鏈方向通常定義為從上至下,例如圖2中有三個(gè)支鏈,分別為F3方向→C站支鏈、A站→F1方向支鏈和F2方向→D站→B站支鏈。
其次,確定列流徑路起點(diǎn)和終點(diǎn)在主鏈和支鏈中的位置。圖2中虛線列流徑路其起點(diǎn)和終點(diǎn)分別為F3方向和F1方向。由主鏈和支鏈定義可知,虛線列流徑路的終點(diǎn)都位于支鏈上。
最后,確定列流徑路經(jīng)過(guò)的車站、方向以及列流徑路的流向。該過(guò)程的具體步驟如下:
(1)確定列流徑路拐點(diǎn)。圖2中虛線列流徑路起點(diǎn)位于支鏈F3方向→C站上,該支鏈與主鏈相交的車站為C站,因此C站為拐點(diǎn)。終點(diǎn)位于支鏈A站→F1方向上,該支鏈與主鏈相交的車站為A站,因此A站為其另一個(gè)拐點(diǎn)。
(2)確定拐點(diǎn)在主鏈上位置及經(jīng)過(guò)車站。圖2中主鏈為F5方向→A站→B站→C站→F4方向,C站與A站之間在主鏈上只有B站,故主鏈上經(jīng)過(guò)的車站為B站。
(3)組合支鏈和主鏈形成列流徑路。根據(jù)第一步確定的兩條支鏈以及第二步確定的主鏈上經(jīng)過(guò)的車站,即可確定該列流徑路經(jīng)過(guò)的所有方向和車站以及流向,其列流徑路為F3方向→C站→B站→A站→F1方向。
根據(jù)列流徑路自動(dòng)識(shí)別方法的核心思想是利用計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)列流徑路自動(dòng)識(shí)別。在詳細(xì)介紹算法實(shí)現(xiàn)過(guò)程之前,以圖2中列流圖為例簡(jiǎn)要介紹列流圖自動(dòng)編制系統(tǒng)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。在已完成開發(fā)的列流圖自動(dòng)編制系統(tǒng)中,利用數(shù)據(jù)庫(kù)技術(shù)存儲(chǔ)繪制列流圖所需的基本數(shù)據(jù),數(shù)據(jù)記錄字段為車站編號(hào)(StationID)、車站名稱(StationName)、屬性(StationAttr)、鄰居車站(relStation)、鄰居方向(relLocation)。
車站編號(hào)字段記錄了車站的編號(hào),車站名稱字段記錄了對(duì)應(yīng)車站編號(hào)的車站名,屬性字段表示該項(xiàng)屬于車站還是銜接方向,鄰居車站記錄了相鄰車站信息,鄰居方向記錄了相鄰車站上下左右相對(duì)關(guān)系。用戶輸入基本的車站或銜接方向數(shù)據(jù)后,只需要輸入列流線起點(diǎn)和終點(diǎn)的名稱即可由文章提供的列流徑路自動(dòng)識(shí)別算法得到起點(diǎn)至終點(diǎn)的列流徑路,其詳細(xì)的算法步驟如下。
第一步:輸入列流線的起點(diǎn)和終點(diǎn)信息,及起終點(diǎn)名稱。
第二步:針對(duì)已輸入系統(tǒng)的車站或銜接方向數(shù)據(jù),查詢篩選鄰居方向(relLocation),將具有左右關(guān)系的車站篩選出來(lái),并由左右相對(duì)位置關(guān)系進(jìn)行從左至右排序,生成主鏈。
第三步:根據(jù)主鏈車站或銜接方向,篩選車站名稱(StationName),得到非主鏈的車站或銜接方向信息,并篩選鄰居方向(relLocation)具有上下關(guān)系的車站或銜接方向,并由上下相對(duì)位置關(guān)系進(jìn)行從上至下排序,生成支鏈。
第四步:根據(jù)輸入的起終點(diǎn)信息,判斷起終點(diǎn)位于主鏈還是支鏈,并進(jìn)行分類。根據(jù)該列流圖自動(dòng)繪制系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)特點(diǎn),起終點(diǎn)相互對(duì)應(yīng)位置只存在四種情況,分別如下:起點(diǎn)位于主鏈,終點(diǎn)位于主鏈;起點(diǎn)位于主鏈,終點(diǎn)位于支鏈;起點(diǎn)位于支鏈,終點(diǎn)位于主鏈;起點(diǎn)位于支鏈,終點(diǎn)位于支鏈。
第五步:根據(jù)第四步中判定的情況,進(jìn)行列流徑路的求解,并存儲(chǔ)。
第六步:繼續(xù)輸入列流線數(shù)據(jù),跳轉(zhuǎn)至第一步,直至輸入完所有列流線數(shù)據(jù)。
上述列流徑路自動(dòng)識(shí)別算法步驟最核心的部分是第四步,下面對(duì)第四步中四種情況的實(shí)現(xiàn)過(guò)程進(jìn)行詳述。
第一種情況:起點(diǎn)位于主鏈,終點(diǎn)位于主鏈。只需要在主鏈中查找起終點(diǎn)位置,由主鏈中各個(gè)車站相對(duì)關(guān)系即可確定列流徑路。
第二種情況:起點(diǎn)位于主鏈,終點(diǎn)位于支鏈。只需要根據(jù)終點(diǎn)車站在支鏈中查找,并確定終點(diǎn)所在支鏈與主鏈的拐點(diǎn)(共同車站),并在主鏈中查找起點(diǎn)站至該拐點(diǎn)的主鏈車站,即可確定列流徑路。
第三種情況:起點(diǎn)位于支鏈,終點(diǎn)位于主鏈。只需要根據(jù)起點(diǎn)車站在支鏈中查找,并確定起點(diǎn)所在支鏈與主鏈的拐點(diǎn)(共同車站),并在主鏈中查找該拐點(diǎn)與終點(diǎn)站之間的主鏈車站,即可確定列流徑路。
第四種情況:起點(diǎn)位于支鏈,終點(diǎn)位于支鏈。先根據(jù)起點(diǎn)車站查找起點(diǎn)車站所在支鏈與主鏈的拐點(diǎn)1,再根據(jù)終點(diǎn)車站查找終點(diǎn)車站所在支鏈與主鏈的拐點(diǎn)2,最后在主鏈上查找拐點(diǎn)1至拐點(diǎn)2的車站,即可確定列流徑路。
綜上所述,文章根據(jù)列流圖的特點(diǎn),結(jié)合計(jì)算機(jī)自動(dòng)繪圖系統(tǒng),針對(duì)列流圖自動(dòng)繪制系統(tǒng)的核心問(wèn)題——列流徑路的識(shí)別,提供了一種簡(jiǎn)便快速的自動(dòng)識(shí)別方法,并針對(duì)該列流徑路自動(dòng)識(shí)別方法進(jìn)行了算法實(shí)現(xiàn)分析,通過(guò)分析驗(yàn)證了列流圖列流徑路自動(dòng)識(shí)別方法能根據(jù)用戶輸入的列流起終點(diǎn)基本信息,快速生成列流徑路,并根據(jù)列車種類對(duì)列流徑路進(jìn)行分類排序,有利于列流圖自動(dòng)繪制的實(shí)現(xiàn)。