王 斌,金福才,謝玉霞
(1.西南交通大學(xué) 交通運(yùn)輸與物流學(xué)院,四川 成都 610031;2.中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081)
車流推算是依據(jù)當(dāng)前鐵路車輛狀態(tài)預(yù)測(cè)其未來(lái)變化的狀態(tài),既是編制調(diào)度工作計(jì)劃和車流調(diào)整計(jì)劃的依據(jù),也是建立鐵路電子商務(wù)平臺(tái)的重要信息支撐[1]。我國(guó)鐵路存在資源分布不均衡、重去空回較多、運(yùn)輸距離長(zhǎng)等現(xiàn)象,都會(huì)造成鐵路車流不均衡,使得車流推算與調(diào)整工作更加復(fù)雜[2]。
為了更準(zhǔn)確地進(jìn)行車流推算,很多學(xué)者對(duì)此進(jìn)行了研究。Liu[3]對(duì)車流編制過(guò)程中的干擾因素進(jìn)行研究,主要包括列車到達(dá)時(shí)間、分類時(shí)間、編組時(shí)間等,構(gòu)建了多目標(biāo)隨機(jī)機(jī)會(huì)約束模糊模型,采用人工智能中的啟發(fā)式方法求解。Jing[4]對(duì)車流推算模型進(jìn)行設(shè)計(jì),使用改進(jìn)蟻群算法進(jìn)行求解。Hu[5]在車流調(diào)度實(shí)際需求的基礎(chǔ)之上,結(jié)合遺傳算法和神經(jīng)網(wǎng)絡(luò)算法的混合智能算法,建立一個(gè)隨機(jī)機(jī)會(huì)約束模型解決車流推算問(wèn)題。金福才等[6]對(duì)重車的車流推算方法進(jìn)行研究,確定車流推算中關(guān)鍵要素的計(jì)算方法,在計(jì)算貨車在車站停留時(shí)間時(shí),針對(duì)不同類型車站設(shè)計(jì)了不同的計(jì)算方法。陳東等[7]研究了鐵路技術(shù)站車流接續(xù)的列車運(yùn)行調(diào)整問(wèn)題,利用分步計(jì)算、指標(biāo)評(píng)估的求解思路,建立趕流調(diào)整綜合模型,該模型對(duì)于局部范圍內(nèi)的線流匹配優(yōu)化計(jì)算做了嘗試。
傳統(tǒng)的車流推算研究重點(diǎn)是對(duì)車站級(jí)推算,主要是依據(jù)編組計(jì)劃和車流情況推算列車發(fā)車計(jì)劃,對(duì)于大規(guī)模的列車運(yùn)行推算并沒(méi)有涉及。隨著鐵路信息化建設(shè)的加快,目前鐵路網(wǎng)車輛實(shí)時(shí)狀態(tài)信息可以被探測(cè)并收集匯總到中國(guó)鐵路總公司的數(shù)據(jù)中心,使得實(shí)現(xiàn)更加宏觀的車流推算成為可能。由于鐵路上運(yùn)行的車輛數(shù)量大,車輛狀態(tài)變化快,因而車流推算計(jì)算必須及時(shí)處理,以便更好地處理數(shù)據(jù)量大、復(fù)雜的車流推算。為保證計(jì)算的時(shí)效性,最好的方法是在數(shù)據(jù)接收過(guò)程中就進(jìn)行計(jì)算處理,這種計(jì)算方式就是流計(jì)算[8-9]的處理模式。
流計(jì)算是將傳統(tǒng)的計(jì)算過(guò)程轉(zhuǎn)化為以流動(dòng)數(shù)據(jù)為基本處理對(duì)象的計(jì)算應(yīng)用,基本思想是把具體應(yīng)用分解成數(shù)據(jù)流和數(shù)據(jù)計(jì)算核心 2 級(jí)[10],數(shù)據(jù)流被視為處理的基本數(shù)據(jù)單位,各種計(jì)算可視為對(duì)整條數(shù)據(jù)流的操作。為此,提出一種基于流計(jì)算的車流推算框架模型,該框架模型用于處理來(lái)自底層的實(shí)時(shí)變化的車輛狀態(tài)信息流,同時(shí)結(jié)合微應(yīng)用架構(gòu),實(shí)現(xiàn)對(duì)車流的綜合分析、車流預(yù)測(cè)、能力預(yù)警及車流調(diào)整。
車流推算是以當(dāng)前車輛狀態(tài)推算其未來(lái)的走行狀態(tài)。車輛當(dāng)前狀態(tài)包括在站和在途 2 種,在站車輛信息是獨(dú)立的車輛信息,在途車輛信息則跟隨著列車的信息。被采集到的車輛狀態(tài)信息包括車輛裝車、車輛卸車、列車出發(fā)、列車到達(dá)等信息,這些信息都從車站采集并向數(shù)據(jù)中心傳送,這些信息匯聚成了路網(wǎng)車輛的當(dāng)前狀態(tài)信息。
根據(jù)車流推算業(yè)務(wù)處理過(guò)程的分析,按照模塊低度耦合、高度內(nèi)聚的要求,設(shè)計(jì)了數(shù)據(jù)采集、車流推算、能力預(yù)警和車流調(diào)整 4 個(gè)主要計(jì)算業(yè)務(wù)過(guò)程。
(1)數(shù)據(jù)采集應(yīng)用過(guò)程。負(fù)責(zé)對(duì)車站上報(bào)的車輛狀態(tài)信息進(jìn)行采集和預(yù)處理,根據(jù)推算要求篩選出格式和內(nèi)容都合格的推算數(shù)據(jù)。
(2)車流推算計(jì)算過(guò)程。執(zhí)行具體的推算計(jì)算任務(wù),包括走行過(guò)程推算、運(yùn)行時(shí)間推算、作業(yè)時(shí)間推算等。車流推算應(yīng)用支持推算結(jié)果存儲(chǔ)持久化,通知暴露數(shù)據(jù)接口,為能力預(yù)警、車流調(diào)整提供數(shù)據(jù)服務(wù)。
(3)能力預(yù)警過(guò)程。包括分界口車流能力預(yù)警、卸車站車流能力預(yù)警、限制區(qū)段車流能力預(yù)警等。首先對(duì)困難車站或區(qū)段設(shè)定處理車流能力值,如果推算結(jié)果超過(guò)這個(gè)能力范圍,就進(jìn)行相應(yīng)的能力預(yù)警。同時(shí)也設(shè)計(jì)暴露數(shù)據(jù)接口,為車流調(diào)整等應(yīng)用提供數(shù)據(jù)服務(wù)。
(4)車流調(diào)整過(guò)程。包含分界口車流調(diào)整、卸車站車流調(diào)整及貨運(yùn)計(jì)劃調(diào)整等。針對(duì)不同類型的超能力情況設(shè)計(jì)相應(yīng)的自動(dòng)車流調(diào)整過(guò)程,給出車流調(diào)整的相關(guān)建議,供調(diào)度員決策。
為解決車流推算過(guò)程的大量計(jì)算瓶頸問(wèn)題,避免傳統(tǒng)構(gòu)架使計(jì)算割裂的弊端,設(shè)計(jì)了基于微服務(wù)的流計(jì)算處理架構(gòu)。使用微服務(wù)的目的是對(duì)原應(yīng)用進(jìn)行有效的拆分,使得計(jì)算應(yīng)用可以更方便地實(shí)現(xiàn)開發(fā)和部署。微服務(wù)可以在自己的程序中運(yùn)行,不需要像傳統(tǒng)服務(wù)那樣成為一種獨(dú)立的功能或者獨(dú)立的資源,通過(guò)靈活組裝微服務(wù),能夠滿足大量數(shù)據(jù)計(jì)算的需要。
鐵路網(wǎng)上的車輛狀態(tài)處于實(shí)時(shí)變化之中,每個(gè)表征車輛狀態(tài)更新的數(shù)據(jù)都需要快速進(jìn)行計(jì)算以保證計(jì)算結(jié)果的有效性,同時(shí)需要為其他應(yīng)用程序提供訪問(wèn)最新狀態(tài)后計(jì)算的結(jié)果。這種業(yè)務(wù)需求就要求車流數(shù)據(jù)需要在短時(shí)間內(nèi)傳遞給推算系統(tǒng)進(jìn)行處理,推算完成后也要將處理結(jié)果快速向后傳遞,并最終提交到數(shù)據(jù)庫(kù)進(jìn)行實(shí)體化存儲(chǔ),減少其他應(yīng)用在使用推算結(jié)果數(shù)據(jù)時(shí)所產(chǎn)生的延遲。根據(jù)上小節(jié)所述的車流推算應(yīng)用模型,設(shè)計(jì)車流推算流計(jì)算架構(gòu)如圖1 所示。
整體的流計(jì)算過(guò)程需要處理 3 個(gè)來(lái)源的數(shù)據(jù):①來(lái)自服務(wù)總線的計(jì)算任務(wù),即被分配的工作任務(wù);②通過(guò)數(shù)據(jù)總線,從數(shù)據(jù)庫(kù)集群調(diào)取的參數(shù)數(shù)據(jù);③來(lái)自車站的車輛報(bào)告數(shù)據(jù),它是流數(shù)據(jù)的主要輸入。
流計(jì)算過(guò)程中產(chǎn)生的中間數(shù)據(jù)結(jié)果有 2 種處理方法:①返回服務(wù)總線,繼續(xù)實(shí)時(shí)計(jì)算。流計(jì)算集群響應(yīng)服務(wù)總線計(jì)算任務(wù),經(jīng)過(guò)流計(jì)算后的結(jié)果返回到服務(wù)總線,支持車流推算應(yīng)用的實(shí)時(shí)計(jì)算。②存入數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)持久化。流計(jì)算集群對(duì)鐵路局集團(tuán)公司報(bào)表數(shù)據(jù)接受和處理,通過(guò)服務(wù)總線支持?jǐn)?shù)據(jù)采集應(yīng)用的數(shù)據(jù)需求;通過(guò)數(shù)據(jù)總線存入對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)的持久化。同時(shí),通過(guò)服務(wù)總線和數(shù)據(jù)總線,計(jì)算應(yīng)用能夠與數(shù)據(jù)庫(kù)群進(jìn)行數(shù)據(jù)交互的操作,如實(shí)現(xiàn)歷史數(shù)據(jù)查詢、歷史參數(shù)查詢等操作。
在流處理框架下,推算作業(yè)將被分為數(shù)據(jù)源單元和處理單元,車流推算應(yīng)用部署如圖2 所示。
車站上報(bào)的車輛報(bào)告數(shù)據(jù)全部放入中國(guó)鐵路總公司一個(gè)專門的信息隊(duì)列 (MQ)中,流計(jì)算采用并行計(jì)算工具 STORM 中的噴嘴控件 (Spout) 接收這些車流報(bào)告。Spout 控件擔(dān)任了計(jì)算數(shù)據(jù)協(xié)調(diào)處理的角色,發(fā)現(xiàn)新報(bào)告后先簡(jiǎn)要解析報(bào)告,判斷報(bào)告的類型,然后根據(jù)類型提交給相應(yīng)的計(jì)算控件 (Bolt)去處理。噴嘴控件不參加具體計(jì)算,只是對(duì)數(shù)據(jù)進(jìn)行分類后直接傳遞給負(fù)責(zé)計(jì)算的 Bolt 控件,因而其處理效率非常高。從實(shí)際應(yīng)用效果分析,MQ 隊(duì)列的深度通常維持在 1 個(gè)消息,即其處理能力遠(yuǎn)大于MQ 消息的接收效率。Bolt 控件擔(dān)任了具體計(jì)算作業(yè)的角色,按照微服務(wù)的架構(gòu)設(shè)計(jì),此處將一個(gè)復(fù)雜的推算分解成多層 Bolt 來(lái)計(jì)算,每層 Bolt 的計(jì)算簡(jiǎn)單快捷。第一層 Bolt 針對(duì)不同類型的報(bào)告有不同的解析方式,有些也會(huì)經(jīng)過(guò)多個(gè) Bolt 進(jìn)行處理。這層 Bolt 處理速度要很快,然后都匯聚到下一個(gè)路徑計(jì)算調(diào)用的 Bolt,這個(gè) Bolt 主要是負(fù)責(zé)用解析后的報(bào)告數(shù)據(jù)進(jìn)行路徑計(jì)算。路徑計(jì)算調(diào)用完成之后,計(jì)算結(jié)果繼續(xù)傳遞給后續(xù)的 Bolt 進(jìn)行運(yùn)行時(shí)間計(jì)算,計(jì)算完成后提交給數(shù)據(jù)庫(kù)管理系統(tǒng) Oracle 的遠(yuǎn)程存儲(chǔ)服務(wù),將推算結(jié)果數(shù)據(jù)存儲(chǔ)到內(nèi)存中,同時(shí)也將自己持久化到 Oracle 數(shù)據(jù)庫(kù)中。
圖1 車流推算流計(jì)算架構(gòu)Fig.1 Calculation architecture of train fl ow estimation
圖2 車流推算應(yīng)用部署Fig.2 Application deployment of train fl ow estimation
Bolt 計(jì)算不僅速度快,而且能夠配置,可以根據(jù)計(jì)算量的大小設(shè)定 Bolt 的上限值。在計(jì)算時(shí)能夠根據(jù)需要計(jì)算數(shù)據(jù)量的大小自動(dòng)調(diào)整參加計(jì)算的Bolt 數(shù)量,以滿足快速計(jì)算的需要。使用這種微應(yīng)用的流計(jì)算架構(gòu)方式使得數(shù)據(jù)在傳送的過(guò)程中就被計(jì)算,計(jì)算結(jié)果在內(nèi)存得到快速處理,外部應(yīng)用直接在內(nèi)存中讀取相應(yīng)的結(jié)果,這種架構(gòu)極大提高了數(shù)據(jù)處理效率,也有效減小數(shù)據(jù)更新的延遲。
車流推算由于計(jì)算復(fù)雜,難以用計(jì)算機(jī)實(shí)現(xiàn)。通過(guò)將計(jì)算過(guò)程與流計(jì)算架構(gòu)相結(jié)合,提出一種基于流計(jì)算的車流推算架構(gòu)模型,這種架構(gòu)使得數(shù)據(jù)計(jì)算和處理的效率大大提升,可以真正實(shí)現(xiàn)宏觀級(jí)的車流推算。該計(jì)算模型將一個(gè)整體計(jì)算分成若干個(gè)小的計(jì)算單元,利用多個(gè)計(jì)算節(jié)點(diǎn)分別完成各自運(yùn)算,計(jì)算能力得到大幅提升,使車流推算可以更好地為運(yùn)輸計(jì)劃調(diào)整提供數(shù)據(jù)服務(wù)。