劉 雋,李士祥,朱艷軍
(中國鐵道科學研究院集團有限公司通信信號研究所,北京 100081)
調(diào)度集中是調(diào)度中心(調(diào)度員)對某一區(qū)段內(nèi)的信號設備進行集中控制、對列車運行直接指揮、管理的技術裝備[1]。中國高速鐵路調(diào)度集中系統(tǒng)(簡稱“CTC系統(tǒng)”)是綜合了鐵路信號、通信、運輸?shù)葘I(yè)技術和計算機、網(wǎng)絡等現(xiàn)代信息技術,采用智能化分散自律設計原則,以列車運行調(diào)整計劃為中心,以車站運行線路信息與相關管理細則為約束條件,兼顧列車與調(diào)車作業(yè)流程,高度自動化、智能化的調(diào)度指揮系統(tǒng)[2-4]。
CTC系統(tǒng)核心的分散自律設計原則是指將整個系統(tǒng)的目標和任務事先按一定的方式分配給各子系統(tǒng),然后由子系統(tǒng)間通過數(shù)據(jù)通信進行信息交換和相互協(xié)調(diào),獨立完成目標或任務,實現(xiàn)了設備分散,功能分散,風險分散,同時提高了系統(tǒng)的可擴展性,便于對系統(tǒng)進行重構(gòu),實時地動態(tài)分配與管理系統(tǒng),以適應不同的線路和環(huán)境要求[5-6]。
CTC系統(tǒng)屬于企業(yè)級綜合性業(yè)務系統(tǒng),包括信息管理和實時控制兩部分,即“管控結(jié)合”類型的計算機應用系統(tǒng)[7]。CTC中心子系統(tǒng)包括數(shù)據(jù)庫服務器、應用服務器、接口服務器等服務器設備;調(diào)度員工作站、助理調(diào)度員工作站、綜合維修工作站、計劃員工作站等用戶終端設備。CTC車站子系統(tǒng)包括車站自律機、車站服務器、車務終端、電務維護終端等設備[8]。終端、服務器上運行了相應的軟件,眾多軟件、硬件分工協(xié)作,共同構(gòu)成了CTC系統(tǒng)網(wǎng)絡。為確保能夠7×24 h不間斷運行,CTC系統(tǒng)在主要設備上采用了雙機熱備結(jié)構(gòu),即每一種主要終端或服務器都由2臺計算機組成,且軟、硬件的配置保持一致,它們以主、備用機的形式作為一個整體對外提供計算服務[9]。同時,CTC系統(tǒng)通過多種接口形式與其他相關系統(tǒng)進行調(diào)度信息的實時共享。
從上述功能與結(jié)構(gòu)上看,無論終端還是服務器軟件,都要實現(xiàn)通信、雙機同步、主備裁決等基本功能。為降低設計和開發(fā)工作量,優(yōu)化軟件架構(gòu),提高執(zhí)行效率,實現(xiàn)代碼復用,CTC系統(tǒng)采用了企業(yè)級應用系統(tǒng)常用的分層架構(gòu)。分層架構(gòu)(Layered Architecture)是指將應用邏輯分解為不同的層。每一層中的組件處于一個特定的抽象層次上,在本層內(nèi)保持內(nèi)聚性,對其下各層保持松耦合性。分層架構(gòu)體現(xiàn)了“職責分離”的思想,對相應的職責進行分組,有助于提高系統(tǒng)的可理解性和可維護性[10-12]。
CTC系統(tǒng)分層架構(gòu)的底層是分布式的“基礎服務平臺”,在CTC系統(tǒng)的每一個終端、服務器上都部署基礎服務平臺的節(jié)點軟件,在基礎服務平臺之上構(gòu)建終端和服務器應用軟件;由基礎服務平臺實現(xiàn)通信、雙機同步、主備裁決等基本功能,并以服務的形式提供給上層的應用軟件;應用軟件在基礎服務平臺的支持下,專注于進行調(diào)度業(yè)務邏輯的處理及調(diào)度業(yè)務信息的集中展現(xiàn)。圖1表示了CTC系統(tǒng)分層架構(gòu)中軟件在各層中的部署情況。
圖1 CTC系統(tǒng)的分層架構(gòu)
多智能體(multi-agent)技術主要用于系統(tǒng)的控制決策,其目標是讓若干個具備簡單智能卻便于管理控制的系統(tǒng)能通過相互協(xié)作實現(xiàn)復雜智能,使得在降低系統(tǒng)建模復雜性的同時,提高魯棒性、可靠性、靈活性。因此,幾乎所有涉及智能推理、規(guī)劃決策、協(xié)同控制等領域的相關問題均可以通過多智能體技術來處理[13]。近年來,多智能體被引入到列車運行控制研究領域,例如,文獻[14-17]將多智能體技術應用于列控系統(tǒng)的建模與仿真研究中,文獻[18]關注多智能體技術在列車追蹤運行方面的運用,文獻[19]采用多智能體技術設計聯(lián)鎖系統(tǒng)的框架,文獻[20]描述了多智能體技術在客運專線運營調(diào)度系統(tǒng)上的應用。但未見將多智能體技術應用在CTC系統(tǒng)設計方面的相關文獻。
因此,在分析CTC系統(tǒng)對基礎服務需求的基礎上,提出基于多智能體系統(tǒng)架構(gòu)的基礎服務平臺設計方案,將智能體方法和面向?qū)ο蠓治雠c設計方法相結(jié)合,進行系統(tǒng)分析與建模,通過軟件設計模式、多線程等技術確?;A服務平臺能夠滿足可擴展性、可靠性等方面的要求。
由于CTC系統(tǒng)中的各類應用軟件之間,CTC系統(tǒng)與其他系統(tǒng)之間,以及雙機結(jié)構(gòu)中的主備機之間,都需進行大量、實時的信息交換,基礎服務平臺首要的功能就是提供多種類型的通信服務[21]。歸納起來,通信類型以及應用范圍見表1。
表1 通信模式匯總
表1中,“本機通信”是應用軟件與基礎服務平臺之間的通信;“內(nèi)網(wǎng)通信”是CTC網(wǎng)絡內(nèi)各終端、服務器之間的通信;“外網(wǎng)通信”是CTC與聯(lián)鎖、列控、TDCS等系統(tǒng)之間的通信;“雙機通信”是雙機結(jié)構(gòu)中的主備機之間的通信。由于上層的不同類型的應用軟件對通信的需求不盡相同,作為通信服務提供者的基礎服務平臺要能夠靈活、便捷地滿足應用軟件的需求。
由于采用雙機熱備結(jié)構(gòu),要求運行在上層的應用軟件處于主用或者備用狀態(tài)時,內(nèi)部執(zhí)行邏輯相同,界面內(nèi)容一致,但用戶操作權(quán)限不同,對外輸出數(shù)據(jù)有別。應用軟件是否作以主用狀態(tài)運行需底層平臺向它們發(fā)出主備狀態(tài)命令,因此,基礎服務平臺應具備對雙機系統(tǒng)的主備狀態(tài)自動裁決功能。
主備裁決的前提是感知每臺計算機當前的工作狀態(tài),這就要求基礎服務平臺能夠?qū)τ嬎銠C的軟、硬件運行狀態(tài)進行實時的監(jiān)測、匯總,并生成統(tǒng)一的狀態(tài)報告。
基礎服務平臺提供的上述各項功能都不是獨立存在的,相互之間具有較密切的關聯(lián),例如,通信服務狀態(tài)需要被納入狀態(tài)監(jiān)測的范圍,主備裁決需用到單播通信服務,而狀態(tài)報告也是主備裁決必不可少的輸入信息。由此可見,如何將上述功能進行有機的集成也是對基礎服務平臺提出的一項重要需求。
經(jīng)過對需求的統(tǒng)一整理與分析,得到了基礎服務平臺的各功能模塊之間的結(jié)構(gòu)關系,如圖2所示。
圖2 功能模塊關系
基礎服務平臺的每個節(jié)點軟件都應具備上述結(jié)構(gòu),且在其宿主機上獨立運行,其中各模塊負責內(nèi)容如下所述。
狀態(tài)監(jiān)測模塊負責對宿主機的軟、硬件運行狀態(tài)進行統(tǒng)一監(jiān)測;
狀態(tài)報告模塊負責依據(jù)狀態(tài)監(jiān)測結(jié)果生成狀態(tài)報告,并提供給主備裁決模塊;
主備裁決模塊負責根據(jù)本機狀態(tài)報告、對等機狀態(tài)報告等信息進行綜合運算,裁決宿主機的主備狀態(tài);
通信管理模塊負責建立、管理通信通道,接收、發(fā)送信息;
配置管理模塊負責依據(jù)平臺節(jié)點軟件的配置文件內(nèi)容,在啟動階段對其他模塊的啟動流程、運行參數(shù)統(tǒng)一管理。因此,該模塊以控制流的方式與其他模塊建立聯(lián)系。
從需求最終成為實用的產(chǎn)品,需經(jīng)歷分析、設計、開發(fā)、測試等一系列密切相關的過程,這其中要解決的關鍵問題是:首先,要在設計階段確定基礎服務平臺的總體架構(gòu),架構(gòu)決定了平臺的執(zhí)行效率、安全性以及擴展性,是平臺能否成功的關鍵;其次,要在開發(fā)階段明確采用哪些具體的軟件開發(fā)技術來實現(xiàn)平臺中的各個功能模塊,這些技術決定了平臺對外提供服務的質(zhì)量。
依照分散自律設計原則,通過分析雙機結(jié)構(gòu)中基礎服務平臺兩個節(jié)點軟件之間,以及每個節(jié)點軟件與其他節(jié)點軟件之間的關系,可以確定節(jié)點軟件應具備以下特點。
自主性:在沒有外界環(huán)境或其他節(jié)點軟件干預的情況下,平臺中的每個節(jié)點軟件都能夠自主地完成其主要功能,例如,配置管理、通信、狀態(tài)監(jiān)測,并且能夠控制其內(nèi)部的狀態(tài)。
社會性:節(jié)點軟件能夠主動和其他節(jié)點軟件交互,以實現(xiàn)其既定的目標,例如,通信、狀態(tài)報告。
被動響應能力:節(jié)點軟件能夠感知周圍環(huán)境的變化,并且能夠依據(jù)一定的規(guī)則產(chǎn)生實時響應,例如,狀態(tài)監(jiān)測、狀態(tài)報告。
主動響應能力:為實現(xiàn)自身目標,節(jié)點軟件能夠主動執(zhí)行一些操作,例如,主備裁決[18]。
經(jīng)分析所得的結(jié)論是,基礎服務平臺節(jié)點軟件的上述特點符合智能體的定義,即“智能體(Agent)是處于某個特定的環(huán)境下的計算機系統(tǒng),該系統(tǒng)可根據(jù)自身對環(huán)境的感知,按照已有的知識或通過自主學習,并與其他智能體進行溝通協(xié)作,在其所處的環(huán)境自主地完成設定的目標[13]。因此,完全可以采用智能體方法進行節(jié)點軟件的設計。
利用智能體技術實現(xiàn)基礎服務平臺的首要步驟是確定節(jié)點軟件與智能體之間的映射關系。在面向?qū)ο蠓治雠c設計方法(Object Oriented Analysis & Design)中,對象(Object)被定義為一個計算實體,封裝了一些狀態(tài),可以在這些狀態(tài)下執(zhí)行某些動作和方法,且可以通過信息進行通信,所以對象和智能體有許多相似之處。同時,面向?qū)ο蠓椒ㄖ袕V泛使用的繼承、多態(tài)、泛化、組合等技術,可以有效提高系統(tǒng)設計與實現(xiàn)的效率和可靠性[20]。因此,在基礎服務平臺的分析和設計過程中,采用了面向?qū)ο笈c智能體相結(jié)合的設計方法,并完成了節(jié)點智能體的建模,即依照智能體元素(包括感知、動作、目標、計劃、事件、信念)規(guī)劃節(jié)點軟件功能模塊,以面向?qū)ο蟮腢ML方法表達功能模塊的關系模型。智能體元素與功能模塊的對應關系如表2所示。
表2 智能體元素與功能模塊對應關系
圖3是節(jié)點智能體UML用例。圖3中定義了節(jié)點智能體中各個功能模塊之間實際的相互關系,其中,uses代表調(diào)用關系,extends代表擴展關系,并用箭頭表明了方向。
圖3 節(jié)點智能體用例
與圖2相比,圖3中增加了一個“知識庫”功能模塊,智能體的其他功能模塊都需要通過調(diào)用知識庫來完成自身的功能。由于智能體具有自主性、社會性、主被動響應等屬性,因而需要內(nèi)建知識庫,在運行過程中通過知識庫有計劃指導動作的執(zhí)行,實現(xiàn)既定的自律目標。目前,知識庫內(nèi)主要儲備了雙機主備裁決原則、信息流管理規(guī)則、信息過濾規(guī)則、監(jiān)測點特征信息、狀態(tài)報告算法等知識。節(jié)點智能體所執(zhí)行的任務不同,因此,其內(nèi)部知識庫內(nèi)容在整個平臺中是獨一無二的,也就是說平臺中的每個智能體都是唯一的。每一個智能體既要實現(xiàn)自身的服務目標,又要通過與其他智能體的交互,共同實現(xiàn)一個總體目標,這樣它們就以多智能體系統(tǒng)架構(gòu)方式共同構(gòu)建了一個完整的分布式基礎服務平臺。
由于基礎服務平臺是由多個節(jié)點智能體組成,整個平臺就構(gòu)成了一個多智能體系統(tǒng)。多智能體系統(tǒng)是指:可以相互協(xié)作的多個簡單智能體為完成某些全局或者局部目標,使用相關技術組成的分布式智能系統(tǒng)[13]。多智能體系統(tǒng)的研究方法實際是用模擬人類社會系統(tǒng)的運作機制,采用多個智能體進行協(xié)作,通過任務分解和任務協(xié)調(diào)來提高整個系統(tǒng)的能力。同時,通過多智能體之間的合作還可以克服單個智能體知識不完全、處理信息不確定等缺點,因此,多智能體系統(tǒng)是適合于基礎服務平臺這類分布式系統(tǒng)的架構(gòu)方案。
在多智能體系統(tǒng)中,由于未設置能夠進行全局控制的角色,數(shù)據(jù)是分散存儲在各個智能體中的,每個智能體內(nèi)部的運算也是異步進行的,因而,每個智能體所具備的能力和掌握的信息都是不完整的。為達到既定的總體目標,多智能體系統(tǒng)中的每一智能體個體,除前面提到的自主性、社會性、響應能力,還應該具備以下特點。
面向目標性:每個智能體都有一個具體的目標,確保為CTC系統(tǒng)提供可靠、高效的服務。
協(xié)作性:一個智能體所需實現(xiàn)的目標只是總體目標的組成部分。對于不同的智能體,它們的目標之間有可能存在沖突,例如,雙機結(jié)構(gòu)中的A、B機都要成為主用機。這就需要智能體之間通過協(xié)商的方式來共同實現(xiàn)系統(tǒng)的總體目標。
綜合以上分析,用圖示方法給出基礎服務平臺中各類智能體之間關系與交互內(nèi)容的架構(gòu)方案,如圖4所示。
圖4 基礎服務平臺節(jié)點智能體之間的交互關系方案
圖4中,宿主機-A、宿主機-B以及在其中運行的應用軟件、節(jié)點智能體軟件共同構(gòu)成了CTC系統(tǒng)中的一套雙機主備結(jié)構(gòu)。圖示內(nèi)容展現(xiàn)了宿主機內(nèi)節(jié)點智能體與應用軟件之間、雙機節(jié)點智能體之間,以及節(jié)點智能體與平臺中其他節(jié)點智能體之間的關系和主要的信息流內(nèi)容,箭頭方向代表了信息流向,這是設計智能體模型結(jié)構(gòu)、通信機制、交互原語、協(xié)商機制的基本依據(jù)。下面根據(jù)信息流編號進行說明。
(1)8號信息流表示節(jié)點智能體發(fā)送給應用軟件的主備狀態(tài)命令。
(2)9號信息流是應用軟件發(fā)出的心跳信息。
(3)10號信息流是應用軟件之間發(fā)送和接收的調(diào)度業(yè)務數(shù)據(jù)。
(4)11號信息流是節(jié)點智能體從宿主機獲得的運行狀態(tài)信息。
(5)12號信息流是節(jié)點智能體轉(zhuǎn)發(fā)的調(diào)度業(yè)務數(shù)據(jù)。
(6)13號信息流是節(jié)點智能體發(fā)出的狀態(tài)報告信息。
(7)14號信息流是來自其他節(jié)點智能體的狀態(tài)報告信息。
(8)15號信息流是雙機間的心跳信息。
(9)16號信息流是雙機間的同步數(shù)據(jù)。
除主要的調(diào)度業(yè)務數(shù)據(jù)、雙機同步數(shù)據(jù),智能體與應用軟件之間、雙機智能體之間、平臺中的各節(jié)點智能體之間通過命令、心跳、狀態(tài)報告等信息進行實時、廣泛的通信聯(lián)絡,以共同協(xié)商、協(xié)作的方式,遵從智能體知識庫中內(nèi)建的規(guī)則與算法,實現(xiàn)基礎服務平臺對外提供服務的總體目標。
基礎服務平臺的多智能體架構(gòu)設計屬于系統(tǒng)的宏觀方面,而智能體功能模塊的實現(xiàn)則是具體的微觀部分。
在智能體主要功能模塊的實現(xiàn)過程中,軟件設計模式(Software Design Pattern)、多線程(Multithreading)等軟件開發(fā)技術得到了廣泛的應用,并且在軟件擴展性、結(jié)構(gòu)穩(wěn)定性,以及代碼執(zhí)行效率等方面起到了關鍵性的作用。
軟件設計模式是為解決軟件開發(fā)領域中多種重復出現(xiàn)的經(jīng)典問題而提出的解決方案,通過對面向?qū)ο缶幊探?jīng)驗的總結(jié),體現(xiàn)了軟件設計技巧中最重要的方法和原則。不斷變化的需求是軟件設計需要不斷面對的問題,其解決之道就是封裝變化。設計模式通過尋找軟件中可能存在的“變化”,利用抽象的方法對這些變化進行封裝。由于抽象不涉及具體的實現(xiàn),代表了一種無限的可能性,使得軟件系統(tǒng)能夠以擴展的方式滿足未來的需求變化。
工廠方法(Factory Method)模式通過定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。在配置管理模塊中,從配置文件中讀取信息,利用工廠方法依次將狀態(tài)監(jiān)測、狀態(tài)報告、主備裁決等模塊啟動執(zhí)行;在通信管理模塊中,具體的TCP、UDP、SerialPort通信類的實例化操作也是通過工廠方法實現(xiàn)的。
觀察者(Observer)模式定義對象的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生變化時,所有依賴于它的對象都得到通知并自動更新。當以太網(wǎng)卡、串口、應用軟件、通信通道等被監(jiān)測對象的運行狀態(tài)發(fā)生變化時,狀態(tài)監(jiān)測模塊是以觀察者模式獲得的狀態(tài)變化通知;在通信管理模塊中,當通信對象收到了有效信息,也是以觀察者模式給具體的信息處理對象發(fā)送通知。
狀態(tài)(State)模式允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為,對象看起來似乎修改了它的類。主備裁決模塊完全以狀態(tài)模式構(gòu)建,通過不間斷從狀態(tài)報告模塊、其他節(jié)點智能體獲得信息,對自身所處的環(huán)境進行實時判斷,并確定本節(jié)點智能體當前應該進入的狀態(tài)。
多線程是軟件在運行過程中并發(fā)執(zhí)行多個線程的技術。該技術充分利用了計算機的計算資源,尤其是對中央處理器的時間片使用率進行了優(yōu)化,因而,能夠提高軟件的整體運行效率,同時也增強了軟件的靈活性。
從表1可以看出,一個智能體的通信管理模塊要應對來自不同通信方向、不同通信方式的信息。為滿足大數(shù)據(jù)量、實時處理的通信請求,節(jié)點智能體中的每個通信通道都分配了至少一個獨立的線程,負責執(zhí)行數(shù)據(jù)接收與發(fā)送任務,同時還有多個后臺線程負責信息轉(zhuǎn)發(fā)、過濾,以及通信對象狀態(tài)監(jiān)視。
上述兩項技術在平臺的開發(fā)過程中并不總是獨立運用的,例如,在主備裁決模塊中,通過設計模式與多線程的融合,最終實現(xiàn)了多線程狀態(tài)模式:設置一個獨立的監(jiān)視線程,負責監(jiān)視當前狀態(tài)的執(zhí)行情況以及管理狀態(tài)之間的切換過程;設置一個狀態(tài)執(zhí)行線程,在監(jiān)視線程的控制下負責執(zhí)行具體的當前狀態(tài)運算代碼。不同類型技術的綜合運用,加強了節(jié)點智能體及整個基礎服務平臺的執(zhí)行效率與穩(wěn)定性。
基礎服務平臺目前已應用于“高鐵信號綜合仿真測試系統(tǒng)”(簡稱“測試系統(tǒng)”)中,該系統(tǒng)是涵蓋聯(lián)鎖、列控、調(diào)度集中、無線閉塞中心等關鍵信號安全設備的虛實結(jié)合的綜合測試平臺,其設計目標是加強系統(tǒng)間的試驗驗證,優(yōu)化現(xiàn)場驗證方案,降低施工安全風險。測試系統(tǒng)按照功能可從下到上依次分為:半真實半仿真系統(tǒng)層、真實設備適配層、測試驅(qū)動管理層。其中,實物設備包括聯(lián)鎖、列控中心、TSRS、CTC、RBC、ATP車載設備、安全數(shù)據(jù)網(wǎng)和GSM-R網(wǎng)絡設備?;A服務平臺即位于CTC系統(tǒng)中,實現(xiàn)了調(diào)度集中模式下的分散自律控制。測試系統(tǒng)的結(jié)構(gòu)如圖5所示。
圖5 高鐵信號綜合仿真測試系統(tǒng)結(jié)構(gòu)
高速鐵路調(diào)度指揮是涉及多種業(yè)務、多個層次、多項因素,復雜的實時運輸資源調(diào)度工作,為確保高速鐵路調(diào)度集中系統(tǒng)能夠充分發(fā)揮作用,提高調(diào)度指揮效能,將分散自律原則的理論研究與具體運用相結(jié)合,首次提出了基于多智能體架構(gòu)的基礎服務平臺方案。其目的在于充分利用多智能體技術解決分布式問題,尤其是其在交通控制方面具有的優(yōu)勢,提高調(diào)度指揮的智能化水平,填補了在CTC設計與實現(xiàn)領域應用多智能體技術的空白。由于全面采用智能體設計思想,結(jié)合面向?qū)ο蠓治雠c設計方法,以及設計模式、多線程等具體的軟件開發(fā)技術,基礎服務平臺的開發(fā)效率得到了有效提升,平臺的可用性和可靠性也得到了充分保證。本方案已在高速信號綜合仿真測試系統(tǒng)中應用,并得到測試與驗證,將多智能體架構(gòu)應用于調(diào)度指揮系統(tǒng)的構(gòu)建,并與其他軟件開發(fā)技術綜合運用,在實踐中是切實可行的,同時為未來進行智能化調(diào)度系統(tǒng)的設計與開發(fā)積累了寶貴的經(jīng)驗。