petri网学习心得
本文转载自duxw,如给您带来不便之处,请联系博主。
1.Petri网书籍:《petri网导论》,吴哲辉
非常适合初学者。概念清晰,容易理解。
2.工作流书籍:《Workflow Management: Models, Methods and Systems》, Wil van der Aalst
3.Petri网文章:《Petri Nets: Properties, Analysis and Application》,Tadao Murata,IEEE invited paper
既包含petri网基本知识的介绍,同时也有较深层次petri网知识的介绍。是一篇很全面的文章。短期内希望对petri网有所了解的人,推荐阅读这篇文章。
4.网站:
Petri Nets World,http://www.informatik.uni-hamburg.de/TGI/PetriNets/。这个强烈推荐。上面 有目前最全的petri网工具汇总。而且这对每种工具的特点进行了简要介绍。在学习了基本知识后,需要寻找工具着手尝试的时候,这里可以提供丰富的参考。而且还有一些小的在线绘制工具。
5.软件:
PIPE,开源软件,sourceforge有下载。可以方便的生成邻接矩阵。但是当网稍大的时候,就无法绘制可达图了。软件有一些bug(个人使用时遇到的),比如一旦绘制了某个元素(库所或者变迁),就无法删除。优点是容易上手。
WoPeD,这个专门针对WF_nets进行绘制的。个人感觉不错。可以方便的绘制可达图。同样支持模拟。支持判断完备性,活性等。
CPN,绘制着色petri网的强大工具,有自己的一套描述语言。个人没有深入研究。
学习建议:
先学习petri网书籍。整体上有了把握后,可以阅读上面推荐的文章《Petri Nets: Properties, Analysis and Application》,进行一次梳理。
个人对petri网的一些感触和理解
比较乱,大家一看就好:
1.初学时感觉比较容易。
不过是圆形为库所,方形为变迁,弧作为连接。真正入门后,感觉理论很扎实,有深度,不容易学精。可能在前期阅读过一些资料后,就可以上手进行petri网建模了。但是模型是否正确,很难保证。而且petri网理论研究居多,实际应用的例子并不是很多。如何将petri网应用到实际中,我也在思索这个问题。希望大家多多交流。
2.petri网有各种各样的扩展。但无外乎是将复杂的流程进行直观的展示。
个人学习这一段时间后,认为还是要注重最原始的petri网,多绘制,多分析,多思考。其他各种高级petri网不过是在原始的基础上,对库所、变迁、弧进行了更强的限制,使其能够包含更多的信息。包含的信息多了,可以方便对复杂系统的表达,但是同时带来的就是一些细节信息的缺失。将复杂的信息封装在了库所、变迁和弧上面,直观上就不能进行分析了。所以不要过于依赖高级petri网。当系统过大的时候,可以针对某个局部进行分析。能够用最简单的petri网绘制的,尽量用最简单的。这样才能最直接的反应系统的流程,并进行分析,发现问题。
3,由库所发出的多条弧(选择结构),最终要汇合在库所上。
由变迁发出的多条弧(并发结构),最终要汇总在变迁上。如果不是这样的情况,那一定要小心。多多考虑。因为,如果不是这样就很容易出问题。我在构建复杂系统的模型时,尝试过构造复杂的逻辑关系,但最终往往都发现存在问题。
关于此处说明的问题,在Aalst的文章《The Application of Petri Nets to Workflow Management》第40页中有详细阐述。建议大家阅读以下。当然,这样的错误在实际建模中还是非常容易出现的。简单的语言描述很难体会到,多画几次,遇到错误多做修改,才能有深刻的理解。
4.petri网的优势。
在于能够严格的反应系统的执行流程。如果详细分析,可以对系统的实现和开发(本人是做软件开发的)提供指导。举个简单的例子:
顺序结构是最常见的结构。当系统执行到p2的时候,是不能够在退回到t1的。那么对于系统的开发实现,就要考虑好,t1的具体操作,对p2以后的元素都是不可见的(不可用的)。这里要做的,有两种选择。要么在架构上,封装上,实现t1对后面的透明化;要么在用户操作上进行限制,一旦到达p2以后,t1的操作就不再可用。
在这里也顺便提一下。往往像上面这种顺序结构,很多是我们自己臆想出来的。各个操作之间,究竟有没有耦合关系,需要可观的考虑。如果没有,那他们之间就是并发关系。就不能表达为上面的顺序结构。专门提到这一点的原因是,往往(本人愚钝,遇到过)由于我们臆想的这种顺序结构,给自己带来混淆。实际上个操作之间是并发的,但是我们建模的时候,却理所当然的按照自己预想的一种操作顺序建模成顺序结构。从而也就产生了上面提到的问题,实际系统中可能完全执行了t2以后,再返回执行一次t1,这就和上面模型反应的情况完全不同。当然,也可能翻过来,实际是串行的,但我们实现系统的时候没有做好封装,使得操作t2执行完以后,t1还是可用的。这些细小的问题都需要尽量避免。
5.处于多条弧交汇点的元素需要着重考虑,这里可能会因为设计的不合理出现问题。
比如这个结构是系统中比较常见的结构。比如重新设置、重新生成等等需要反复执行的操作。t3变迁发生后到达p2,可能预计的下一步操作是继续执行t2,但是p2到t4也是可达的。那么这种情况是否合理?如果不合理,就应该讲交汇点p2错开,尽量让少的弧交汇在同一点,避免不符合逻辑的操作。比如可以通过添加库所和变迁来错开交汇点:

