用于并发系统建模和验证的着色Petri网及其工具软件的CPN Tools(笔记整理)
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的表达式的值
用于并发系统建模和验证的着色Petri网及其工具软件的CPN Tools(笔记整理)的更多相关文章
- Petri网的工具
需要寻找 Petri 网的工具的朋友可以在 http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/complete_db.html 里面找一 ...
- 《转》常用Petri网模拟软件工具简介
本文转载自liusj2003,如给您带来不便之处,请联系博主. 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World: http://www.informatik.uni ...
- 常用Petri网模拟软件工具简介
常用Petri网模拟软件工具简介 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World: http://www.informatik.uni-hamburg. ...
- petri网学习心得
本文转载自duxw,如给您带来不便之处,请联系博主. 1.Petri网书籍:<petri网导论>,吴哲辉 非常适合初学者.概念清晰,容易理解. 2.工作流书籍:<Workflow M ...
- Petri网
Petri网是一种适合于系统描述和分析的数学模型,主要描述异步和并发关系.(或者Petri网是对离散并行系统的数学表示,适用于描述异步的,并发的计算机系统模型.) Petri网模型自然,直观,简单易懂 ...
- TLA+和并发系统正确性验证
TLA+介绍 TLA+(WIKI,官网)是一门领域特定语言,主要用于数理逻辑计算和并发系统的正确性验证.TLA+中的TLA代表的是"行为时序逻辑(Temporal Logic of Acti ...
- token方法可用于临时关闭令牌验证,
token方法可用于临时关闭令牌验证,例如: $model->token(false)->create(); 即可在提交表单的时候临时关闭令牌验证(即使开启了TOKEN_ON参数). 大理 ...
- Java并发编程之验证volatile不能保证原子性
Java并发编程之验证volatile不能保证原子性 通过系列文章的学习,凯哥已经介绍了volatile的三大特性.1:保证可见性 2:不保证原子性 3:保证顺序.那么怎么来验证可见性呢?本文凯哥(凯 ...
- 基于Petri网的工作流分析和移植
基于Petri网的工作流分析和移植 一.前言 在实际应用场景,包括PEC的订单流程从下订单到订单派送一直到订单完成都是按照一系列预先规定好的工作流策略进行的. 通常情况下如果是采用面向过程的编程方法, ...
随机推荐
- [转]Ubuntu18.04下安装搜狗输入法
鏈接地址:https://blog.csdn.net/lupengCSDN/article/details/80279177
- [LeetCode] 463. Island Perimeter 岛的周长
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...
- 利用function和bind实现回调功能
介绍一种利用function和bind来实现回调的功能. C++参考手册中对function的介绍: std::function的实例能存储.复制及调用任何可调用的目标,包括:函数.lambda表达式 ...
- 带CheckBox美化控件的表格全选
带CheckBox美化控件 <table class="positionTable commonListTable" id="positionTable" ...
- spring security实现记住我下次自动登录功能
目录 spring security实现记住我下次自动登录功能 一.原理分析 二.实现方式 2.1 简单实现方式 2.2 数据库实现方式 三.区分是密码登录还是rememberme登录 spring ...
- 【转】Lombok介绍、使用方法和总结
链接:http://www.yuanrengu.com/index.php/20180324.html 1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a ...
- 在ensp上STP配置和选路规则
原理概述 这次我们模拟的实验内容 搭建实验拓扑 搭建完拓扑之后,我们在交换机上启动STP服务,将交换机的STP模式改为普通生成树STP 配置完成之后我们来看一下S1生成树的状态(大约30秒之后,因为生 ...
- GraphQL简介
原文地址 https://flaviocopes.com/graphql/ 中译文地址 什么是GraphQL GraphQL的原则 GraphQL vs REST Rest是一个概念 单个端点 根据你 ...
- 02 Struts2框架----学习笔记2(了解一下,已过时)
1.*号通配符优化struts.xml代码 创建一个UserAction的动作类 package action; import com.opensymphony.xwork2.ActionSuppor ...
- prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert
PrometheusAlert 简介 PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的 ...