專(zhuān)利名稱(chēng):歐拉圖的構(gòu)造方法及基于該方法進(jìn)行測(cè)試序列優(yōu)化的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及中國(guó)列車(chē)運(yùn)行控制系統(tǒng),尤其涉及一種歐拉圖的構(gòu)造方法及基于該方 法進(jìn)行測(cè)試序列優(yōu)化的方法。
背景技術(shù):
測(cè)試案例為對(duì)列車(chē)車(chē)載設(shè)備某個(gè)功能特征進(jìn)行的驗(yàn)證與測(cè)試。執(zhí)行特定測(cè)試案例 要求系統(tǒng)必須到達(dá)此測(cè)試案例所需的初始狀態(tài)。這些初始狀態(tài)只有通過(guò)執(zhí)行特定系統(tǒng)功能 才能達(dá)到,并且這些特定系統(tǒng)功能包含在其它測(cè)試案例中。
測(cè)試序列是通過(guò)一定的方法對(duì)測(cè)試案例進(jìn)行串聯(lián),從而形成一個(gè)可以實(shí)際運(yùn)行的 測(cè)試場(chǎng)景,并確保測(cè)試結(jié)束后,所有的測(cè)試案例都被測(cè)試過(guò)至少一次。測(cè)試序列不是隨意產(chǎn) 生的,而是遵循一定的方法,將若干測(cè)試案例有序串聯(lián)起來(lái),形成一個(gè)測(cè)試場(chǎng)景式的有序測(cè) 試案例集。
由于測(cè)試案例數(shù)量龐大,并且車(chē)載設(shè)備功能復(fù)雜,在測(cè)試序列中,重復(fù)使用測(cè)試案 例的情況較多。為了更方便的對(duì)測(cè)試序列進(jìn)行優(yōu)化,可將一組測(cè)試序列轉(zhuǎn)化為有向圖,列車(chē) 各工作模式作為有向圖的頂點(diǎn),測(cè)試子序列作為頂點(diǎn)之間的有向弧,測(cè)試子序列中所包含 的測(cè)試案例數(shù)量看作有向弧的費(fèi)用。
現(xiàn)有技術(shù)中通過(guò)對(duì)有向圖進(jìn)行歐拉圖的構(gòu)造來(lái)優(yōu)化有向弧,以減少測(cè)試案例的重 復(fù)使用。但是在進(jìn)行歐拉圖構(gòu)造時(shí),輔助弧的添加個(gè)數(shù)較多,額外占用一定的內(nèi)存空間,影 響了歐拉圖構(gòu)造的效率,并且,通過(guò)歐拉圖構(gòu)造后的有向圖重復(fù)弧的數(shù)量較大,導(dǎo)致測(cè)試序 列的成本增加。發(fā)明內(nèi)容
本發(fā)明的目的是提供一種歐拉圖的構(gòu)造方法及基于該方法進(jìn)行測(cè)試序列優(yōu)化的 方法,減少了輔助空間的使用,提高了歐拉圖構(gòu)造的效率。
本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的
一種歐拉圖的構(gòu)造方法,該方法包括
判斷有向圖中各個(gè)頂點(diǎn)的出度與入度是否平衡,其中,有向圖中所有的頂點(diǎn)間的 弧均有出入方向,出度為以當(dāng)前頂點(diǎn)為起始點(diǎn)的弧的總數(shù),入度為以當(dāng)前頂點(diǎn)為終點(diǎn)的弧 的總數(shù);
若頂點(diǎn)A的出度與入度的差為W,則查找距離所述頂點(diǎn)A最近的W個(gè)頂點(diǎn),分別以 所述W個(gè)頂點(diǎn)為起始點(diǎn)構(gòu)建以所述頂點(diǎn)A為終點(diǎn)的重復(fù)弧,或分別以所述頂點(diǎn)A為起始點(diǎn) 分別構(gòu)建以所述W個(gè)頂點(diǎn)為終點(diǎn)的重復(fù)弧。
一種測(cè)試序列優(yōu)化的方法,該方法包括
為有向圖添加重復(fù)弧后,通過(guò)弗羅萊Fleury算法對(duì)添加重復(fù)弧后的有向圖進(jìn)行 歐拉回路的計(jì)算,獲得以某一頂點(diǎn)為起始點(diǎn)并通過(guò)所有弧至少一次的測(cè)試序列。
由上述本發(fā)明提供的技術(shù)方案可以看出,通過(guò)利用貪婪策略,使局部最優(yōu)達(dá)到全局最優(yōu),逐步構(gòu)造最優(yōu)解,并減少了輔助空間的使用,提高了歐拉圖構(gòu)造的效率。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用 的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他 附圖。
圖1為本發(fā)明實(shí)施例一提供的一種歐拉圖的構(gòu)造方法的流程圖2為本發(fā)明實(shí)施例二提供的又一種歐拉圖的構(gòu)造方法的流程圖3為本發(fā)明實(shí)施例二提供的一種測(cè)試序列有向圖的示意圖4為本發(fā)明實(shí)施例二提供的一種構(gòu)造重復(fù)弧后的有向圖的示意圖5為本發(fā)明實(shí)施例三提供的一種測(cè)試序列優(yōu)化的方法的流程圖。
具體實(shí)施方式
下面結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整 地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本 發(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本發(fā)明的保護(hù)范圍。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一提供的一種歐拉圖的構(gòu)造方法的流程圖,該方法主要包括 如下步驟
步驟101、判斷有向圖中各個(gè)頂點(diǎn)的出度與入度是否平衡。其中,頂點(diǎn)為列車(chē)的各 個(gè)工作模式,有向圖中所有的頂點(diǎn)間的弧均有出入方向,出度為以當(dāng)前頂點(diǎn)為起始點(diǎn)的弧 的總數(shù),入度為以當(dāng)前頂點(diǎn)為終點(diǎn)的弧的總數(shù),所述弧為工作模式間的測(cè)試子序列。
判斷有向圖是否為歐拉圖,主要判斷有向圖中各個(gè)頂點(diǎn)的出入度是否平衡,即判 斷以當(dāng)前頂點(diǎn)為起始點(diǎn)的弧個(gè)數(shù)與以當(dāng)前頂點(diǎn)為終點(diǎn)的弧個(gè)數(shù)是否相同。
步驟102、若頂點(diǎn)A的出度與入度的差為W,則查找距離所述頂點(diǎn)A最近的W個(gè)頂 點(diǎn),分別以所述W個(gè)頂點(diǎn)為起始點(diǎn)構(gòu)建以所述頂點(diǎn)A為終點(diǎn)的重復(fù)弧,或分別以所述頂點(diǎn)A 為起始點(diǎn)分別構(gòu)建以所述W個(gè)頂點(diǎn)為終點(diǎn)的重復(fù)弧。
若出入度不平衡則表明當(dāng)前有向圖不是歐拉圖,則需要添加重復(fù)弧。利用貪婪策 略求解通過(guò)局部最優(yōu)達(dá)到全局最優(yōu),即在每個(gè)階段選取一個(gè)最優(yōu)決策,逐步構(gòu)造最優(yōu)解。 從問(wèn)題的初始狀態(tài)出發(fā),通過(guò)若干次的貪婪選擇而得出最優(yōu)值(或較優(yōu)解)。
例如,分別計(jì)算各個(gè)頂點(diǎn)的出入度是否平衡,當(dāng)頂點(diǎn)A出入度不平衡時(shí),求出度與 入度的差W,當(dāng)出度大于入度時(shí),則查找距離所述頂點(diǎn)A最近的W個(gè)頂點(diǎn),分別以所述W個(gè) 頂點(diǎn)為起始點(diǎn)構(gòu)建以所述頂點(diǎn)A為終點(diǎn)的重復(fù)??;當(dāng)入度大于出度時(shí),則分別以所述頂點(diǎn)A 為起始點(diǎn)分別構(gòu)建以所述W個(gè)頂點(diǎn)為終點(diǎn)的重復(fù)弧。當(dāng)通過(guò)添加重復(fù)弧平衡頂點(diǎn)A的出入 度后,再為其他出入度不平衡的頂點(diǎn)添加重復(fù)弧,直至所有頂點(diǎn)的出入度平衡。
本發(fā)明實(shí)施例通過(guò)利用貪婪策略,使局部最優(yōu)達(dá)到全局最優(yōu),逐步構(gòu)造最優(yōu)解,并 減少了輔助空間的使用,提高了歐拉圖構(gòu)造的效率。
實(shí)施例二
為了更具體的介紹本發(fā)明,下面結(jié)合附圖2-4對(duì)本發(fā)明做進(jìn)一步描述。如圖2所示,包括以下步驟
步驟201、判斷有向圖中各個(gè)頂點(diǎn)的出度與入度是否平衡。若不平衡則轉(zhuǎn)入步驟 202。
其中,頂點(diǎn)為列車(chē)的各個(gè)工作模式,有向圖中所有的頂點(diǎn)間的弧均有出入方向,出度為以當(dāng)前頂點(diǎn)為起始點(diǎn)的弧的總數(shù),入度為以當(dāng)前頂點(diǎn)為終點(diǎn)的弧的總數(shù),所述弧為工作模式間的測(cè)試子序列。
若出入度不平衡則表明當(dāng)前有向圖不是歐拉圖,則需要添加重復(fù)弧來(lái)平衡頂點(diǎn)的出入度,此時(shí)轉(zhuǎn)入步驟202。
步驟202、計(jì)算有向圖的距離矩陣及路由矩陣。當(dāng)前有向圖不是歐拉圖,需要添加重復(fù)弧來(lái)平衡定點(diǎn)的出入度。而在此之前需要計(jì)算所述有向圖的距離矩陣與路由矩陣,可以使用弗洛伊德Floyd算法來(lái)計(jì)算,其計(jì)算流程為從任意2個(gè)頂點(diǎn)i到j(luò)的距離的帶權(quán)鄰接矩陣(i與j相連)開(kāi)始,每次插入一個(gè)頂點(diǎn)k,然后將i到j(luò)間的已知最短路徑與以插入頂點(diǎn)k作為中間頂點(diǎn)的路徑距離相比較,取較小值為新的距離矩陣。并以此循環(huán)迭代,依次構(gòu)造出η個(gè)矩陣D(1),D (2),……D (η)。
例如,對(duì)如圖3所示的有向圖計(jì)算距離矩陣的結(jié)果為
權(quán)利要求
1.一種歐拉圖的構(gòu)造方法,其特征在于,該方法包括 判斷有向圖中各個(gè)頂點(diǎn)的出度與入度是否平衡,其中,有向圖中所有的頂點(diǎn)間的弧均有出入方向,出度為以當(dāng)前頂點(diǎn)為起始點(diǎn)的弧的總數(shù),入度為以當(dāng)前頂點(diǎn)為終點(diǎn)的弧的總數(shù); 若頂點(diǎn)A的出度與入度的差為W,則查找距離所述頂點(diǎn)A最近的W個(gè)頂點(diǎn),分別以所述W個(gè)頂點(diǎn)為起始點(diǎn)構(gòu)建以所述頂點(diǎn)A為終點(diǎn)的重復(fù)弧,或分別以所述頂點(diǎn)A為起始點(diǎn)分別構(gòu)建以所述W個(gè)頂點(diǎn)為終點(diǎn)的重復(fù)弧。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括 根據(jù)弗洛伊德Floyd算法計(jì)算所述有向圖的距離矩陣與路由矩陣,井根據(jù)所述距離矩陣與所述路由矩陣查找距離所述頂點(diǎn)A最近的W個(gè)頂點(diǎn); 其中,所述距離矩陣表示兩個(gè)頂點(diǎn)最短路徑的長(zhǎng)度,所述路由矩陣表示各個(gè)頂點(diǎn)的連接路徑。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括 當(dāng)所述有向圖中重復(fù)弧的數(shù)量最少,且每個(gè)重復(fù)弧的費(fèi)用權(quán)值最小時(shí),所述重復(fù)弧的總費(fèi)用最低,其中重復(fù)弧的費(fèi)用權(quán)值為該弧包含的測(cè)試案例的個(gè)數(shù);
4.一種測(cè)試序列優(yōu)化的方法,其特征在于,該方法包括基于權(quán)利要求1-3任一項(xiàng)所述的方法為有向圖添加重復(fù)??; 通過(guò)弗羅萊Fleury算法對(duì)添加重復(fù)弧后的有向圖進(jìn)行歐拉回路的計(jì)算,獲得以某ー頂點(diǎn)為起始點(diǎn)并通過(guò)所有弧至少一次的測(cè)試序列。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,該方法還包括 通過(guò)回溯法對(duì)所述有向圖的路由矩陣進(jìn)行回溯,獲得所有重復(fù)弧的兩頂點(diǎn)對(duì)應(yīng)的最短路徑; 使用所述重復(fù)弧的兩頂點(diǎn)對(duì)應(yīng)的最短路徑替換所述測(cè)試序列中的重復(fù)弧。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述使用所述重復(fù)弧的兩頂點(diǎn)對(duì)應(yīng)的最短路徑替換所述測(cè)試序列中的重復(fù)弧之后還包括 將測(cè)試序列中所有弧的費(fèi)用權(quán)值相加獲得測(cè)試序列的總費(fèi)用;所述總費(fèi)用表示完成該測(cè)試序列所需費(fèi)用,當(dāng)重復(fù)弧的總費(fèi)用最低時(shí),測(cè)試序列的總費(fèi)用最低。
全文摘要
本發(fā)明公開(kāi)了一種歐拉圖的構(gòu)造方法及基于該方法進(jìn)行測(cè)試序列優(yōu)化的方法,其中,歐拉圖構(gòu)造的方法包括判斷有向圖中各個(gè)頂點(diǎn)的出度與入度是否平衡,其中,有向圖中所有的頂點(diǎn)間的弧均有出入方向,出度為以當(dāng)前頂點(diǎn)為起始點(diǎn)的弧的總數(shù),入度為以當(dāng)前頂點(diǎn)為終點(diǎn)的弧的總數(shù);若頂點(diǎn)A的出度與入度的差為W,則查找距離所述頂點(diǎn)A最近的W個(gè)頂點(diǎn),分別以所述W個(gè)頂點(diǎn)為起始點(diǎn)構(gòu)建以所述頂點(diǎn)A為終點(diǎn)的重復(fù)弧,或分別以所述頂點(diǎn)A為起始點(diǎn)分別構(gòu)建以所述W個(gè)頂點(diǎn)為終點(diǎn)的重復(fù)弧。通過(guò)采用本發(fā)明公開(kāi)的方法減少了輔助空間的使用,提高了歐拉圖構(gòu)造的效率。
文檔編號(hào)G06F19/00GK103049656SQ20121055545
公開(kāi)日2013年4月17日 申請(qǐng)日期2012年12月19日 優(yōu)先權(quán)日2012年12月19日
發(fā)明者楊志杰, 徐寧, 呂旌陽(yáng), 王財(cái)進(jìn), 王瑞, 王丁, 劉佳 申請(qǐng)人:中國(guó)鐵道科學(xué)研究院, 中國(guó)鐵道科學(xué)研究院通信信號(hào)研究所, 北京市華鐵信息技術(shù)開(kāi)發(fā)總公司, 北京銳馳國(guó)鐵智能運(yùn)輸系統(tǒng)工程技術(shù)有限公司