欢迎来到天天文库
浏览记录
ID:39538210
大小:528.50 KB
页数:7页
时间:2019-07-05
《CPNTOOLS 举例》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、简单协议SimpleProtocol协议系统的CPN模型如下所示。它包括三个部分。Sender部分有两个变迁,它们能SendPackets(发包)和ReceiveAcknowledgments(收到确认)。Network部分有两个变迁:TransmitPackets(传送包)和TransmitAcknowledgments(传送收到确认)。最后,Receiver部分有一个单独的变迁,它能ReceivePackets(收到包)(和发送确认)。Sender和Network之间的接口包括库所A和D,Network
2、和Receiver之间的接口包括库所B和C。待发送的包被放在库所Send中(在左上角)。库所中的每个托肯包含了一个包的编号和包的数据内容(表示为文本字符)。库所NextSend包含了待发送的下一个库所的编号。这个编号最初是1,然后每收到一次收到确认,就进行一次更新。接收到的消息的内容保存在库所Received中(在右上角)。这个库所包含了一个带有文本字符串的单独的托肯,该文本字符串是收到包包含的文本字符串的串联(忽略了重复的内容和无序的包)。Received中最初的文本字符串是空,如:””。在发送的最后,我
3、们希望Received含有字符串”ModellingandAnalysisbyMeansofColouredPetriNets”。库所NextRec含有待接收的下一个包的编号。该编号初始为1,每次成功地接收到包之后都会进行更新。我们没有模拟:Sender是如何把一个消息分成一系列的包;Receiver是如何把包重新组织成一个消息的;在发送的末尾如何移除Send和Received的托肯;NextSend和NextRec中包的数量如何重置为1。现在来看一下协议系统中五个不同的变迁。SendPacket通过在库所
4、A中创建包的副本,向Network发送一个包。NextSend中的数字说明了要发送的是哪个包。应该注意的是,包没有从Send中移出,NextSend中的计数器也没有增长。原因是,包可能会丢失,因此需要转发retransmitted。我们的协议是悲观的,从某种意义上说,它继续重复了同一个包——直到它收到了接收确认,告知已经成功地收到了包。TransmitPacket通过把相应的托肯从A移到B,把来自Network中Sender站点的包发送给Receiver站点。布尔表达式Ok(s,r)决定了包是被成功地发送还
5、是丢失了。变量r绑定了它颜色集中任意的值(如:1和10之间任意的整数)。CPNTools在10个值之间进行了公平的选择。如果r的值小于或等于s值,函数Ok返回true。这说明,成功发送的概率是由库所SP的托肯决定的。我们已经给了SP一个值为8的托肯.因此,我们有80%的机会可以成功发送。简单地改变SP的托肯值,就可以很容易地修改该比率。ReceivePacket收到了一个包,检查包的编号n是否和NextRec中的编号k一致。当两个编号匹配时,NextRec中的号码增加1,包中的文本字符串连接到Receive
6、d中的文本字符串——直到stop=“########”,这习惯上表示消息的结束。否则,包被忽略,NextRec中的数量保持不变。在两种情况下,都发送了确认acknowledgement,该确认中包含了Sender应该发送的下一个包的数量。TransmitAcknowledgement通过从C到D移动相应的托肯,发送了一个从Network中Receiver站点到Sender站点的确认。变迁的工作方式和TransmitPacket是类似的。这说明,确认可能被丢失,其概率是由库所SA中的托肯决定的。Receive
7、Acknowledgment收到了一个确认,通过用确认中的值代替旧值,更新了NextSend中的数量。在很多步之后,CP-net可能达到中间的标识,如下所示。从网的左手边开始,我们看到,sender正在发送号码3的包。我们还能看到,该包的三个拷贝出现在库所A和B中。从网的右手边我们看到,字符串”ModellingandAnalysisb”已经接受到了(Received)。这是开始的三个包的内容,接收者正在等待号码4的包。因此,当A和B的包到达接收者时,这些包被忽略了。我们还能看到,两个确认出现在库所D上。当
8、ReceiveAcknowledgment发生时,NextSend将被更新为4,然后发送者将开始发送号码为4的包。当最后一个包(带有”########”)被接收者成功接收是,NextRec得到了值9(比包的号码大1)。该值将与发送者沟通(通过一个确认),NextSend将被更新为9,发送将停止——因为不存在该号码的包。在库所A,B,C,D清除了包/确认的几步之后,CP-net将达到一个最终的死标识,见下图。尽管这
此文档下载收益归作者所有