当然,如果通过逻辑上的修改来避免错误的路径是最好的。因为往往有些时候,这种添加的库所和变迁是没有实际意义的。
以上都是一些愚见。学习时间也短,仅仅是一些体会。正确的和大家分享,错误的还请指正,以作为以后学习petri网的同仁们的借鉴。
最后,总结一句体会:petri网模型是理性的,流程是用来给人用的。不可完全陷入模型的理性而妄断流程的对错;亦不可完全陷入流程的感性而臆想系统的运作。如何找到人与机器的平衡点,这就是个大课题了。
petri网学习心得的更多相关文章
- 《转》常用Petri网模拟软件工具简介
本文转载自liusj2003,如给您带来不便之处,请联系博主. 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World: http://www.informatik.uni ...
- 常用Petri网模拟软件工具简介
常用Petri网模拟软件工具简介 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World: http://www.informatik.uni-hamburg. ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->关于spring framework中的beans
Spring framework中的beans 1.概述 bean其实就是各个类实例化后的对象,即objects spring framework的IOC容器所管理的基本单元就是bean spring ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用Spring Framework开发自己的应用程序
1.直接基于spring framework开发自己的应用程序: 1.1参考资料: Spring官网spring-framework.4.3.5.RELAESE的Reference Documenta ...
- Java学习心得之 Linux下搭建JavaWeb环境
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建JavaWeb环境 1. 前言2. Java安装3. t ...
- windows类书的学习心得(转载)
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- 开源项目live555学习心得
推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册 疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订 ...
- PWA学习心得
PWA学习心得 一.什么是PWA Progressive Web App , (渐进式增强 WEB 应用) 简称 PWA ,是提升WebApp的体验的一种新方法,能给用户原生应用的体验. PWA ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
随机推荐
- Linux(CentOS)下安装git
上个月把VPS迁到budgetVM,终于不用再受digitalOcean的气了,入手很方便,重点是支持支付宝付款——paypal的界面真是不习惯,开通速度挺快的,1G的内存够我折腾一段时间了~,额外送 ...
- shiro 与 web 的结合
本次使用的jar包为 shiro-core-.jar shiro-web-.jar 从Shiro 1.2开始引入了Environment/WebEnvironment的概念,即由它们的实现提供相应的S ...
- java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
在运行定时任务的时候报错: Java.lang.NoClassDefFoundError: javax/transaction/UserTransaction 原因:缺少jta的jar包 解决方法:下 ...
- Java-Vector
package 集合类.list类; import java.util.Vector; public class Vector类 { public static void main(String[] ...
- selenium ide 录制回放link链接报错
回放是出现以下错误: 也就是回放点击打开新的链接时出现这个错误, 这个问题说的是 点击此链接会新打开一个窗口 selenium1是不支持多窗口切换的 因此会卡在这里,也就录制不支持这个操作,但是很多书 ...
- Fence 设备
RHCS中必须有Fence设备,在设备为知故障发生时,Fence负责让占有浮动资源的设备与集群断开. REDHAT的fence device有两种, 内部fence设备: IBM RSAII卡,HP的 ...
- java时间库Joda-Time
虽然在java8里面有内置的最新的时间库,但是在java8之前的版本所有的时间操作都得自己写,未免有些繁琐,如果我们不自己封装的话可以用Joda-Time这个时间库,下面写下这个库的具体用法. git ...
- 配置Junit测试程序
第一步:加载所需要的包:右键-->Build Path-->Configure Build Path-->Libraries-->Add Library-->Junit ...
- jsp学习(四)
JavaBean是一个可重复使用的软件组件,是遵循一定标准.用java语言编写的一个类,该类的一个实例称为一个JavaBean,简称bean. 它必须符合如下规范:1.必须有一个零参数的默认构造函数2 ...
- javascript的字符串模板
在其他语言存在字符串内插(string interpolation)或者叫变量内插(Variable interpolation).ES6中的称为template string. 模板字符串使用反引号 ...