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 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
随机推荐
- 快速安装 GitLab 并汉化
转载:http://www.jianshu.com/p/7a0d6917e009
- hdu1231 最大连续子序列
#include<stdio.h> #include<string.h> #define maxn 10010 int a[maxn],dp[maxn]; int main() ...
- Spring-涉及到的设计模式汇总
1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. ...
- Java设计模式-组合模式(Composite)
组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图: 直接来看代码: public class TreeNode { private String name; private ...
- windows搭建openacs编译环境
1.下载ant工具用来编译openacs源码 apache-ant-1.8.2 下载地址http://ant.apache.org/ 这个文件不用编译,在目录bin/下有针对windows的ant 2 ...
- iOS项目开发知识点
前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在 ...
- POJ2392Space Elevator(贪心+背包)
Space Elevator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9970 Accepted: 4738 De ...
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
近段时间做项目,在项目使用了ajax技术,遇到了一个奇怪的问题:"$.ajax返回的JSON格式的数据无法执行success",代码是这样写的: 1 $.ajax({ 2 .. 3 ...
- JavaScript的apply和call方法及其区别
参考资料: http://blog.csdn.net/myhahaxiao/article/details/6952321 apply和call能“劫持”其他对象的方法来执行,其形参如下: apply ...
- linux文件系统模拟
#include "stdio.h" #include <stdlib.h> //#include <conio.h> #include <strin ...