1、着色Petri网(CPNS)是一种建模和验证系统的语言,在这些熊中并发性,交互性和同步性扮演着主要的角色,着色Petri网是一种功能编程语言Standard ML结合起来的离散时间建模语言,Petri网为建模提供图形注释以及并发性和同步性的基本的语言基础,Standard ML为数据类型定义 数据操作描述 创建紧凑的可参数话的模型提供基本语言,一个系统的CPN模型是一个代表状态和事件(变迁)的可执行模型,事件可以导致系统改变状态,CPN语言使一组模块来构建一个模型成为可能,这里包括一种时间的概念,这种事件概念又使在被建模的系统中,表示处理事件所花费的时间成为可能。
2、CPNtools 是一个为构建和分析CPN模型的工业价值的计算工具蛮实用CPN tools 可以实现用模拟的方法调查被建模的系统的行为,借助状态空间放啊和模型检查来验证性能。进行基于模型的性能分析,用户与CPNTools交互,是基于对采用加护技术的图形表示的CPN模型的直接操作,CPNtools的许可证可以免费得到,也可以用于商业的用途。
3、着色Petri网(CPNnets或者CPNs)是一种图形语言,用于并发系统构建模型,并分析其性能,CP-Nets是一个与Petri网结合李珊事件建模语言,其功能性编程语言CPN ML是基于Standard ML的,CPN建模语言是一种通用建模语言,而是旨在分析一个广泛类型的并发系统的建模。典型的CP-nets应用领域包括协议 数据 分布式算法 以及嵌入式系统,然而 ,CP-nets也是使用与更加广泛的以并发性和交互性为主要特点的系统建模,
一个系统的CPN模型阐述了系统的状态和导致系统改变状态的事件(变迁)通过CPN模型的模拟,我们可以研究不同的场景,并探讨系统的行为特性,CP-nets可以被交互或者自动的模拟,交互模式类似于单步的模拟,调查不同的模型是否达到预期的效果,在一个交互模拟过程中,建模人员通过模型图上直接观察出CPN模型的单步运行效果,自动模拟模拟类似于程序的执行,为了测试建模人员可以设计适当的断点进行性能的测试,为了进行性能分析,模型需要数据收集器,来手机与系统性能有关的信息。
在大量的并行系统中时间起着重要的作用,有些系统的正确运行关键取决于某些活动所占用的时间,不同的设 计决策对系统的性能产生重大的影响,
CPN模型可以构造一些列模块来处理系统的规范,这些模块通过定义完善的接口相互交互,并用类似编程的方法进行组织,CP-nets的模块概念是基于一个分层的结构机制,允许每一个模块有一个子模块,可以用一组模块构成新的模块。
CPN模型是形式化的 从本质上讲,CPN建模语言中有其语法和语义的数学定义,这就意味着他可以验证系统的性能,检查系统状态和有关CPN模型状态的变化,基础状态空间的基本思路是计算所有可能达到的状态和有关CPN模型状态变化,并以一个有向图表示这些变化,图中节点代表的状态,弧代表发生的事件,状态空间完全可以自动构造。
4、简单的协议包括一个发送器(Sender),传输若干的数据包(datapackets)到一个接收器(receiver),通信发送在一个不可靠的网络,数据包可能被丢失,
5、网络结构 、声明、标注
一个CPN 模型按照协议的原理来绘制,下图是显示的基本的CPN模型的,左面的书发送器建模,中间额是网络建模,右边的是接收器建模。 CPN模型包括8个库所(Places)5个变迁(translation)还有一些直接连接的库所和变迁的弧(arcs),最后是一些靠近的库所,变迁和弧的标注,这些标注在CPN ML编程语言中有记录,库所和变迁称为节点(nodes)这些构成了网站结构。每一个库所可以被一个或者一个以上令牌(tokens)标识的,而且每一个令牌自身都附有一个数据值,这份数据值就是所谓的令牌颜色(token color),在每一个单独的库所里的令牌数量和令牌的颜色合起来构成了系统状态(marking),在一个特定库所上的令牌书构成了哪个库所的状态。 发送器(Sender)的状态是由两个库所PacketsToSend 和NextSend建模的,接收器(Receiver)的状态是由两个库所DataReceived 和NextREC建模的,而网络状态是由库所A,B、C和D建模。
每一个库所的当前状态(Current marking)都紧靠库所,在当前状态中库所上令牌的数量都在小圆圈中显示出来,在最初时,当前状态等价于初始状态。表示M0,初始状态在PacketsToSend上有6个令牌,而且哭诉NextSend NextREC和DataReceived 每个都有令牌。
5个变迁代表可以在系统中能够发生的事件,如库所一样,在长方形中协商变迁的名字。变迁的名字没有规范的额含义,只是对模型的可读性有一定的帮助,当一个变迁发生(occurs)它从其输入库所(input places)(指向变迁的弧的库所)中去除令牌,而且向输出库所增加令牌。当变迁发生的时候从输入库所移走,到输出库所增加的令牌的颜色值由弧表达式决定,这些弧表达式就是靠单个弧的文本标注,一个变迁和库所之间可以使用双箭头连接,双箭头的是两个在一个库所和一个变迁之间的相反的方向有向弧的简记形式,并且该库和变迁之间的弧有相同的弧表达式,这就意味中库所对于变迁来说既是输入弧也是输出弧,变迁SendPacketToSend 和 NextSend 都是通过栓箭头连接弧。
我们在展示的时候,只会显示CPN模型的片段,这是因为一个变迁的发生,只会与之连接的库所状态发生改变。
6、CPNtools对的模拟器开发了一批高级的数据结构和算法,可以高效的模拟分层的CPN模型,模拟器探讨Petri网的位置性质,确保一个宾倩的发生仅仅影响他的直接的周围对象,这也确保了在一次模拟中每秒执行的步骤数,独立于CPN模型中库所和变迁的数量,这确保了大型的CPN模型比例模拟。
CPNtool模拟器只执行构成一个单一的绑定元素,这是因为带有大量绑定元素的使能步骤的发生而产生的状态和让绑定元素在步骤中一个接一个的按照某种任意的顺序发生得到的状态是相同的,因此,可以通过和多个绑定元素一起构成步骤的发生序列达到的状态,可以通过带有单一的绑定元素的构成步骤的发生序列
上面的额是模拟工具的一个截图 : 从左到右 说说每个按钮的作用 :
1: 回到最初的状态
2: 停止正在进行的动画自动模拟
3: 用手动选择的绑定执行单一的变迁
4 :用一个随机绑定执行单一的变迁
5:执行一个动画自动模拟,通过随机选择绑定元素,并执行事件发生序列,显示每部的状态
6:执行快速自动模拟,通过随机选择绑定元素,并执行事件发生序列,而不用显示当前每一步之间的状态
7; 求一个CPN ML的表达式的值