郭 峰 楊顏公 閆 琦 喬 磊
(北方工業大學,北京 100144)
Petri網是一個分布式系統,目前已在制造系統、通信網絡、數字電路綜合與驗證等領域得到了廣泛應用。但Petri網也有很多缺點。把Petri網與進程代數相結合的研究領域引起很多研究人員的興趣,文獻[6]提出了進程表達式的一種概念,文獻[7]提出了用Petri網組件作為代數表達式的構造模型,其組件對外只提供接口,分別為TopPlace與BottomPlace。復雜的Petri網可以通過各種操作符組合而成,并給出了其操作語義,此進程網具有一般Petri網的運行規則,將這種Petri網模型稱為進程網(Process Net,簡稱為PrN)文獻[7]給出了實現其建模工具PrnTools的具體方法,但此軟件目前僅局限于畫圖建模階段,沒有分析的功能。雖然目前有很多實現Petri網仿真的軟件,但缺乏針對PrN網的仿真理論與實現。本文在文獻[7]的基礎上對基于PrN的仿真技術進行研究并實現。
本文假設讀者對Petri網理論有所了解,這里只對Pr給出定義:
定義1 PrN是一個七元組:(S,T,F,A,L,I,O),其中(S,T,F)是一個Petri網,有兩個特殊的庫所:i和o。庫所i是組件的起始庫所,即·i=?,在程序中用TopPlace表示;庫所o是組件的終止庫所,即o·=?;在程序中用BottomPlace表示。A是所有動作的集合,由英文字母組成的字符串表示,I?T,是變遷的集合,但只表示接受的消息,O?T,同樣是變遷集合,但只表示輸出的消息,這兩個合起來就是PrN的接口變遷集合。PrN定義了最基本組合并稱其為基本PrN(BasicComponent),由兩個庫所一個變遷組合而成,復雜的網結構由基本進程網結構組合而成。
文獻[7]介紹了進程網建模工具PrnTools的實現。此建模工具基于Eclipse平臺開發,包 括實現進程網的建模。本文是在其基礎上做的仿真技術的研究。

圖1 PrnTools組件類圖
接下來給出修改后的組件類圖(圖1):
其中,BaseComplex是所有組合組件實現的接口,BaseComplexSupport是所有組合組件的父類。繪制的進程網的過程本質上就是產生新的組合組件,BasicComponent是最基本的進程網模型,包含兩個庫所和一個變遷及對應的流關系。
其他組合組件由繼承BaseSingle Support的類添加元素修改而來,而其中每一個包含的基本元素數量和邏輯又各不相同。為了實現仿真,就必須添加每個組件的內部邏輯,包括前、后集合的實現,Token的添加以及組件元素的添加與命名。
2.1.1 前后集合的實現
前集用來判斷是否滿足點火條件,以便為點火做鋪墊,實現仿真。在每一個變遷(TransitionComponent)中加入兩個List,分別記錄此組件的前集和后集:
在繪制每一個基本組件的時候,實現庫所(Place)和變遷(Transition Component)的內部邏輯關系;在組件實現組合方式的時候.記錄每一個Place和Transition新產生的邏輯關系。另外點火的時候面向變遷,所以每一個組 件都需要一個自己的List
publicList
2.1.2 組件中元素的添加與命名
庫所和變遷的標記用來區分彼此,是在可達圖生成時的必須條件。此工具Prntools 以構造內部邏輯來實現一個完整的Petri網。 在內部邏輯構造過程中,需要修改自身組件或者鏈接兩個基本組件,不同的邏輯需要不同的構造方法。
為了記錄組件中所有元素,在組件父類(BaseSingleSupport)中添加兩個List,分別記錄產出的所有的庫所和變遷。這樣才能在畫圖結束后知道此組件中存在多少個庫所和變遷,也能將其在命名上分開。命名規則如下:
基本組件:由兩個庫所和一個變遷組合而成,上面的庫所(Topplace)標記為p1,下面的庫所(Bottomplace)標記為p2。變遷標記為t1。
組件組合:兩個組件進行算子組合,組件內部標記變化:組件1的庫所和變遷序號不變,組件2的庫所序和變遷依次增加組件1的元素個數。
2.2.1 進程網仿真技術
進程網的仿真步驟是先建立系統模型,然后通過多次點火模擬系統運行,得到仿真運行方式和結果。使用仿真方法,用戶可以觀察此組件中出現的Token的變化過程。分析出系統所具有的特性,如:可達性、有界性、可覆蓋性等,以便使我們得到系統的一些重要信息。
2.2.2 點火技術
為組件父類(BaseComplexSupport)增加點火函數Firing。增加點火按鈕,在選擇組件并點擊按鈕時調用點火函數。一次的點火規則如下:當一個變遷的所有前集中含有一個以上的Token,則此變遷可以發生點火:此變遷前集Token數量減一,此變遷后集Token數量加一。
具體方法如下:
(1)變遷選擇與Token移動
選中要點火的組件,在點火按鈕被點擊時,判斷組件是否可以點火。如果組件可以實行點火,遍歷所有變遷,判斷可以點火的變遷數量。如果此時只有一個變遷可以點火,則根據規則進行:
①根據初始數據對模型進行初始標記。②發生點火變遷前的所有庫所令牌數-1,點火變遷后的所有庫所令牌數+1。③仿真結束后,將仿真結果顯示和存儲。若遍歷后有兩個以上的變遷可以進行點火的情況下,會給出一個提示面版,讓用戶自己選擇
(2)記錄狀態圖組件
對于Petri網的仿真,其點火過程中的可達標識集是一個有限集,可以以此集合作為頂點,以庫所狀態與經歷的變遷的關系構成一個有向圖,這個圖稱為進程網的狀態圖。通過這個Petri網的狀態圖可以得到這個網系統狀態的變化與狀態變化時經歷的變遷,從而得知網系統的有關性質。
在每次點火的過程中,記錄下組件點火前后的狀態,即Mi與Mj,發生點火的變遷Tx,以便生成狀態圖。
(3)重復點火
回到步驟1,直到用戶停止操作或發生死鎖
(4)點火結束
在數次點火仿真后,如果組件達到死鎖狀態,及不能再繼續點火,工具會對用戶進行提示。

圖2 一次點火的流程圖
可以發現,整個大仿真過程由一次次的點火完成,用戶可以在任何地方停止操作,以下給出點火的程序流程圖,如圖2所示。
本文所提出的技術有效地實現了進程網流模型的分析與仿真,實現了對于順序、選擇、循環及并發等所有組合模式的標識及仿真技術,并且清晰地反映出進程網仿真過程中經歷的狀態改變及行為特征。進一步的工作可以考慮利用進程網點火和狀態圖的思想,實現可達圖的構造。
[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]郭峰,鄧蒙蒙,楊顏公.進程網建模工具的設計與實現[J].北方工業大學學報,2014,3(01):22-26.
[8]袁崇義.Petri網原理[M].北京:電子工業出版社,2005.