譚冠華,徐田華,王海峰,張 路,呂繼東
(1. 北京交通大學(xué)軌道交通控制與安全國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100044;2. 北京交通大學(xué)軌道交通運(yùn)行控制系統(tǒng)國(guó)家工程研究中心,北京 100044)
列控工程數(shù)據(jù)[1](以下簡(jiǎn)稱(chēng)列控?cái)?shù)據(jù))是列車(chē)移動(dòng)授權(quán)、軌道電路編碼化、應(yīng)答器報(bào)文編制等功能的基礎(chǔ)數(shù)據(jù),是列車(chē)運(yùn)行控制系統(tǒng)各功能實(shí)現(xiàn)的底層數(shù)據(jù),保證其正確性是列車(chē)運(yùn)行控制系統(tǒng)安全運(yùn)行的根本保障。為保證列車(chē)運(yùn)行控制系統(tǒng)安全運(yùn)行,需要對(duì)列控?cái)?shù)據(jù)進(jìn)行正確性驗(yàn)證。
傳統(tǒng)數(shù)據(jù)驗(yàn)證方式是人工校驗(yàn)。人工校驗(yàn)存在如下缺點(diǎn):一是數(shù)據(jù)類(lèi)型多、數(shù)量大,任務(wù)周期短,校驗(yàn)工作難度大;二是環(huán)境優(yōu)化、勘測(cè)誤差修正、線路修改等都需要對(duì)數(shù)據(jù)進(jìn)行修改,整個(gè)線路生產(chǎn)周期存在頻繁變更,人工校驗(yàn)任務(wù)繁重;三是人工審核存在人為因素帶來(lái)的審核失誤、遺漏問(wèn)題??梢?jiàn),探索一種高可靠、高準(zhǔn)確性的驗(yàn)證方法,對(duì)于列車(chē)運(yùn)行控制系統(tǒng)具有重要的現(xiàn)實(shí)意義。
列控?cái)?shù)據(jù)驗(yàn)證存在3個(gè)方面的問(wèn)題:一是列控?cái)?shù)據(jù)的處理方法,根據(jù)鐵總運(yùn)〔2014〕246號(hào)文件[2]規(guī)定,包含數(shù)據(jù)表格16個(gè),數(shù)據(jù)屬性繁多,單表數(shù)據(jù)之間以及多表數(shù)據(jù)之間存在關(guān)聯(lián)關(guān)系,期望建立數(shù)據(jù)的標(biāo)準(zhǔn)化格式,合理處理數(shù)據(jù)關(guān)系。二是列控?cái)?shù)據(jù)的規(guī)則提取,鐵路技術(shù)標(biāo)準(zhǔn)、規(guī)范是以文本語(yǔ)言進(jìn)行描述,在文義理解上易存在差異,也沒(méi)有明確指出數(shù)據(jù)間的關(guān)聯(lián)關(guān)系,僅能檢查工程數(shù)據(jù)的格式、類(lèi)型等錯(cuò)誤,對(duì)虛假數(shù)據(jù)巧合、數(shù)據(jù)間邏輯關(guān)聯(lián)關(guān)系方面,存在安全隱患,數(shù)據(jù)驗(yàn)證的充分性和完備性不足。如何發(fā)現(xiàn)數(shù)據(jù)之間的隱含關(guān)系,提取出充分、完備的驗(yàn)證規(guī)則,是數(shù)據(jù)驗(yàn)證的難點(diǎn)之一。三是對(duì)于數(shù)據(jù)規(guī)則進(jìn)行驗(yàn)證模型構(gòu)建,實(shí)現(xiàn)快速、高效、正確的自動(dòng)化驗(yàn)證。
對(duì)于軌道交通領(lǐng)域,已有部分學(xué)者探索了一些數(shù)據(jù)驗(yàn)證方法。文獻(xiàn)[3]把需要驗(yàn)證的鐵路系統(tǒng)數(shù)據(jù)利用B-language 把數(shù)據(jù)需求進(jìn)行形式化建模,并利用OVADO 對(duì)模型進(jìn)行測(cè)試;文獻(xiàn)[4]利用Atelier B 對(duì)鐵路數(shù)據(jù)進(jìn)行驗(yàn)證;文獻(xiàn)[5]通過(guò)對(duì)聯(lián)鎖數(shù)據(jù)建立各類(lèi)形式化模型進(jìn)行數(shù)據(jù)驗(yàn)證。上述驗(yàn)證方法的核心是B-Method,其理論基礎(chǔ)是數(shù)據(jù)集合和數(shù)據(jù)映射,在數(shù)據(jù)表示和數(shù)據(jù)處理上能力較弱,因此對(duì)于大數(shù)據(jù)集,其驗(yàn)證過(guò)程中易存在狀態(tài)爆炸問(wèn)題。文獻(xiàn)[6]提出了基于XML的XSLT,對(duì)列車(chē)運(yùn)行控制系統(tǒng)數(shù)據(jù)進(jìn)行驗(yàn)證,其驗(yàn)證方法是建立標(biāo)準(zhǔn)、規(guī)范化的數(shù)據(jù)約束,驗(yàn)證數(shù)據(jù)是否滿足這些約束條件。文獻(xiàn)[7]提出了基于規(guī)則的數(shù)據(jù)驗(yàn)證方法,但其驗(yàn)證規(guī)則主要是數(shù)值驗(yàn)證規(guī)則,對(duì)于大量的文本數(shù)據(jù)無(wú)法進(jìn)行驗(yàn)證。
針對(duì)列控?cái)?shù)據(jù)存儲(chǔ)結(jié)構(gòu),本文提出基于XML的數(shù)據(jù)標(biāo)準(zhǔn)化格式。該存儲(chǔ)結(jié)構(gòu),可蘊(yùn)含數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,易于數(shù)據(jù)交互。多表文件到單一文件的統(tǒng)一,易于實(shí)現(xiàn)數(shù)據(jù)修改,解決列控?cái)?shù)據(jù)頻繁變更問(wèn)題。針對(duì)列控?cái)?shù)據(jù)驗(yàn)證,本文提出一種基于Prolog的列控?cái)?shù)據(jù)驗(yàn)證方法。Prolog是一種主要運(yùn)用于自然語(yǔ)言、人工智能等領(lǐng)域[8]的邏輯編程語(yǔ)言,建立在邏輯學(xué)基礎(chǔ)上,具有高效的自然語(yǔ)言描述方式,可以簡(jiǎn)潔方便地描述驗(yàn)證規(guī)則。其強(qiáng)大的遞歸能力和關(guān)系數(shù)據(jù)庫(kù)原理上的推理機(jī)制,提高了數(shù)據(jù)驗(yàn)證的效率。同時(shí),Prolog也是一種形式化表達(dá),具有嚴(yán)謹(jǐn)?shù)谋硎痉绞?,可確保數(shù)據(jù)驗(yàn)證的準(zhǔn)確性。本文綜合考慮數(shù)據(jù)驗(yàn)證各類(lèi)問(wèn)題,對(duì)武廣線的工程數(shù)據(jù)進(jìn)行驗(yàn)證結(jié)果分析。
列控工程數(shù)據(jù)是列車(chē)運(yùn)行控制系統(tǒng)各設(shè)備的參數(shù)化實(shí)現(xiàn)的數(shù)據(jù)依據(jù),主要包括:車(chē)站信息表、線路坡度表、線路里程斷鏈明細(xì)表、道岔信息表等。圖1是列控工程數(shù)據(jù)表結(jié)構(gòu)。
圖1 列控工程數(shù)據(jù)表結(jié)構(gòu)
列控?cái)?shù)據(jù)以表格形式存儲(chǔ),各表定義了不同的數(shù)據(jù)屬性。例如:線路坡度表包含線別、坡度、長(zhǎng)度、終點(diǎn)里程;正線信號(hào)數(shù)據(jù)表包含列車(chē)正向運(yùn)行和反向運(yùn)行的區(qū)間,站內(nèi)正線部分的信號(hào)點(diǎn)與軌道區(qū)段信息。圖2給出正線信號(hào)數(shù)據(jù)表表格樣式。
圖2 正線信號(hào)數(shù)據(jù)表
XML[9]是一種可擴(kuò)展標(biāo)記語(yǔ)言,其設(shè)計(jì)宗旨是用于存儲(chǔ)與傳輸數(shù)據(jù),可以根據(jù)自身需求定義各種數(shù)據(jù)類(lèi)型,表示各類(lèi)源數(shù)據(jù)。
XML與SQLServer、DB2等數(shù)據(jù)庫(kù)在應(yīng)用和功能上不同,數(shù)據(jù)庫(kù)是一種數(shù)據(jù)存儲(chǔ)和管理的工具,通過(guò)sql語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查等功能,而XML主要用于存儲(chǔ)自定義的數(shù)據(jù),易于被各種編程語(yǔ)言開(kāi)發(fā)的應(yīng)用程序快速讀寫(xiě),通常作為應(yīng)用程序的配置文件。XML與其他數(shù)據(jù)表現(xiàn)形式相比,具有以下優(yōu)勢(shì):
(1)自定義標(biāo)記,具有極大的可擴(kuò)展性;
(2)定義數(shù)據(jù)結(jié)構(gòu)層次;
(3)篩選希望獲取的那部分?jǐn)?shù)據(jù);
(4)國(guó)際化語(yǔ)言,實(shí)現(xiàn)真正的數(shù)據(jù)交互。
除上述優(yōu)勢(shì)外,XML相對(duì)于其他存儲(chǔ)格式,還有與之相關(guān)的兩種約束技術(shù)——DTD和Schema,它們可以預(yù)先定義XML文檔的數(shù)據(jù)結(jié)構(gòu)和屬性約束,保證XML文件填寫(xiě)的正確性。
工程數(shù)據(jù)表是以表格形式對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),表與表之間不是獨(dú)立存在的,而是整體表述一段完整的線路信息。該儲(chǔ)存方式存在缺點(diǎn)如下:
(1)表格多,不同應(yīng)用所需數(shù)據(jù)不同,數(shù)據(jù)交互后,可能丟失數(shù)據(jù);
(2)數(shù)據(jù)之間存在屬性關(guān)聯(lián),數(shù)據(jù)變更影響多個(gè)數(shù)據(jù),不利于數(shù)據(jù)修改;
(3)表格單獨(dú)表示,不能體現(xiàn)表間關(guān)系和屬性關(guān)系。
對(duì)于列控系統(tǒng)數(shù)據(jù),統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)描述方式是許多學(xué)者的研究重點(diǎn)。當(dāng)建立統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)描述方式后,列控系統(tǒng)各設(shè)備之間不再需要轉(zhuǎn)換接口函數(shù),可以提高工程效率。對(duì)于不同鐵路部門(mén)和設(shè)備生產(chǎn)產(chǎn)家,可以實(shí)現(xiàn)數(shù)據(jù)共享,軟件互通,擴(kuò)大數(shù)據(jù)交流。Railml[10]就是一種歐洲提出的統(tǒng)一的鐵路應(yīng)用系統(tǒng)數(shù)據(jù)存儲(chǔ)格式,隨著鐵路系統(tǒng)各大公司和研究機(jī)構(gòu)的不斷加入,Railml討論會(huì)議的不斷召開(kāi),Railml也開(kāi)始得到了完善和使用。
針對(duì)列控工程數(shù)據(jù)表,本文提出基于XML的數(shù)據(jù)存儲(chǔ)標(biāo)準(zhǔn)化格式。通過(guò)XML數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),可以把所有工程數(shù)據(jù)表統(tǒng)一在一個(gè)文件進(jìn)行表述,可以避免數(shù)據(jù)的重復(fù)表示,消除數(shù)據(jù)冗余,也可防止表格丟失,保障數(shù)據(jù)完備性,同時(shí)XML文件是可自定義的結(jié)構(gòu)化文件,表示表格之間、數(shù)據(jù)之間以及表格與數(shù)據(jù)間的包含關(guān)系和關(guān)聯(lián)關(guān)系。
通過(guò)對(duì)Railml和文獻(xiàn)[11]的研究,結(jié)合列控工程數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)分析,列控?cái)?shù)據(jù)的XML結(jié)構(gòu)如圖3所示。圖3表示的是數(shù)據(jù)層次結(jié)構(gòu),每個(gè)結(jié)構(gòu)還包含內(nèi)部細(xì)致結(jié)構(gòu)和具體屬性表示,本文不做具體說(shuō)明,圖4是軌道分段拓?fù)浣Y(jié)構(gòu)XML數(shù)據(jù)示例。
圖3 列控?cái)?shù)據(jù)結(jié)構(gòu)
圖4 軌道分段拓?fù)浣Y(jié)構(gòu)XML
圖5為列控?cái)?shù)據(jù)驗(yàn)證流程,首先實(shí)現(xiàn)列控工程數(shù)據(jù)表到XML列控標(biāo)準(zhǔn)數(shù)據(jù)的轉(zhuǎn)換;根據(jù)原始數(shù)據(jù)與XML數(shù)據(jù)定義,結(jié)合數(shù)據(jù)規(guī)范、領(lǐng)域知識(shí)以及數(shù)據(jù)挖掘技術(shù)提取驗(yàn)證規(guī)則;利用Prolog語(yǔ)言將數(shù)據(jù)描述為事實(shí),規(guī)則描述為知識(shí),建立驗(yàn)證模型,最后利用XSB工具對(duì)事實(shí)進(jìn)行驗(yàn)證,根據(jù)數(shù)據(jù)錯(cuò)誤文檔修正數(shù)據(jù)。
圖5 列控?cái)?shù)據(jù)驗(yàn)證流程
列控?cái)?shù)據(jù)驗(yàn)證的基礎(chǔ)是數(shù)據(jù)的內(nèi)容和特點(diǎn),其目的是提高數(shù)據(jù)的正確性,其驗(yàn)證目標(biāo)就是數(shù)據(jù)包含的各類(lèi)規(guī)則。規(guī)則來(lái)源分為三類(lèi):一是鐵總運(yùn)下達(dá)的各類(lèi)文件,例如《列控?cái)?shù)據(jù)管理暫行辦法》[2]、《CTCS-2級(jí)列控系統(tǒng)應(yīng)答器應(yīng)用原則》[12]等;二是領(lǐng)域?qū)I(yè)知識(shí),鐵路信號(hào)基礎(chǔ)、車(chē)站信號(hào)控制等;三是通過(guò)數(shù)據(jù)挖掘方式,發(fā)現(xiàn)數(shù)據(jù)隱含規(guī)則。
根據(jù)圖3可知,列控?cái)?shù)據(jù)包含各類(lèi)數(shù)據(jù)對(duì)象,不同數(shù)據(jù)對(duì)象還包含大量數(shù)據(jù)屬性。每個(gè)數(shù)據(jù)對(duì)象在真實(shí)世界有其物理意義,各項(xiàng)數(shù)據(jù)屬性也必須滿足其值域規(guī)則,即格式需求與取值需求。
(1)數(shù)據(jù)類(lèi)型
不同數(shù)據(jù)屬性,代表實(shí)際含義不同,數(shù)據(jù)類(lèi)型也存在差異性,列控?cái)?shù)據(jù)主要包含的數(shù)據(jù)類(lèi)型有:整型、浮點(diǎn)型、字符串、布爾類(lèi)型、枚舉類(lèi)型。
(2)格式需求
列控?cái)?shù)據(jù)是列控基礎(chǔ)數(shù)據(jù),應(yīng)用于各類(lèi)設(shè)備配置數(shù)據(jù)、軟件開(kāi)發(fā)等。為滿足數(shù)據(jù)通用性,其數(shù)據(jù)格式具有嚴(yán)格的要求。例如:各項(xiàng)設(shè)備名稱(chēng)基本都有其命名規(guī)范;公里標(biāo)格式‘K×××+×××’;數(shù)值根據(jù)方向分奇數(shù)與偶數(shù)。
(3)值精度
值精度狹義上是考慮浮點(diǎn)型數(shù)據(jù)的小數(shù)位數(shù),但其廣義上還包括數(shù)據(jù)單位,數(shù)據(jù)值必須與其單位匹配。例如坡度單位‰;公里標(biāo)單位m;速度單位km/h。
(4)值范圍
值范圍即數(shù)據(jù)的取值范圍,由數(shù)據(jù)類(lèi)型與數(shù)據(jù)的物理意義確定。例如速度非負(fù),并有其最大值;布爾取值只能0和1;對(duì)于連續(xù)性數(shù)據(jù),根據(jù)箱型圖分析方法確定上界與下界。
表1從總體上簡(jiǎn)單概括值域規(guī)則具體內(nèi)容。
表1 值域規(guī)則
值域規(guī)則是對(duì)數(shù)據(jù)自身要求,滿足的是格式與值域。邏輯規(guī)則是表述各表各屬性間的邏輯關(guān)系。下文對(duì)部分?jǐn)?shù)據(jù)進(jìn)行定義形式并表述蘊(yùn)含邏輯規(guī)則。
定義1軌道分段數(shù)據(jù)定義為
定義2線路斷鏈數(shù)據(jù)定義為
規(guī)則1斷鏈長(zhǎng)度由斷鏈起點(diǎn)里程和終點(diǎn)里程確定。即
Dlength= |Dend-Dbegin|
(1)
規(guī)則2軌道分段長(zhǎng)度由其起點(diǎn)、終點(diǎn)里程以及是否包含斷鏈決定。
當(dāng)?Dk∈D,Dk?Ti
Tlength,i= |Tend,i-Tbegin,i|
(2)
當(dāng)?Dk∈D,Dk∈Ti
Tlength,i= |Tend,i-Tbegin,i|±Dlength,k
(3)
式中:D為斷鏈集合;Dk為D的一個(gè)元素。
定義3坡度數(shù)據(jù)定義為
圖6 坡度映射圖
規(guī)則3坡度長(zhǎng)度與坡度點(diǎn)公里標(biāo)一一對(duì)應(yīng),斷鏈表示未給出,即
Slength,1=Slocation,1-Tbegin,id
(4)
Slength,i=Slocation,i-Slocation,i-1i≥2
(5)
規(guī)則4線路的坡度分段描述了各個(gè)軌道分段的坡度信息,所屬軌道分段相同的坡度的長(zhǎng)度之和等于軌道區(qū)段長(zhǎng)度。即
(6)
定義4信號(hào)機(jī)數(shù)據(jù)定義
規(guī)則5信號(hào)機(jī)位置必然有絕緣節(jié),則信號(hào)機(jī)位置也是軌道分段分界點(diǎn),即
SIlocation=Tbegin,id∨SIlocation=Tend,id
(7)
定義5應(yīng)答器信息分組存儲(chǔ),數(shù)據(jù)定義為
規(guī)則6應(yīng)答器組內(nèi)間距標(biāo)準(zhǔn)為5 m,即
Blocation,i-Blocation,i-1=5
(8)
規(guī)則7根據(jù)應(yīng)答器布置規(guī)范,不同類(lèi)型的應(yīng)答器,與信號(hào)機(jī)之間的安裝距離為固定集合,用集合M表示,即
|Blocation,i-Slocation,i|∈M
(9)
定義6軌道分段連接關(guān)系定義為
規(guī)則8存在連接關(guān)系,則軌道分段不是同一段,且連接點(diǎn)公里標(biāo)相同,即
當(dāng)?
id1≠id2∧Tbegin,id1=Tend,id2
(10)
定義7軌道區(qū)段定義
規(guī)則9軌道區(qū)段因可能包含道岔,所以其可能包含多個(gè)軌道分段,各個(gè)分段之間必然存在連接關(guān)系,即
?LTi,LTi+1∈LTid??
(11)
在列控?cái)?shù)據(jù)規(guī)則提取過(guò)程中,值域規(guī)則和邏輯規(guī)則都是側(cè)重?cái)?shù)據(jù)屬性的約束關(guān)系,這些約束關(guān)系的來(lái)源是數(shù)據(jù)規(guī)范和領(lǐng)域?qū)<抑R(shí)。本文期望擴(kuò)展規(guī)則來(lái)源,能在鐵路線路大量的數(shù)據(jù)中,發(fā)現(xiàn)數(shù)據(jù)與數(shù)據(jù)之間的隱含關(guān)系。針對(duì)上述問(wèn)題,本文選取數(shù)據(jù)挖掘的方式提取數(shù)據(jù)中隱含的關(guān)聯(lián)規(guī)則。
數(shù)據(jù)挖掘[13]是以大量數(shù)據(jù)為基礎(chǔ),通過(guò)各種數(shù)據(jù)處理辦法發(fā)現(xiàn)可用規(guī)律的技術(shù)。根據(jù)列控?cái)?shù)據(jù)的實(shí)際情況分析,本文的數(shù)據(jù)挖掘方式采用的是關(guān)聯(lián)分析。關(guān)聯(lián)分析是數(shù)據(jù)挖掘的主要研究方法之一,期望從列控?cái)?shù)據(jù)中發(fā)現(xiàn)它們之間的相關(guān)性,而這些相關(guān)性并沒(méi)有在列控?cái)?shù)據(jù)中直接體現(xiàn)。
常用的關(guān)聯(lián)規(guī)則算法有Apriori算法、FP-Growth算法、灰色關(guān)聯(lián)分析法。由于列控?cái)?shù)據(jù)與大數(shù)據(jù)相比較,其數(shù)據(jù)量相對(duì)較少,因此本文采用的是Apriori算法。Apriori算法的核心思想是通過(guò)逐層的迭代,找到數(shù)據(jù)中最大的頻繁項(xiàng)集,再根據(jù)最小支持度與最小置信度,從頻繁項(xiàng)集中找到滿足要求的強(qiáng)關(guān)聯(lián)規(guī)則。下文對(duì)Apriori算法進(jìn)行基本簡(jiǎn)介。
項(xiàng)集是事務(wù)中項(xiàng)的集合,如果項(xiàng)集中存在I個(gè)項(xiàng),則成為I項(xiàng)集,如果I項(xiàng)集的支持度大于或等于設(shè)定的最小支持度,則稱(chēng)I項(xiàng)集為I頻繁項(xiàng)集。其中最小支持度是用于表示事務(wù)頻繁出現(xiàn)的一個(gè)閾值,大于該閾值的項(xiàng)集才具有統(tǒng)計(jì)意義。強(qiáng)關(guān)聯(lián)規(guī)則是從頻繁項(xiàng)集中找到的大于或等于最小置信度的關(guān)聯(lián)規(guī)則,其中最小置信度是強(qiáng)關(guān)聯(lián)規(guī)則發(fā)生的最低可靠性。
支持度:項(xiàng)集X、Y在所有事務(wù)中同時(shí)發(fā)生的概率。
支持度(X?Y)=P(XY)
置信度:項(xiàng)集X發(fā)生后,項(xiàng)集Y也發(fā)生的概率。
置信度(X?Y)=P(Y|X)
Apriori算法的實(shí)現(xiàn)分為兩個(gè)步驟。
步驟1先找到所有的1-頻繁項(xiàng)集,再通過(guò)逐層迭代,依次找到所有的2-頻繁項(xiàng)集、3-頻繁項(xiàng)集,直至找到最大的I-頻繁項(xiàng)集為止。
步驟2由頻繁項(xiàng)集生成關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則表述為X?Y,X稱(chēng)為前件,Y稱(chēng)為后件。該過(guò)程依次生成所有1-后件(后件只有一項(xiàng))強(qiáng)關(guān)聯(lián)規(guī)則,然后生成2-后件關(guān)聯(lián)規(guī)則,以此類(lèi)推生成所有強(qiáng)關(guān)聯(lián)規(guī)則。
本文以武廣線正線信號(hào)數(shù)據(jù)表的上行正向數(shù)據(jù)為例,描述關(guān)聯(lián)規(guī)則挖掘過(guò)程。第一步是確認(rèn)數(shù)據(jù)對(duì)象并獲取數(shù)據(jù),表2為部分正線信號(hào)數(shù)據(jù)樣例。
表2 武廣線正線信號(hào)數(shù)據(jù)
數(shù)據(jù)獲取是數(shù)據(jù)挖掘第一步,第二步是數(shù)據(jù)預(yù)處理,該步驟需要完成數(shù)據(jù)清理、屬性規(guī)約和屬性變換。數(shù)據(jù)清理的作用是清除數(shù)據(jù)中的無(wú)效數(shù)據(jù)和錯(cuò)誤數(shù)據(jù)。本文的數(shù)據(jù)來(lái)源是廣鐵集團(tuán),表格數(shù)據(jù)基本正確,清理過(guò)程通過(guò)值域規(guī)則進(jìn)行審查。通過(guò)對(duì)表2進(jìn)行屬性規(guī)約,刪除不相關(guān)屬性:序號(hào)、車(chē)站名、信號(hào)點(diǎn)里程。表3為屬性規(guī)約數(shù)據(jù)。
由表3數(shù)據(jù)可知,屬性中的信號(hào)點(diǎn)名稱(chēng)和軌道區(qū)段名稱(chēng)為文本數(shù)據(jù),命名上差異較大,而長(zhǎng)度為數(shù)值數(shù)據(jù),離散度較大,都需要通過(guò)屬性變換,構(gòu)造相關(guān)屬性。信號(hào)點(diǎn)名稱(chēng)用信號(hào)機(jī)類(lèi)型與方向集成為新屬性A,其中A1表示上行進(jìn)站信號(hào)機(jī)、A2表示上行出站信號(hào)機(jī)、A3表示上行通過(guò)信號(hào)機(jī)、A4表示上行進(jìn)路信號(hào)機(jī)、A5~A8為上述對(duì)應(yīng)的下行信號(hào)機(jī)、A9表示空、A10表示分割點(diǎn)。軌道區(qū)段名稱(chēng)根據(jù)其屬于區(qū)間還是站內(nèi)劃分,分別用D1、D2表示。長(zhǎng)度屬性為離散化數(shù)值,采用分段的劃分方式,例如F1取值[0,199]、F2取值[200,399]。其他屬性為枚舉類(lèi)型,不需要特殊區(qū)分,表4為屬性變換后的數(shù)據(jù)。
表3 屬性規(guī)約數(shù)據(jù)
表4 屬性變換數(shù)據(jù)
通過(guò)數(shù)據(jù)獲取、數(shù)據(jù)預(yù)處理,將最小支持度設(shè)為8%,最小置信度設(shè)為95%,通過(guò)Apriori算法處理所有武廣線上行正向數(shù)據(jù)后,挖掘出438條強(qiáng)關(guān)聯(lián)規(guī)則。因強(qiáng)關(guān)聯(lián)規(guī)則僅表示滿足支持度和置信度要求,還需要分析規(guī)則有效性以及審核是否符合實(shí)際意義,同時(shí)需要通過(guò)多條線路關(guān)聯(lián)規(guī)則對(duì)比后提取有效規(guī)則。表5是部分關(guān)聯(lián)規(guī)則示例。
表5 關(guān)聯(lián)規(guī)則
為了實(shí)現(xiàn)自動(dòng)檢查列控?cái)?shù)據(jù)的正確性,需要對(duì)數(shù)據(jù)進(jìn)行規(guī)則的一致性表示。本文使用Prolog邏輯語(yǔ)言建立邏輯編程框架,即驗(yàn)證模型。驗(yàn)證模型的目的就是搜索違反規(guī)則一致性的數(shù)據(jù)反例。Prolog建立的驗(yàn)證模型是基于一階謂詞的形式化表述,本文主要包含以下三類(lèi)謂詞:
(1)表述輸入數(shù)據(jù)文件事實(shí)的謂詞,即將列控?cái)?shù)據(jù)轉(zhuǎn)換為Prolog可識(shí)別的邏輯定義;
(2)表述數(shù)據(jù)規(guī)則的謂詞,即值域規(guī)則、邏輯規(guī)則、關(guān)聯(lián)規(guī)則;
(3)表述搜索數(shù)據(jù)反例的謂詞,即搜索錯(cuò)誤數(shù)據(jù)。
Prolog語(yǔ)言程序結(jié)構(gòu)有三類(lèi),分別是事實(shí)、規(guī)則和詢(xún)問(wèn)[14]。
事實(shí)是對(duì)事務(wù)定義的客觀存在,具有恒為真的含義。事實(shí)中的關(guān)系稱(chēng)為謂詞。例如Line(1-5DG,900),該事實(shí)描述軌道區(qū)段名稱(chēng)為1-5DG,長(zhǎng)度為900,謂詞是Line。
規(guī)則是事實(shí)自身或事實(shí)與事實(shí)之間可滿足的基本關(guān)系,是邏輯判斷的主要依據(jù)。規(guī)則由規(guī)則頭和規(guī)則體組成,其中用符號(hào)“:—”連接,用”.”結(jié)束。規(guī)則的一般描述形式如下:
p:—p1,p2,p3,…,pn.
p1,…,pn均為命題,符號(hào)”,”表示合取(∧并且)的意思。規(guī)則的語(yǔ)義是:如果“p1∧p2∧…∧pn”為真,則p為真。
Prolog系統(tǒng)是一種數(shù)據(jù)庫(kù)或知識(shí)庫(kù)系統(tǒng),事實(shí)和規(guī)則就是庫(kù)里面的知識(shí),通過(guò)詢(xún)問(wèn)的方式,向系統(tǒng)詢(xún)問(wèn)一些問(wèn)題,就是系統(tǒng)求解的目標(biāo)。對(duì)于本文而言,事實(shí)表示存在哪些列控?cái)?shù)據(jù),規(guī)則表示數(shù)據(jù)應(yīng)符合的驗(yàn)證規(guī)則,詢(xún)問(wèn)就是遍歷數(shù)據(jù)是否滿足所有規(guī)則,并尋找反例。
給定一個(gè)完整的XML格式的列控?cái)?shù)據(jù)文件,需要根據(jù)其中的XML元素定義成可識(shí)別的數(shù)據(jù)事實(shí),下文對(duì)部分列控?cái)?shù)據(jù)進(jìn)行事實(shí)表示。
軌道分段及其連接、坡度、信號(hào)機(jī)、應(yīng)答器、橋梁等事實(shí)表示如下:
t_section(Tid,Tbegin,Tend,Tlength,Tdir).
connection(Tid1,type1,Tid2,type2).
slope(Tid,Slength,Slocation,Svalue).
signal(SIid,SIname,SItype,SIlocation,sIpointType,SIJYJType).
balise(Bid,Bname,Blocation,Bfunction,Bstation).
baliseGroup(ArrayBid).
bridge(BRname,BRdir,BRloc_start,BRloc_end,BRlength).
line(Lid,Lname,Lfrequent,LTid).
belong(Tid,SIid|Bid)。
上述謂詞包含數(shù)據(jù)主要參數(shù),部分參數(shù)未給出。其中謂詞baliseGroup描述應(yīng)答器組關(guān)系;ArrayBid是應(yīng)答器編號(hào)數(shù)組;belong謂詞用于描述兩個(gè)對(duì)象間從屬關(guān)系,其中參數(shù)是對(duì)象編號(hào),不僅可表示軌道分段與信號(hào)機(jī)從屬關(guān)系,整個(gè)XML文件層次結(jié)構(gòu)從屬關(guān)系,都可用該謂詞表示,其余謂詞可參見(jiàn)本文3.2節(jié)。
值域規(guī)則中,部分?jǐn)?shù)據(jù)的值范圍具有明確規(guī)則,該部分?jǐn)?shù)據(jù)值域可用枚舉的形式來(lái)表示所有取值范圍。例如線路方向只有上行、下行,絕緣節(jié)只分為電氣絕緣節(jié)、機(jī)械絕緣節(jié),相關(guān)事實(shí)表示如下:
dir([up,down]).
frequent([2 600-1,2 600-2,2 000-1,2 000-2]).
jyj_type([electrical, mechanical]).
balise_type([active,passive]).
數(shù)據(jù)事實(shí)是根據(jù)列控?cái)?shù)據(jù)的實(shí)際情況,定義了相應(yīng)的格式后,將列控?cái)?shù)據(jù)轉(zhuǎn)化為對(duì)應(yīng)的事實(shí)表示。通過(guò)將上述的各類(lèi)規(guī)則轉(zhuǎn)換為Prolog的邏輯規(guī)則,構(gòu)建數(shù)據(jù)驗(yàn)證的規(guī)則模型,規(guī)則模型搭建的越完整,驗(yàn)證準(zhǔn)確性越高。規(guī)則模型主要分為以下4個(gè)子模型。
4.3.1 值域規(guī)則子模型
值域規(guī)則子模型是對(duì)列控?cái)?shù)據(jù)各對(duì)象值域規(guī)則的集成,是對(duì)數(shù)據(jù)格式和取值的約束。
對(duì)于數(shù)據(jù)類(lèi)型,Prolog有內(nèi)部定義的類(lèi)型謂詞,例如integer(A),string(A),real(A)。其余嚴(yán)格的數(shù)據(jù)格式約束,需要自定義相關(guān)規(guī)則謂詞。
信號(hào)機(jī)事實(shí)中包含信號(hào)機(jī)類(lèi)型,也包含其位置絕緣節(jié)類(lèi)型,驗(yàn)證這些類(lèi)型是否在值域范圍的規(guī)則表示如下:
rule_1(A):—signal(A,B,C,D,E,F)∧
signal_type(type1)∧insulation_joint(type2)∧
member(C,type1)∧member(C,type2).
根據(jù)信號(hào)機(jī)事實(shí)表示可知,C、F分別是編號(hào)為A的信號(hào)機(jī)的類(lèi)型和位置絕緣節(jié)類(lèi)型;member(C,type)是確認(rèn)C是否是集合type的一個(gè)元素。
應(yīng)答器名稱(chēng)在應(yīng)答器相關(guān)規(guī)范中有嚴(yán)格要求,其名稱(chēng)的首字母必須為“B”,規(guī)則表示如下:
rule_2(A):—balise(A,B,C,D,E)∧name(B,X)∧X=[X1|_]∧X1=66.
根據(jù)應(yīng)答器事實(shí)表示可知,B表示應(yīng)答器名稱(chēng),name(B,X)是內(nèi)部謂詞,實(shí)現(xiàn)字符串轉(zhuǎn)換對(duì)應(yīng)ASCⅡ碼數(shù)組,66是字符‘B’的ASCⅡ碼。
4.3.2 邏輯規(guī)則子模型
根據(jù)規(guī)則1可知,斷鏈的長(zhǎng)度由起點(diǎn)里程和終點(diǎn)里程決定,即長(zhǎng)度等于起點(diǎn)里程與終點(diǎn)里程之差,驗(yàn)證規(guī)則表示如下:
rule_3(A):—chain(A,B,C,D,E,F)∧D=|B-C|.
根據(jù)規(guī)則2可知軌道分段的長(zhǎng)度不僅與起點(diǎn)里程、終點(diǎn)里程相關(guān),還需要檢測(cè)是否存在斷鏈。該規(guī)則需要定義以下多條規(guī)則構(gòu)建其完整性。
rule_containChain(A,Length,type):—t_section(A,B,C,D,E)∧chain(X,Y,Z,Length,type,U)∧E=U∧((B rule_t_sectionLength(A):—t_section(A,B,C,D,E)∧rule_containChain(A,L,T)∧((D=|C-B|-L∧T=‘S’)∨(D=|C-B|+L∧T=‘L’)). rule_ t_sectionLength (A):— t_section(A,B,C,D,E)∧D=|B-C|. 其中謂詞rule_containChain表示編號(hào)為A的軌道分段是否包含斷鏈,并取得斷鏈長(zhǎng)度和類(lèi)型。rule_ T_sectionLength有兩條,分別存在斷鏈和不存在斷鏈,謂詞名稱(chēng)相同,兩條規(guī)則是或邏輯關(guān)系。 根據(jù)規(guī)則6可知,應(yīng)答器組內(nèi)應(yīng)答器布置位置相差5 m,其驗(yàn)證規(guī)則表示如下: rule_distanceBalise(A):—baliseGroup(A)∧length(A)>1∧?Ai,Ai+1∈A∧balise(Ai,B1,C1,D1,E1)∧balise(Ai+1,B1,C1,D1,E1)∧|C1-C2|=5. 信號(hào)機(jī)和應(yīng)答器與軌道分段有映射關(guān)系,即信號(hào)機(jī)的位置與軌道分段的起點(diǎn)或終點(diǎn)對(duì)應(yīng),應(yīng)答器位置在所屬軌道分段范圍內(nèi),驗(yàn)證規(guī)則表示如下: rule_signal To t_section(A):—signal(A,B,C,D,E,F)∧t_section(a,b,c,d,e)∧belong(a,A)∧(D=b∨D=c). between(D,X,Y):—D≤max(X,Y)∧D≥min(X,Y). rule_balise To t_section(A):—balise(A,B,C,D,E)∧t_section(a,X,Y,d,e)∧belong(a,A)∧between(D,X,Y). 4.3.3 關(guān)聯(lián)規(guī)則子模型 根據(jù)數(shù)據(jù)挖掘關(guān)聯(lián)規(guī)則的方法,提取出了大量關(guān)聯(lián)規(guī)則,根據(jù)關(guān)聯(lián)規(guī)則建立關(guān)聯(lián)規(guī)則子模型。 對(duì)于關(guān)聯(lián)規(guī)則“C1—>D1”,其實(shí)際意義是對(duì)于每條線路數(shù)據(jù),信號(hào)點(diǎn)絕緣節(jié)類(lèi)型是電氣絕緣節(jié),所屬軌道區(qū)段分類(lèi)是區(qū)間,表示如下: rule_C1—>D1(A):—signal(A,B,C,D,E,F)∧belong(a,A)∧t_section(a,b,c,d,e)∧(F=‘ electrical’—>isRegion(a)). 其中electrical表示電氣絕緣節(jié),謂詞isRegion判斷T_section(A)是否是區(qū)間軌道。 對(duì)于關(guān)聯(lián)規(guī)則“D1、B7->A10”,其實(shí)際意義表示區(qū)間軌道對(duì)應(yīng)信號(hào)點(diǎn)類(lèi)型沒(méi)有信號(hào)機(jī),則信號(hào)點(diǎn)名稱(chēng)屬于合成新屬性A6,表示如下: rule_D1B7->A10:—(isRegion(a)∧belong(a,A)∧signal(A,B,C,D,E,F))->(newAttribute(A,New),New=‘A6’). 其中謂詞newAttribute為確定信號(hào)點(diǎn)名稱(chēng)新屬性類(lèi)型。 4.3.4 錯(cuò)誤輸出子模型 上述3個(gè)子模型的目的是驗(yàn)證數(shù)據(jù)事實(shí)是否滿足數(shù)據(jù)規(guī)則,其回答是yes或no,不能提示數(shù)據(jù)錯(cuò)誤位置。錯(cuò)誤輸出子模型就是對(duì)違反規(guī)則輸出錯(cuò)誤信息,主要分為錯(cuò)誤信息存入Prolog知識(shí)庫(kù),以及輸出錯(cuò)誤到錯(cuò)誤信息TXT文件。 斷鏈信息中長(zhǎng)度與起點(diǎn)里程和終點(diǎn)里程不匹配,則存儲(chǔ)對(duì)應(yīng)錯(cuò)誤信息,表示如下: error_Meg1(A):—not rule_3(A) ->assert(error(message)). 其中,assert謂詞是內(nèi)部謂詞,邏輯判斷過(guò)程中添加新的事實(shí),assert(error(message))就是將驗(yàn)證過(guò)程中出現(xiàn)的錯(cuò)誤信息以事實(shí)的方式進(jìn)行存儲(chǔ)。 在驗(yàn)證過(guò)程完成后,為便于直觀地查看驗(yàn)證不通過(guò)的信息,方便修改錯(cuò)誤數(shù)據(jù),可將上述的error事實(shí)輸出,錯(cuò)誤信息輸出模塊表示如下: save(FileName):—telling(Old), tell(FileName), listing(error), told, tell(Old). 為了驗(yàn)證本文提出列控?cái)?shù)據(jù)驗(yàn)證方法的高效性和準(zhǔn)確性,利用武廣客專(zhuān)正線列控?cái)?shù)據(jù)進(jìn)行實(shí)驗(yàn)分析。線路跨度里程達(dá)1 000 km,數(shù)據(jù)記錄條數(shù)近9 000條。本文從中選取三段線路長(zhǎng)度不同的數(shù)據(jù)作為驗(yàn)證樣本,分別為武漢—咸寧、赤壁—長(zhǎng)沙、株洲—廣州。表6~表8是根據(jù)上述建立驗(yàn)證模型得到的驗(yàn)證結(jié)果。 表6 值域子模型驗(yàn)證結(jié)果 表7 邏輯子模型驗(yàn)證結(jié)果 表8 關(guān)聯(lián)子模型驗(yàn)證結(jié)果 根據(jù)表6~表8可以看出,隨著數(shù)據(jù)事實(shí)數(shù)量的增加,運(yùn)行時(shí)間也在增加,但3個(gè)子模型運(yùn)行總時(shí)間不超過(guò)20 s,三段鐵路線跨度已達(dá)950 km,相比較人工驗(yàn)證按天數(shù)來(lái)計(jì)算驗(yàn)證時(shí)間,該方法對(duì)于列控?cái)?shù)據(jù)驗(yàn)證具有明顯的高效性。 驗(yàn)證方法最重要的評(píng)價(jià)指標(biāo)是驗(yàn)證率,即能驗(yàn)證出錯(cuò)誤數(shù)據(jù)的比例。針對(duì)本文驗(yàn)證方法,數(shù)據(jù)錯(cuò)誤添加的方式是:先確保已有列控?cái)?shù)據(jù)的正確性,再由非驗(yàn)證模型設(shè)計(jì)人員修改數(shù)據(jù),并記錄修改內(nèi)容,以便于核實(shí)驗(yàn)證效果。根據(jù)驗(yàn)證結(jié)果可知,3個(gè)子模型單獨(dú)驗(yàn)證列控?cái)?shù)據(jù)的驗(yàn)證率都不高,但是,針對(duì)3個(gè)模型驗(yàn)證結(jié)果進(jìn)行統(tǒng)計(jì),三段線路的整體模型驗(yàn)證率可達(dá)92%、94%、92.6%,均超過(guò)了90%,可見(jiàn)該驗(yàn)證方法對(duì)于列控?cái)?shù)據(jù)驗(yàn)證具有較高的準(zhǔn)確性。 表9給出了本文方法與文獻(xiàn)[2-5]中的數(shù)據(jù)驗(yàn)證方法性能,列控?cái)?shù)據(jù)驗(yàn)證方法不同,在規(guī)則單元以及數(shù)據(jù)單元定義會(huì)有差異,例如DTVT的數(shù)據(jù)單元是單元格,Prolog是數(shù)據(jù)分類(lèi)的一行,所以數(shù)量級(jí)上不好比較,但可以發(fā)現(xiàn)本文方法在運(yùn)行時(shí)間上有明顯優(yōu)勢(shì),驗(yàn)證率上稍有缺陷。 表9 列控?cái)?shù)據(jù)驗(yàn)證方法性能 通過(guò)對(duì)遺漏的數(shù)據(jù)錯(cuò)誤進(jìn)行分析,發(fā)現(xiàn)未檢測(cè)的原因主要在于以下三點(diǎn):(1)數(shù)據(jù)屬于孤立信息或者約束較少,例如RBC的號(hào)碼92570107被修改成91111111;(2)名稱(chēng)信息完全屬于自然語(yǔ)言,只有基本規(guī)范,沒(méi)有明確限制,例如D1改成D111;(3)連續(xù)性數(shù)據(jù)只能約束異常數(shù)據(jù),如坡度取值1.5‰被修改為1.4‰無(wú)法驗(yàn)證。通過(guò)原因分析發(fā)現(xiàn),不能檢測(cè)錯(cuò)誤數(shù)據(jù)的原因不在于方法;導(dǎo)致以上類(lèi)型數(shù)據(jù)無(wú)法進(jìn)行驗(yàn)證的根本原因在于列控?cái)?shù)據(jù)定義的自身缺陷,缺少相關(guān)數(shù)據(jù)約束,所以本文提出的數(shù)據(jù)驗(yàn)證方法具有可行性。 本文針對(duì)列控?cái)?shù)據(jù)校核任務(wù)困難的問(wèn)題,提出了基于Prolog的列控?cái)?shù)據(jù)驗(yàn)證方法。針對(duì)列控?cái)?shù)據(jù)表格的多樣性、獨(dú)立性,期望建立基于XML的新型數(shù)據(jù)存儲(chǔ)格式。通過(guò)鐵路總公司數(shù)據(jù)規(guī)范、領(lǐng)域?qū)<抑R(shí)和數(shù)據(jù)挖掘三種方式,提取出數(shù)據(jù)驗(yàn)證規(guī)則,用于驗(yàn)證模型搭建,保障了驗(yàn)證模型的完整性,提高了驗(yàn)證模型的驗(yàn)證準(zhǔn)確性。以武漢—廣州線的列控工程數(shù)據(jù)為數(shù)據(jù)樣本,通過(guò)驗(yàn)證測(cè)試與分析,說(shuō)明了本文提出的列控?cái)?shù)據(jù)驗(yàn)證方法具有高效性和準(zhǔn)確性。5 實(shí)驗(yàn)分析
6 結(jié)束語(yǔ)