本文转载自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网学习心得的更多相关文章

  1. 《转》常用Petri网模拟软件工具简介

    本文转载自liusj2003,如给您带来不便之处,请联系博主. 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World: http://www.informatik.uni ...

  2. 常用Petri网模拟软件工具简介

    常用Petri网模拟软件工具简介 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World:       http://www.informatik.uni-hamburg. ...

  3. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->关于spring framework中的beans

    Spring framework中的beans 1.概述 bean其实就是各个类实例化后的对象,即objects spring framework的IOC容器所管理的基本单元就是bean spring ...

  4. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用Spring Framework开发自己的应用程序

    1.直接基于spring framework开发自己的应用程序: 1.1参考资料: Spring官网spring-framework.4.3.5.RELAESE的Reference Documenta ...

  5. Java学习心得之 Linux下搭建JavaWeb环境

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建JavaWeb环境 1. 前言2. Java安装3. t ...

  6. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  7. 开源项目live555学习心得

      推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册   疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订 ...

  8. PWA学习心得

    PWA学习心得 一.什么是PWA Progressive  Web  App , (渐进式增强 WEB 应用) 简称 PWA ,是提升WebApp的体验的一种新方法,能给用户原生应用的体验. PWA ...

  9. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

随机推荐

  1. HYSBZ1036 树链剖分

    这题我建了2棵线段树,这样来处理 最值和和值,简单的题目. #include<queue> #include<stack> #include<cmath> #inc ...

  2. Java基础-JVM

    jvm=> java虚拟机 一.java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止. ...

  3. 【BZOJ-1452】Count 树状数组 套 树状数组

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1769  Solved: 1059[Submit][Stat ...

  4. codevs1064 虫食算

    题目描述 Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045    +    8468#6 ...

  5. linux内核数据结构学习总结

    目录 . 进程相关数据结构 ) struct task_struct ) struct cred ) struct pid_link ) struct pid ) struct signal_stru ...

  6. hihocoder #1270 建造基地

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在遥远的未来,小Hi成为了地球联邦外空间联合开发工作组的一员,前往一颗新发现的星球开发当地的重金属资源. 为了能够 ...

  7. hadoop单节点windows 7 环境搭建

    前言 Windows下运行,通常有两种方式:一种是用VM方式安装一个,这样基本可以实现全Linux环境的Hadoop运行:另一种是通过Cygwin模拟Linux环境.后者的好处是使用比较方便,安装过程 ...

  8. centos6.3配置MFS服务器

    一.简介 MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的不同服务器上,支持FUSE(用户空间文件系统Filesystem in Userspa ...

  9. Spring学习5-Spring整合JDBC及其事务处理(注解方式)

    一.整合的步骤   1.步骤一:首先要获得DataSource连接池(推荐使用B方式): 要对数据库执行任何的JDBC操作,需要有一个Connection.在Spring中,Connection对象是 ...

  10. php中图片文件的导入,上传与下载

    ---------------------------------------------图片的导入-------------------------------------------------- ...