郭 峰 楊顏公 閆 琦 喬 磊
(北方工業(yè)大學(xué),北京 100144)
Petri網(wǎng)是一個分布式系統(tǒng),目前已在制造系統(tǒng)、通信網(wǎng)絡(luò)、數(shù)字電路綜合與驗證等領(lǐng)域得到了廣泛應(yīng)用。但Petri網(wǎng)也有很多缺點。把Petri網(wǎng)與進程代數(shù)相結(jié)合的研究領(lǐng)域引起很多研究人員的興趣,文獻[6]提出了進程表達式的一種概念,文獻[7]提出了用Petri網(wǎng)組件作為代數(shù)表達式的構(gòu)造模型,其組件對外只提供接口,分別為TopPlace與BottomPlace。復(fù)雜的Petri網(wǎng)可以通過各種操作符組合而成,并給出了其操作語義,此進程網(wǎng)具有一般Petri網(wǎng)的運行規(guī)則,將這種Petri網(wǎng)模型稱為進程網(wǎng)(Process Net,簡稱為PrN)文獻[7]給出了實現(xiàn)其建模工具PrnTools的具體方法,但此軟件目前僅局限于畫圖建模階段,沒有分析的功能。雖然目前有很多實現(xiàn)Petri網(wǎng)仿真的軟件,但缺乏針對PrN網(wǎng)的仿真理論與實現(xiàn)。本文在文獻[7]的基礎(chǔ)上對基于PrN的仿真技術(shù)進行研究并實現(xiàn)。
本文假設(shè)讀者對Petri網(wǎng)理論有所了解,這里只對Pr給出定義:
定義1 PrN是一個七元組:(S,T,F(xiàn),A,L,I,O),其中(S,T,F(xiàn))是一個Petri網(wǎng),有兩個特殊的庫所:i和o。庫所i是組件的起始庫所,即·i=?,在程序中用TopPlace表示;庫所o是組件的終止庫所,即o·=?;在程序中用BottomPlace表示。A是所有動作的集合,由英文字母組成的字符串表示,I?T,是變遷的集合,但只表示接受的消息,O?T,同樣是變遷集合,但只表示輸出的消息,這兩個合起來就是PrN的接口變遷集合。PrN定義了最基本組合并稱其為基本PrN(BasicComponent),由兩個庫所一個變遷組合而成,復(fù)雜的網(wǎng)結(jié)構(gòu)由基本進程網(wǎng)結(jié)構(gòu)組合而成。
文獻[7]介紹了進程網(wǎng)建模工具PrnTools的實現(xiàn)。此建模工具基于Eclipse平臺開發(fā),包 括實現(xiàn)進程網(wǎng)的建模。本文是在其基礎(chǔ)上做的仿真技術(shù)的研究。
圖1 PrnTools組件類圖
接下來給出修改后的組件類圖(圖1):
其中,BaseComplex是所有組合組件實現(xiàn)的接口,BaseComplexSupport是所有組合組件的父類。繪制的進程網(wǎng)的過程本質(zhì)上就是產(chǎn)生新的組合組件,BasicComponent是最基本的進程網(wǎng)模型,包含兩個庫所和一個變遷及對應(yīng)的流關(guān)系。
其他組合組件由繼承BaseSingle Support的類添加元素修改而來,而其中每一個包含的基本元素數(shù)量和邏輯又各不相同。為了實現(xiàn)仿真,就必須添加每個組件的內(nèi)部邏輯,包括前、后集合的實現(xiàn),Token的添加以及組件元素的添加與命名。
2.1.1 前后集合的實現(xiàn)
前集用來判斷是否滿足點火條件,以便為點火做鋪墊,實現(xiàn)仿真。在每一個變遷(TransitionComponent)中加入兩個List,分別記錄此組件的前集和后集:
在繪制每一個基本組件的時候,實現(xiàn)庫所(Place)和變遷(Transition Component)的內(nèi)部邏輯關(guān)系;在組件實現(xiàn)組合方式的時候.記錄每一個Place和Transition新產(chǎn)生的邏輯關(guān)系。另外點火的時候面向變遷,所以每一個組 件都需要一個自己的List
publicList
2.1.2 組件中元素的添加與命名
庫所和變遷的標記用來區(qū)分彼此,是在可達圖生成時的必須條件。此工具Prntools 以構(gòu)造內(nèi)部邏輯來實現(xiàn)一個完整的Petri網(wǎng)。 在內(nèi)部邏輯構(gòu)造過程中,需要修改自身組件或者鏈接兩個基本組件,不同的邏輯需要不同的構(gòu)造方法。
為了記錄組件中所有元素,在組件父類(BaseSingleSupport)中添加兩個List,分別記錄產(chǎn)出的所有的庫所和變遷。這樣才能在畫圖結(jié)束后知道此組件中存在多少個庫所和變遷,也能將其在命名上分開。命名規(guī)則如下:
基本組件:由兩個庫所和一個變遷組合而成,上面的庫所(Topplace)標記為p1,下面的庫所(Bottomplace)標記為p2。變遷標記為t1。
組件組合:兩個組件進行算子組合,組件內(nèi)部標記變化:組件1的庫所和變遷序號不變,組件2的庫所序和變遷依次增加組件1的元素個數(shù)。
2.2.1 進程網(wǎng)仿真技術(shù)
進程網(wǎng)的仿真步驟是先建立系統(tǒng)模型,然后通過多次點火模擬系統(tǒng)運行,得到仿真運行方式和結(jié)果。使用仿真方法,用戶可以觀察此組件中出現(xiàn)的Token的變化過程。分析出系統(tǒng)所具有的特性,如:可達性、有界性、可覆蓋性等,以便使我們得到系統(tǒng)的一些重要信息。
2.2.2 點火技術(shù)
為組件父類(BaseComplexSupport)增加點火函數(shù)Firing。增加點火按鈕,在選擇組件并點擊按鈕時調(diào)用點火函數(shù)。一次的點火規(guī)則如下:當一個變遷的所有前集中含有一個以上的Token,則此變遷可以發(fā)生點火:此變遷前集Token數(shù)量減一,此變遷后集Token數(shù)量加一。
具體方法如下:
(1)變遷選擇與Token移動
選中要點火的組件,在點火按鈕被點擊時,判斷組件是否可以點火。如果組件可以實行點火,遍歷所有變遷,判斷可以點火的變遷數(shù)量。如果此時只有一個變遷可以點火,則根據(jù)規(guī)則進行:
①根據(jù)初始數(shù)據(jù)對模型進行初始標記。②發(fā)生點火變遷前的所有庫所令牌數(shù)-1,點火變遷后的所有庫所令牌數(shù)+1。③仿真結(jié)束后,將仿真結(jié)果顯示和存儲。若遍歷后有兩個以上的變遷可以進行點火的情況下,會給出一個提示面版,讓用戶自己選擇
(2)記錄狀態(tài)圖組件
對于Petri網(wǎng)的仿真,其點火過程中的可達標識集是一個有限集,可以以此集合作為頂點,以庫所狀態(tài)與經(jīng)歷的變遷的關(guān)系構(gòu)成一個有向圖,這個圖稱為進程網(wǎng)的狀態(tài)圖。通過這個Petri網(wǎng)的狀態(tài)圖可以得到這個網(wǎng)系統(tǒng)狀態(tài)的變化與狀態(tài)變化時經(jīng)歷的變遷,從而得知網(wǎng)系統(tǒng)的有關(guān)性質(zhì)。
在每次點火的過程中,記錄下組件點火前后的狀態(tài),即Mi與Mj,發(fā)生點火的變遷Tx,以便生成狀態(tài)圖。
(3)重復(fù)點火
回到步驟1,直到用戶停止操作或發(fā)生死鎖
(4)點火結(jié)束
在數(shù)次點火仿真后,如果組件達到死鎖狀態(tài),及不能再繼續(xù)點火,工具會對用戶進行提示。
圖2 一次點火的流程圖
可以發(fā)現(xiàn),整個大仿真過程由一次次的點火完成,用戶可以在任何地方停止操作,以下給出點火的程序流程圖,如圖2所示。
本文所提出的技術(shù)有效地實現(xiàn)了進程網(wǎng)流模型的分析與仿真,實現(xiàn)了對于順序、選擇、循環(huán)及并發(fā)等所有組合模式的標識及仿真技術(shù),并且清晰地反映出進程網(wǎng)仿真過程中經(jīng)歷的狀態(tài)改變及行為特征。進一步的工作可以考慮利用進程網(wǎng)點火和狀態(tài)圖的思想,實現(xiàn)可達圖的構(gòu)造。
[1]Murata T.Petri nets: Properties,analysis and applications[J].Proceedings of IEEE,1989,77(04): 541-574.
[2]Gu Tianlong,Bahri P A.A survey of Petri-net applications in batch processes[J].Computers in Industry,2002,47(01): 99-111.
[3]Luo Jun-Zhou,Shen Jun,Gu Guan-Qun.From Petri nets toformal description techniques and protocol engineering[J].Journal of Software,2000,11(05): 606-615.
[4]Wolfgang Reisig.Petri Nets-An Introduction[J].New York: Springer-Verlag,1985.
[5]Wu Zhe-Hui.Process expression of bounded Petri net[J].Sciencein China(Series E),1996,39(01): 37-49.
[6]Guo Feng,Deng Mengmeng,Shi Wanlin,Process Net: A petri net model with the characteristics of process algebras,Journal of Chemical and Pharmaceutical Research,2013-9.
[7]郭峰,鄧蒙蒙,楊顏公.進程網(wǎng)建模工具的設(shè)計與實現(xiàn)[J].北方工業(yè)大學(xué)學(xué)報,2014,3(01):22-26.
[8]袁崇義.Petri網(wǎng)原理[M].北京:電子工業(yè)出版社,2005.