1.先创建平面petri网
创建如下petri网:
CPN ide创建petri网真的舒服很多,但是教程又是CPN Tools的,我的想法是看两个版本能不能互通,在前者创建,在后者运行学习。
新增定义:
colset E = unit with e;
但是很明显我想的有点天真:(但是这个在tools中新建号也会报这个错,为啥呢?)
从详细的平面网络构造分层Petri net所需的工具:
(1)视图(2)层次结构(3)模拟
用替代变迁来代替petri网中的一部分。
2.替代变迁
用变迁表征网结构中的某一整块是层次网中常用的一种方法,利用这种方法使得包含上述变迁网络从逻辑上得到简化。这样一种变迁就叫做替代变迁。
替代变迁根本上没有增加任何新的东西。利用替代变迁可以做的操作同样也可以利用融合库所fusion places 的方式来实现。但是类比于融合库所,替代变迁显得更方便、有用,它可以区分出建模上的可行性和整体不可行性上的不同。
3.创建分层petri net
(1)将视图中的第四个(创建新组)工具应用到net上
应用之后透明度会全部降低
(2)将视图中的第五个(选择组内元素)工具,将属于一个组元素进行选中。注意在这些选择之外,之后有一个输入或输出连接到这些节点。
要选择正确的节点组合,替代变迁才能起作用!
为什么选中这些,如果正确选择节点组合?
(3)利用分层托盘中的第一个工具,将选中部分发送到子页面,并将其替换为替换过渡。
应用到net中后,之前选中的组合结构已经消失了,被一个双倍的过渡给替换了。这个双层就叫替换过渡。可以进行重命名。
(4)再索引中可以找到并打开子页面。
观察发现子页面中,比之前选中的组合中,多出P2,P3,P7,这三个节点叫做端口节点,P2,P3叫做输入端口,P3叫做输出端口。分别标记有IN和OUT,是连接到父页面的节点!
(5)在父页面放置令牌,触发转换T1,看看会发生啥
T1执行完之后,令牌转移到P2和P3,同时双层替代变迁也显示绿框,这就表示在该替代的子页面中,至少触发了一个转换。
此时进入这个子页面就会发现输入端口分别有对应的相同令牌,T2已经被触发。
总结:为了隐藏网络的某些部分,我们创建了一个组,我们用替换过渡替换这个组,分层或不分层都具有相同的运行结果和行为,都是具有相同的连接性的,唯一的区别就是PN以分层的方式,将一些详细的连接放在子页面中了。
(6)取消分层
用分层托盘中的第二个工具,作用是用它的子页面替换替换过渡,相当于取消原来的替换。
将这个工具作用到section_1这个替换过渡上,就回到了原来平面PN状态。
net左下角可以选择none恢复到最初的透明度。