本文转载自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. 史上最全的javascript知识点总结,浅显易懂。

    来源于:http://blog.csdn.net/qiushi_1990/article/details/40260471 一,认识javascript1-1为什么学习JavaScript一).你知道 ...

  2. ansible 的组件inventory

    P44 Ansible 的默认的inventory的是一个静态的ini格式的文件/etc/ansible/hosts. 我们还可以通过ansible_hosts环境变脸指定或者运行ansible和an ...

  3. Java基础-四要素之一《封装》

    封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保 ...

  4. BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2269 Solved: 1136 [Submit ...

  5. codevs1500 后缀排序

    题目描述 Description 天凯是MIT的新生.Prof. HandsomeG给了他一个长度为n的由小写字母构成的字符串,要求他把该字符串的n个后缀(suffix)从小到大排序. 何谓后缀?假设 ...

  6. BZOJ2301 莫比乌斯反演

    题意:a<=x<=b,c<=y<=d,求满足gcd(x,y)=k的数对(x,y)的数量         ((x,y)和(y,x)不算同一个) 比hdu1695多加了个下界,还有 ...

  7. TYVJ1000 A+B problem [存个高精模板]

    A+B Problem! 通过模拟我故乡非洲的计算方式,我们很快可以解决这道题. #include<iostream> #include<cstdio> #include< ...

  8. Erlang之父的学习历史及学习建议

    当我开始学习编程的时候(1967年),我可以在 FORTRAN 和(传说中的)Algol 之间选择,不过没有任何人了解 Algol,所以我选择了 FORTRAN. 在我最早学习编程的时候,我的编程周期 ...

  9. chroot详解

    我是一个刚接触 Linux 和 Unix 的新手.我该如何改变一个命令的根目录?我要怎样改变一个进程的根目录呢,比如用 chroot 命令将web服务与文件系统隔离?我要如何使用 chroot 恢复密 ...

  10. Spring学习7-Spring整合Hibernate

    一.Springl为什么要整合Hibernate   二者的整合主要是把hibernate中核心的一些类型交给spring管理,这些类型主要包括sessionFactory. transactionM ...