Petri网-简单程序设计

介绍Petri的元素:

(1)库所place圆形节点

(2)变迁transition0):方形节点

(3)有向弧(connection):库所与变迁之间的有向弧线

(4)托肯token库所中的动态对象,可以从一个库所移动到另一个库所

Petri网规则:
    如果某一个变迁的所有前驱库所都有托肯,则这个变迁满足发射条件;变迁发射时,从它所有的前驱库所里分别取出1个托肯,同时往它所有的后继库所里面分别放置1个托肯,以此类推

Petri网-简单程序设计_第1张图片如图:图中变迁"1"不满足发射条件,由一个前驱库所中托肯数目为0.

    有两个或多个变迁都被允许的可能,但是一次只能发生一个变迁。随机数确定发生的变迁
    如果出现一个变迁,其输入库所的个数与输出库所的个数不相等,令牌的个数将发生变化,即就是,消耗托肯数目=前驱库所数目-后继库所数目

两个变迁争夺一个托肯的情形被称之为冲突。当发生冲突的时候,由于Petri网的时序是不确定的,因此具体哪个变迁得以发生也是不确定的。实际应用中,往往需要避免这种情形。用于描述现象的Petri网也可能自然出现冲突,这表明我们对于变迁发生的条件没有完全了解。

Petri是静态的,也就是说,不存在发生了一个变迁之后忽然冒出另一个变迁或者库所,从而改变Petri网结构的可能。 Petri网的状态由托肯在库所的分布决定。也就是说,变迁发生完毕、下一个变迁等待发生的时候才有确定的状态,正在发生变迁的时候是没有一个确定的状态的。
编程:
Place类(库所):序号,托肯数目
Transition类(变迁):序号,前驱库所数组,后继库所数组
Main主程序:全局变量:Petri网中的Place数组和Transition数组
      a.初始化Place数组;
      b.初始化Transition数组;
      c.判断当前状态下是否存在满足发射条件的变迁,并随机选择一个满足发射条件的变迁执行d;
    d.对一个指定的变迁进行发射,内容是将这个变迁的所有前驱库所中的托肯数目均减1,所有后继库所中的数目均加1,消耗的托肯数目是前驱库所数目-后继库所数目,完成
      e.若要继续进行c

你可能感兴趣的:(Petri网-简单程序设计)