- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Petri网模型到程序代码转换的研究
Petri网模型到程序代码转换的研究
程冬玲
华北电力大学计算机科学与技术学院,河北 保定 071003
e-mail: chdongling@163.com
摘要:作为图形数学建模工具,Petri网已得到了广泛应用,但目前的Petri网工具主要用于系统的建模、分析和仿真,很少涉及Petri网模型到程序代码的转换,一般都需要人工来实现代码的编写。在Petri网图形工具中实现Petri网模型到代码的自动转换可以大大简化系统实现。文章研究了Petri网模型到程序代码的映射规则,用面向对象方法建立了Petri网工具,运用映射规则加以应用实现整体转换,并以制造报文规范中的域调用模型为例对该方法进行了验证。
关键词:Petri网 程序代码 映射规则 转换
引言
Petri网既是一种图形工具又是一种数学工具,用于描述条件和事件间的关系。目前,Petri网技术已被广泛应用于离散事件系统的建模和仿真、通信协议的分析和验证等方面。为简化系统建模和分析,已开发出多种Petri网工具和软件包,但它们多用于系统的设计、分析和动态仿真,很少涉及系统代码的实现。而UML在对系统进行建模分析后,能够通过RationalRose等软件实现代码。Petri网比UML具有更形式化的严格性、能够仿真系统的动态特性,因而在用Petri网建模后,能够通过工具实现系统代码很有意义。本文研究了Petri网到程序代码的基本映射规则,利用面向对象方法建立了Petri网工具,并利用组件技术对映射规则加以应用,实现基本的库所/变迁网的代码自动转换。
2. Petri网
2.1 Petri网定义
使用最简单的库所/变迁Petri网,并假定Petri网中每个库所最多含有一个托肯。现将用到的Petri网相关属性做如下定义:
Petri网是满足以下条件的三元组(P;T;F):
-P为库所的有限集;
-T是变迁的有限集,且P∩T =Φ,P∪T≠Φ;
-弧集F(P×T)∪(T×P),F表示流关系。
库所p是变迁t 的输入库所当且仅当从p到t存在有向弧。库所p是变迁t的输出库所当且仅当从t到p存在有向弧。相应的输入变迁和输出变迁类似定义。
一个结点的输入库所或输入变迁的集合称为其输入集。输出集定义类似。
变迁t是使能的当且仅当它的输入集中每个库所p都含有一个托肯。
变迁激发:每个使能的变迁都可激发,变迁激发时从其每个输入库所中消耗一个托肯并在其每个输出库所中产生一个托肯。
Petri网中,初始状态时至少有一个库所中含有托肯,即至少有一个变迁是处于使能状态的。变迁的激发会引起托肯的转移,使其他变迁处于使能状态,从而能够按照变迁之间的关系激发。
2.2 Petri网的面向对象设计
Petri网包含库所和变迁两类结点,分别用类Place和Transition实现。库所和变迁作为不同类型的结点,有共同的属性特征如ID号、位置、输入集和输出集等,将其抽象定义结点Node类,类Place和Transition分别由Node类派生而来。类Node定义为:
Class Node{
String ID, Name, description;
Point position; //具体位置
Node [] prepost;//输入输出集}Class Place :: Node{
int tokens; //所含托肯数}
变迁除静态属性外,还有激发的动态行为。Transition类定义了使能状态、变迁的使能判定和激发函数。
Class Transition :: Node{
Place[ ] pre, post
Boolean enabled, fired; //变迁是否已激发 public Boolean enabled(Transition t) //使能判定函数,满足条件返回true否则false。
{ if(each p in t.pre has one token)
t.enabled=true;
else t.enabled=false;
return t.enabled;}
public void fire( Transition t) //变迁激发函数,改变相应托肯数并设置激发状态。
{ foreach(Pi in t.pre[])
Pi.tokens--;
foreach(Pj in t.post[])
Pj.tokens++;
t.enabled=false;
t.fired=true;}}
除库所和变迁外,Petri网还包含连接弧,它不仅具有ID等一般属性,还有特有属性-起点、终点和权值。弧的起点和终点分别来自Place类和Transition类,但
文档评论(0)