摘 要:為便捷證明算術(shù)計(jì)算Petri網(wǎng)模型的計(jì)算能力,分析其具體計(jì)算過(guò)程.結(jié)合面向?qū)ο缶幊陶Z(yǔ)言Java開(kāi)發(fā)插件Arithmetic Petri Net Simulation(APNS),對(duì)網(wǎng)中的庫(kù)所、變遷、弧元素進(jìn)行實(shí)例化,重寫(xiě)Fire方法生成自定義格式的模型運(yùn)行日志;利用輕量級(jí)控件Swing實(shí)現(xiàn)交互界面,在模擬運(yùn)行時(shí)對(duì)可觸發(fā)變遷的發(fā)生進(jìn)行選擇,利于模型計(jì)算過(guò)程是否唯一的分析;提出(A+B)*(C-D)與A*B-C*D兩個(gè)計(jì)算模型.實(shí)驗(yàn)對(duì)冪次方運(yùn)算、(A+B)*(A-B)以及A^2-B^2模型進(jìn)行模擬,對(duì)插件的可交互性、模型的可行性、冪次方模型運(yùn)算過(guò)程的唯一性以及(A+B)*(A-B)與A^2-B^2模型的等價(jià)進(jìn)行了分析與證明.
關(guān)鍵詞:算術(shù)計(jì)算Petri網(wǎng);面向?qū)ο?Java;Swing;日志
中圖分類(lèi)號(hào):TP391.9 ?文獻(xiàn)標(biāo)識(shí)碼:A ?文章編號(hào):1673-260X(2020)08-0021-04
0 引言
算術(shù)運(yùn)算Petri網(wǎng)是帶抑制弧的増廣Petri網(wǎng)的一類(lèi)模型舉例,通過(guò)對(duì)帶抑制弧的Petri網(wǎng)模型的理解輔助解決實(shí)際建模中的問(wèn)題[1,2].文獻(xiàn)[3]提出了一個(gè)增廣Petri網(wǎng)模型實(shí)現(xiàn)乘法運(yùn)算和除法運(yùn)算;文獻(xiàn)[4]提出了一個(gè)增廣Petri網(wǎng)模型模擬乘方和開(kāi)方運(yùn)算的方法;以上運(yùn)算模型均從理論方面證明了模型的可行性.在計(jì)算機(jī)高速發(fā)展的今天,通過(guò)編程可以輔助科研人員進(jìn)行許多數(shù)據(jù)的處理與可視化、算法的證明等繁雜工作.文獻(xiàn)[5]利用Cpntools及分析代碼對(duì)SAMG問(wèn)題的驗(yàn)證進(jìn)行輔助及補(bǔ)充,彌補(bǔ)人類(lèi)專(zhuān)業(yè)知識(shí)對(duì)SAMG工作流程驗(yàn)證的不足;文獻(xiàn)[6]使用PIPE對(duì)具有多個(gè)控制器攻擊的SDN問(wèn)題進(jìn)行建模,以分析攻擊者的不確定性;文獻(xiàn)[7]使用Tina對(duì)具有時(shí)間因素的無(wú)線傳感器網(wǎng)絡(luò)丟包問(wèn)題進(jìn)行建模,并分析模型的有界性、可逆性等,以證明協(xié)議的正確性;以上工具均為科研工作提供了很多便捷之處以及助力,但驗(yàn)證的模型結(jié)構(gòu)是靜態(tài)的.綜上所述,由于計(jì)算模型大多僅有理論證明,且如冪次方計(jì)算模型的動(dòng)態(tài)性,一般仿真軟件不可對(duì)其證明.文章在此開(kāi)發(fā)出一個(gè)對(duì)算術(shù)計(jì)算Petri網(wǎng)模型的正確性、可行性進(jìn)行編程化驗(yàn)證分析的插件.
1 算數(shù)計(jì)算的增廣Petri網(wǎng)模型
本節(jié)首先展示冪次方運(yùn)算的Petri網(wǎng)模型[4],隨后基于對(duì)網(wǎng)模型的理解提出計(jì)算模型(A+B)*(C-D)與A*B-C*D.出于篇幅限制,本文密切相關(guān)的Petri網(wǎng)知識(shí)見(jiàn)文獻(xiàn)[2].
1.1 冪次方運(yùn)算Petri網(wǎng)模型
正此小節(jié)給出了計(jì)算xm的増廣Petri網(wǎng)模型如圖1所示,主要思路是xm=x*x*x*…*x,將多個(gè)乘法運(yùn)算模型通過(guò)變遷t4n+i和庫(kù)所P5n+1+i(i=1,2,3…m-1)進(jìn)行關(guān)聯(lián),其中t4n+i相關(guān)聯(lián)的抑制弧保證了完成當(dāng)前乘法運(yùn)算模型的運(yùn)行后在繼續(xù)下一個(gè)乘法模型的計(jì)算;通過(guò)P6n+2輸入冪次方運(yùn)算的底數(shù)x,限制第一個(gè)x2的計(jì)算;并利用t5n,對(duì)每個(gè)乘法模型輸入乘數(shù)x;最后使用P6n+1中m-2個(gè)Token個(gè)數(shù)限制乘法模型的關(guān)聯(lián)個(gè)數(shù)為m-1,自此完成計(jì)算xm的増廣Petri網(wǎng)模型,其中P5n+1輸出計(jì)算結(jié)果.
1.2 復(fù)合算術(shù)運(yùn)算Petri網(wǎng)模型
此小節(jié)給出了計(jì)算A*B-C*D=E與(A+B)*(C-D)=E的増廣Petri網(wǎng)模型如圖2所示,主要思路利用加減法模型與乘法模型[8]的復(fù)合生成新的計(jì)算模型,通過(guò)抑制弧的加入限制復(fù)合后模型的分塊執(zhí)行順序.
通過(guò)乘法模型實(shí)現(xiàn)A*B與C*D的計(jì)算,用減法模型對(duì)乘法模型模型連接,加入抑制?。–,t10), (s6,t10),(s7,t10)生成A*B-C*D算術(shù)計(jì)算模型.抑制弧的加入是為了確保C*D計(jì)算在s4-s8的運(yùn)算開(kāi)始之前完成,避免抑制?。╯8,t10)因減數(shù)的缺失而失去應(yīng)有抑制效果,導(dǎo)致復(fù)合模型中減法運(yùn)算結(jié)果異常.
通過(guò)加法模型與減法模型實(shí)現(xiàn)(A+B)、(C-D)的運(yùn)算,再利用乘法模型對(duì)加減法模型連接,加入抑制?。–,t5),(D,t5)生成最終的(A+B)*(C-D)算術(shù)計(jì)算模型.抑制弧的加入是為了(C-D)的計(jì)算在t5觸發(fā)之前完成,避免因乘數(shù)的異常,導(dǎo)致復(fù)合模型中乘法運(yùn)算結(jié)果異常.
2 APNS插件的開(kāi)發(fā)以及計(jì)算模型的分析
2.1 APNS插件的開(kāi)發(fā)以及計(jì)算模型的分析
在此利用Java編碼實(shí)現(xiàn)帶抑制弧的増廣Petri網(wǎng)的運(yùn)行邏輯,Eclipse插件WindowBuilder實(shí)現(xiàn)可交互圖形界面.利用面向?qū)ο蟮乃枷?,?chuàng)建Arc.java,InhibitorArc.java,Petrinet.java,Petrinet-Obj.java,Place.java,Transition.java共六個(gè)類(lèi),對(duì)庫(kù)所、變遷、流弧、抑制弧和網(wǎng)結(jié)構(gòu)進(jìn)行實(shí)例化,且對(duì)變遷是否可觸發(fā)及觸發(fā)規(guī)則進(jìn)行了代碼化(類(lèi)圖如圖3所示);并在主界面定義多個(gè)觸發(fā)事件,利用java.io.File包實(shí)現(xiàn)變遷觸發(fā)日志的導(dǎo)出;創(chuàng)建Operation.java將算術(shù)運(yùn)算Petri網(wǎng)的模型代碼抽象化;創(chuàng)建Gui_Main.java和PetrinetGUI.java利用WindowBuilder Editor實(shí)現(xiàn)插件主控、交互以及文件導(dǎo)出界面如圖4所示.
交互界面可以觀察可觸發(fā)變遷,通過(guò)點(diǎn)擊進(jìn)行觸發(fā),并在主界面生成對(duì)應(yīng)觸發(fā)記錄;同樣可以點(diǎn)擊autoRun按鈕,對(duì)Petri網(wǎng)中的變遷進(jìn)行遍歷,對(duì)當(dāng)前可觸發(fā)變遷利用ArrayList進(jìn)行緩存,然后隨機(jī)觸發(fā),直到當(dāng)前無(wú)變遷可觸發(fā)即停止運(yùn)行.對(duì)應(yīng)代碼如Code-1:
從插件大小、模型設(shè)定、交互運(yùn)行、日志導(dǎo)出共4個(gè)方面,用此插件與PIPE、CPNTools、Tina3個(gè)Petri網(wǎng)仿真軟件進(jìn)行對(duì)比,結(jié)果如表1所示.插件APNS在實(shí)現(xiàn)算術(shù)Petri網(wǎng)模型仿真方面,具有體積小、可交互以及自定義日志導(dǎo)出的優(yōu)勢(shì).由于冪次方計(jì)算模型的動(dòng)態(tài)性,將在2.2節(jié)詳細(xì)介紹其模型構(gòu)建方式.
2.2 冪次方運(yùn)算的實(shí)現(xiàn)
此小節(jié)介紹了將xm對(duì)應(yīng)算術(shù)運(yùn)算Petri網(wǎng)模型輸入至插件的過(guò)程.在此増廣Petri中,當(dāng)網(wǎng)處于初始狀態(tài)M0時(shí),庫(kù)所P6n+2輸入x個(gè)Token用作乘法結(jié)構(gòu)的乘數(shù)、庫(kù)所P6n+1輸入m-2個(gè)Token用作限制乘法結(jié)構(gòu)個(gè)數(shù)為m-1.此時(shí)可計(jì)算出圖中變遷總數(shù)為5*(m-1)、庫(kù)所總數(shù)為6*(m-1)+2.
對(duì)于圖1中流弧個(gè)數(shù)可分為9個(gè)部分來(lái)求?。喉敳縋6n+1直接關(guān)聯(lián)的所有流弧共(m-1)條;乘法増廣Petri網(wǎng)結(jié)構(gòu)內(nèi)的所有流弧共15*(m-1)條;底部輸入弧,t5n的所有輸出弧共m條;頂部關(guān)聯(lián)抑制弧乘法結(jié)構(gòu)抑制t4n+h的3條抑制弧共3*(m-2)條;連接乘法結(jié)構(gòu)的流弧共2*(m-2)條;頂部輸入弧,對(duì)t4n+h輸入的流弧共(m-2)條;頂部輸出流弧共(m-3)條;初始化弧共3條;輸出流弧共1條,庫(kù)所與變遷之前的關(guān)系弧共24*m-28條.
對(duì)于模型的輸入代碼,首先初始化庫(kù)所集、變遷集以及弧集,其中重要的部分為弧集的初始化問(wèn)題,部分代碼如Code-2:
3 實(shí)驗(yàn)部分
本節(jié)對(duì)(A+B)*(A-B)、A^2-B^2以及xm三個(gè)計(jì)算模型進(jìn)行模擬運(yùn)行,通過(guò)調(diào)整輸入?yún)?shù)獲得不同計(jì)算結(jié)果,以及輸出日志.所有的測(cè)試均在配有I5-7300HQ 2.5Ghz四核處理器和16GB運(yùn)存的機(jī)器上進(jìn)行的,使用的Java SE 1.7開(kāi)發(fā)環(huán)境.
首先就模型執(zhí)行過(guò)程的唯一性,由于存在加、減法運(yùn)算的復(fù)合,假設(shè)(A+B)*(A-B)與A^2-B^2運(yùn)算過(guò)程不為一.設(shè)A=3,B=2.(A+B)*(A-B)模擬運(yùn)行兩次獲得兩條長(zhǎng)度為28的變遷觸發(fā)日志:
L1=(t2,t1,t1,t2,t1,t3,t3,t4,t5,t8,t6,t7,t5,t8,t6,t7,t5,t8,t6,t7,t5,t8,t6,t7,t5,t8,t6,t7)
L2=(t1,t3,t3,t4,t2,t5,t1,t1,t2,t8,t6,t7,t5,t8,t6,t7,t5,t8,t6,t7,t5,t8,t6,t7,t5,t8,t6,t7)
A^2-B^2模擬運(yùn)行兩次獲得長(zhǎng)度為45的變遷觸發(fā)日志:
L3=(t5,t1,t3,t7,t7,t3,t3,t2,t9,t9,t6,t8,t4,t4,t8,t5,t4,t1,t3,t7,t3,t7,t3,t2,t4,t9,t6,t8,t9,t8,t4,t4,t1,t10,t10,t3,t10,t3,t10,t3,t10,t2,t4,t4,t4);
L4=(t1,t3,t5,t3,t7,t3,t7,t6,t8,t2,t4,t9,t9,t4,t4,t1,t3,t3,t8,t3,t5,t2,t7,t9,t4,t4,t4,t7,t6,t9,t8,t1,t8,t10,t10,t3,t10,t3,t3,t10,t2,t4,t4,t4,t10);
其次取A=i+1,B=i(其中i=1,2,3,4,5,6),兩個(gè)計(jì)算模型均能正確計(jì)算出結(jié)果且模型結(jié)構(gòu)不隨參數(shù)變化,但執(zhí)行效率隨著i的增大差異愈發(fā)明顯,如圖5所示.
取底數(shù)為x(x=2,3,4),次數(shù)為i(i=3,4,5,6,7),對(duì)應(yīng)計(jì)算的流程有且唯一,冪次方計(jì)算模型復(fù)雜度(變遷個(gè)數(shù)如圖6a所示),以及對(duì)應(yīng)變遷觸發(fā)次數(shù)如圖6b所示所示.隨著次數(shù)i的的增加,模型中變遷個(gè)數(shù)呈線性增加;隨著次數(shù)或底數(shù)的增加,模型計(jì)算變遷觸發(fā)次數(shù)呈指數(shù)增長(zhǎng)如圖6c所示.
4 總結(jié)
文章通過(guò)帶抑制弧Petri網(wǎng)的強(qiáng)模擬能力引出算術(shù)計(jì)算Petri網(wǎng)模型的構(gòu)建.使用Java語(yǔ)言開(kāi)發(fā)出插件APNS模擬帶抑制弧Petri網(wǎng)的運(yùn)行,且可導(dǎo)出變遷觸發(fā)日志用以分析運(yùn)行過(guò)程;通過(guò)對(duì)現(xiàn)有網(wǎng)模型的復(fù)合,提出平方差公式的計(jì)算模型;將模型嵌入APNS中,模擬計(jì)算證明模型的正確性,導(dǎo)出變遷觸發(fā)日志分析隨自變量i的增加A^2-B^2計(jì)算效率高于(A+B)*(A-B);冪次方運(yùn)算過(guò)程有且唯一,隨次數(shù)i的增加模型中變遷數(shù)量線性增加,變遷觸發(fā)次數(shù)呈指數(shù)增長(zhǎng).
已開(kāi)發(fā)的插件APNS可有效模擬帶抑制弧Petri網(wǎng)的運(yùn)行,但模型的代碼化輸入不夠常規(guī).在未來(lái)的工作中主要是利用復(fù)合網(wǎng)模型的方法生成更多常用模型嵌入插件中并驗(yàn)證,以及增加界面化的模型輸入.
參考文獻(xiàn):
〔1〕吳哲輝.Petri網(wǎng)導(dǎo)論[M].北京:機(jī)械工業(yè)出版社,2006.
〔2〕邵叱風(fēng).基于流程挖掘的并行優(yōu)化算法[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2019,35(10):66-70.
〔3〕吳哲輝.實(shí)現(xiàn)乘法計(jì)算的增廣Petri網(wǎng)模型[J].山東礦業(yè)學(xué)院學(xué)報(bào),1986,96(02):12-16.
〔4〕許安國(guó).實(shí)現(xiàn)自然數(shù)m次乘方和開(kāi)m次方的增廣Petri網(wǎng)模型[J].山東礦業(yè)學(xué)院學(xué)報(bào),2017,34(04):81-89.
〔5〕Lee Y S, No Y G, Seong P H. Validation of severe accident management guidelines (SAMGs) for advanced power reactor 1400 (APR1400) using colored Petri net (CPN) Tools[J]. Annals of Nuclear Energy, 2019, 126: 186-193.
〔6〕Almutairi L, Hong L, Shetty S. Security analysis of multiple SDN controllers based on stochastic Petri nets[C]//2019 Spring Simulation Conference (SpringSim). IEEE, 2019: 1-12.
〔7〕Louazani A, Sekhri L. Time Petri Nets based model for CL-MAC protocol with packet loss[J]. Journal of King Saud University-Computer and Information Sciences, 2019.