本發(fā)明屬于業(yè)務(wù)流程管理領(lǐng)域,涉及流程模型間的相似度計(jì)算方法,特別是一種基于匈牙利算法的工廠流程模型相似檢索方法。
背景技術(shù):
隨著業(yè)務(wù)流程管理技術(shù)的發(fā)展,越來(lái)越多的流程模型創(chuàng)建,如產(chǎn)品制造工廠就擁有大量流程模型,包括生產(chǎn)管理流程、采購(gòu)流程、供應(yīng)商選擇/評(píng)價(jià)流程、物料管理流程、成品檢驗(yàn)流程、不合格品管理流程、樣品作業(yè)流程、產(chǎn)品再加工流程等。這么多流程模型對(duì)制造工廠來(lái)說(shuō)是一大筆寶貴的財(cái)富,對(duì)其進(jìn)行有效地管理能為工廠帶來(lái)巨大的效益。檢索相似流程就是一種有意義的流程管理技術(shù),指的是給定一個(gè)檢索流程模型,該流程模型將在工廠制造流程模型庫(kù)中找到它的相似流程。在對(duì)工廠制造流程模型庫(kù)中添加一個(gè)新的制造流程模型之前,要先在流程庫(kù)中檢索出新流程模型的相似流程并判斷這些相似流程是否與新流程模型重復(fù)了,這樣可以避免冗余。
隨著工廠制造流程庫(kù)規(guī)模的不斷擴(kuò)大,現(xiàn)有檢索流程方法在效率和準(zhǔn)確率方面的弊端日益突出。首先,現(xiàn)有流程檢索方法在尋找匹配節(jié)點(diǎn)的過(guò)程中包含多次計(jì)算圖編輯距離的步驟,導(dǎo)致流程檢索的時(shí)間消耗變得很大。其次,現(xiàn)有流程檢索方法均側(cè)重于特定的應(yīng)用場(chǎng)景問(wèn)題,僅對(duì)流程模型中表示實(shí)際業(yè)務(wù)的任務(wù)元素進(jìn)行處理,而忽略或簡(jiǎn)化了流程間非任務(wù)元素的匹配過(guò)程,因此這些方法尚未能在實(shí)際中得到有效地應(yīng)用。最后,在一些流程檢索方法中,對(duì)非任務(wù)節(jié)點(diǎn)的相似度衡量標(biāo)準(zhǔn)存在問(wèn)題,使得對(duì)兩個(gè)流程的相似度衡量存在問(wèn)題,從而在某種程度上降低了流程檢索的質(zhì)量。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有流程檢索方法中存在的問(wèn)題,本發(fā)明首先重新定義了兩個(gè)petri網(wǎng)建模的流程模型的庫(kù)所之間的上下文環(huán)境相似度,不僅考慮庫(kù)所對(duì)周邊相同變遷個(gè)數(shù),而且考慮了庫(kù)所對(duì)之間相同的執(zhí)行路徑,這樣能在某種程度上提高兩個(gè)流程的相似度計(jì)算的準(zhǔn)確性,從而改善流程檢索的質(zhì)量。其次,本發(fā)明采用匈牙利算法來(lái)找到兩個(gè)流程模型間的最佳庫(kù)所節(jié)點(diǎn)對(duì)組合,引入匈牙利算法,不僅能保證找到的兩個(gè)流程間的匹配庫(kù)所對(duì)組合是全局最優(yōu)的,而且耗時(shí)非常少,大大提高了流程檢索的效率。最后,本發(fā)明設(shè)計(jì)了一種適用于petri網(wǎng)建模的流程模型間相似度衡量標(biāo)準(zhǔn),該衡量標(biāo)準(zhǔn)更加簡(jiǎn)潔明了。
基于匈牙利算法的工廠制造流程模型相似檢索方法,包括以下步驟:
(1)輸入要對(duì)工廠制造流程庫(kù)進(jìn)行檢索的檢索流程q,將q用petri網(wǎng)來(lái)建模并解析出q的變遷集合、庫(kù)所集合;
(2)取出工廠制造流程庫(kù)中的一個(gè)未處理過(guò)的流程模型c,用petri網(wǎng)來(lái)建模并解析出c的變遷集合、庫(kù)所集合;
(3)對(duì)q與c之間進(jìn)行變遷節(jié)點(diǎn)的匹配,得到匹配變遷集合;
(4)基于匹配變遷集合,對(duì)q與c進(jìn)行庫(kù)所節(jié)點(diǎn)的匹配;
(5)計(jì)算q與c之間的相似度并將其加入到相似度集合s中;
(6)判斷流程庫(kù)中是否還有未處理的工廠制造流程模型,若還有,則執(zhí)行步驟(2),否則,執(zhí)行步驟(7);
(7)在相似度集合s中選出前k個(gè)相似度最大的工廠制造流程模型,其中k是由用戶設(shè)置的。
進(jìn)一步,在步驟(3)中,兩個(gè)工廠制造流程模型q和c間的變遷節(jié)點(diǎn)對(duì)應(yīng)的標(biāo)簽(即變遷節(jié)點(diǎn)的名稱)若相同,則它們能匹配,否則不能進(jìn)行匹配。
進(jìn)一步,步驟(4)具體包括:
(4.1)計(jì)算q與c中所有可能匹配的庫(kù)所對(duì)的相似度,得到一個(gè)初始庫(kù)所匹配表;
(4.2)用匈牙利算法找出最佳庫(kù)所匹配對(duì)的組合;
進(jìn)一步,在步驟(4.1)中,兩個(gè)庫(kù)所p、p’間的相似度由以下公式來(lái)進(jìn)行計(jì)算:
其中,·p表示邊流入庫(kù)所p的所有變遷的集合,稱之為庫(kù)所p的前集;p·則表示邊從庫(kù)所p流出的所有變遷的集合,稱之為庫(kù)所p的后集。|·p∩·p’|+|p·∩p·’|代表的是p、p’的周?chē)嗤冞w個(gè)數(shù)?!×p·表示的是庫(kù)所p的前集與后集的笛卡爾積,且·p×p·中每一個(gè)元素代表的是通過(guò)庫(kù)所p的一個(gè)路徑,因此|(·p×p·)∩(·p’×p’·)|指的是庫(kù)所p與庫(kù)所p’的共同路徑個(gè)數(shù)。
進(jìn)一步,在步驟(4.2)中,初始庫(kù)所匹配表記錄的是兩個(gè)工廠制造流程模型間所有庫(kù)所對(duì)組合的相似度,其實(shí)質(zhì)是一個(gè)全局的庫(kù)所相似度矩陣。在完成步驟(4.1)后,將初始庫(kù)所匹配表作為匈牙利算法的輸入。使用匈牙利算法可以找到兩個(gè)流程圖中庫(kù)所相似度之和最大的庫(kù)所匹配對(duì)組合。在有些情況下,庫(kù)所相似度之和最大的值同時(shí)存在多個(gè),即相同的相似度之和但對(duì)應(yīng)不同的庫(kù)所匹配對(duì)組合。此時(shí),我們計(jì)算這些庫(kù)所對(duì)組合的圖編輯距離,選擇圖編輯距離最小的庫(kù)所對(duì)組合作為兩個(gè)流程圖間最終的庫(kù)所匹配對(duì)。
進(jìn)一步,在步驟(5)中,兩個(gè)用petri網(wǎng)建模的工廠制造流程模型g1,g2用以下公式來(lái)計(jì)算相似度:
其中,m指的是經(jīng)過(guò)步驟(4.2)得到的兩個(gè)模型間的庫(kù)所匹配結(jié)果,p1,p2分別指的是g1、g2中的庫(kù)所集合。
附圖說(shuō)明
圖1為本發(fā)明的總的流程圖
圖2為初始庫(kù)所匹配表
圖3為兩個(gè)模具制造流程模型的相似度計(jì)算實(shí)例圖
具體實(shí)施方式
實(shí)施例一
參考附圖1
(1)輸入要對(duì)工廠制造流程庫(kù)進(jìn)行檢索的檢索流程q,將q用petri網(wǎng)來(lái)建模并解析出q的變遷集合、庫(kù)所集合;
(2)取出工廠制造流程庫(kù)中的一個(gè)未處理過(guò)的流程模型c,用petri網(wǎng)來(lái)建模并解析出c的變遷集合、庫(kù)所集合;
(3)對(duì)q與c之間進(jìn)行變遷節(jié)點(diǎn)的匹配,得到匹配變遷集合;
(4)基于匹配變遷集合,對(duì)q與c進(jìn)行庫(kù)所節(jié)點(diǎn)的匹配,該步驟由以下步驟組成:
(4.1)計(jì)算q與c中所有可能匹配的庫(kù)所對(duì)的相似度,得到一個(gè)初始庫(kù)所匹配表;
(4.2)用匈牙利算法找出最佳庫(kù)所匹配對(duì)的組合;
(5)計(jì)算q與c之間的相似度并將其加入到相似度集合s中;
(6)判斷流程庫(kù)中是否還有未處理的工廠制造流程模型,若還有,則執(zhí)行步驟(2),否則,執(zhí)行步驟(7);
(7)在相似度集合s中選出前k個(gè)相似度最大的工廠制造流程模型,其中k是由用戶設(shè)置的。
實(shí)施例二
參考附圖2,3
此處只展示本發(fā)明的核心部分,即計(jì)算兩個(gè)工廠制造流程模型間的相似度。圖3的最上邊部分是兩個(gè)流程模型process1、process2,它們代表的是兩個(gè)用petri網(wǎng)建模的模具制造廠的模具制造流程,其中a表示“材料準(zhǔn)備”,b表示“打磨”,c表示“拋光”,d表示“切割”,e表示“組裝”,s和s’表示開(kāi)始,e和e’表示結(jié)束,p1表示“主體材料已準(zhǔn)備好”,p2表示“主體材料已完成”,p3表示“配件材料已準(zhǔn)備好”,p4表示“配件材料已準(zhǔn)備好”,p1’表示“開(kāi)始打造主體材料”,p2’表示“主體材料打造完畢”,p3’表示“開(kāi)始打造配件材料”,p4’表示“配件材料打造完畢”。
計(jì)算process1、process2的相似度的步驟如下:
(1)對(duì)process1、process2分別進(jìn)行解析,得到process1的變遷集合為{a,b,c,d,e},庫(kù)所集合為{p1,p2,p3,p4},process2的變遷集合為{a,b,c,d,e},庫(kù)所集合為{p1,p2,p3,p4};
(2)對(duì)process1、process2進(jìn)行變遷節(jié)點(diǎn)匹配,結(jié)果為{a-a,b-b,c-c,d-d,e-e},其中“-”表示匹配;
(3)對(duì)process1、process2進(jìn)行庫(kù)所節(jié)點(diǎn)匹配,具體包括:
(3.1)計(jì)算process1、process2中所有可能匹配的庫(kù)所對(duì)的相似度,并得到一張初始庫(kù)所匹配表,該表如圖2所示;假設(shè)流程process1包含n個(gè)庫(kù)所,流程process2包含m個(gè)庫(kù)所,且m<n,則橫向虛線框中是流程process1的所有庫(kù)所(由pj’表示),右下角虛線框中每一列鏈表包含了流程process2的所有庫(kù)所,由pi表示;庫(kù)所匹配表剩余部分中,位置(i,j)上存儲(chǔ)的是process1的第j個(gè)庫(kù)所與process2的第i個(gè)庫(kù)所間的上下文環(huán)境相似度;
僅考慮對(duì)兩個(gè)流程虛線框中的庫(kù)所進(jìn)行匹配,由于process1與process2包含的庫(kù)所數(shù)目一樣多,因此可將process2的庫(kù)所作為行,process1的庫(kù)所作為列,根據(jù)公式(1)分別計(jì)算所有庫(kù)所對(duì)的相似度,如:sim(p1,p1’)=3/5,sim(p4,p3’)=0,完成一個(gè)全局庫(kù)所匹配表的初始化;
(3.2)將初始庫(kù)所匹配表作為匈牙利算法的輸入,在此例中匈牙利算法的輸出只有一組:{(p1,p1’),(p2,p2’),(p3,p3’),(p4,p4’)};
(4)根據(jù)公式(2)對(duì)process1、process2進(jìn)行相似度計(jì)算:sim(process1,process2)=0.8。