【Petri网导论学习笔记】Petri网导论入门学习(五)—— 1.3 库所/变迁系统与加权Petri网

导航

1.3 库所/变迁系统与加权Petri网

库所/变迁系统 (简称P/T系统)(Place/Transition)在原型Petri网 上增加了 S S S上的容量函数和 F F F上的权函数。

增加这两个函数可以对一些实际系统建模更加方便。

定义1.10

六元组 Σ = ( S , T ; F , K , W , M ) \Sigma=(S,T;F,K,W,M) Σ=(S,T;F,K,W,M) 称为一个库所/变迁系统(place/transition system) ,其中

1 ) ( S , T ; F ) ( S, T; F) (S,T;F) 是一个网,
W : F → { 1 , 2 , 3 , ⋯   } W:F\to\{1,2,3,\cdots\} W:F→{1,2,3,⋯}称为权函数(weighted function)

K : S → { 1 , 2 , 3 , ⋯   } K:S\to\{1,2,3,\cdots\} K:S→{1,2,3,⋯}称为容量函数(capacity function)

M : S → { 0 , 1 , 2 , ⋯   } M:S\to\{0,1,2,\cdots\} M:S→{0,1,2,⋯} 是 Σ \Sigma Σ的一个标识,满足条件:
∀ s ∈ S : M ( s ) ⩽ K ( s ) \forall s\in S:M(s)\leqslant K(s) ∀s∈S:M(s)⩽K(s)

W , K , M W,K,M W,K,M均是一个映射

其中

W W W是流关系上代表需要几个token或者产生几个token的情况

K K K是库所上的容量函数 ,代表该库所 s s s最大能容纳几个token

M M M是库所上的一个标识,所有库所上的标识个数都应小其容量函数的值

2) Σ \Sigma Σ满足变迁发生规则

a)对于 t ∈ T , M [ t > 的条件为 t\in T,M[t>\text{的条件为} t∈T,M[t>的条件为
∀ s ∈ ∙ t   :   M ( s ) ⩾ W ( s , t ) ∀ s ∈ t ∙ − ∙ t   :   M ( s ) + W ( t , s ) ⩽ K ( s ) ∀ s ∈ t ∙ ∩ ∙ t   : M ( s ) + W ( t , s ) − W ( s , t ) ⩽ K ( s ) \begin{aligned}\forall s\in^{\bullet}t\::\:M(s)\geqslant W(s,t)\\&\forall s\in t^{\bullet}-^{\bullet}t\::\:M(s)+W(t,s)\leqslant K(s)\\&\forall s\in t^{\bullet}\cap^{\bullet}t\::M(s)+W(t,s)-W(s,t)\leqslant K(s)\end{aligned} ∀s∈∙t:M(s)⩾W(s,t)∀s∈t∙−∙t:M(s)+W(t,s)⩽K(s)∀s∈t∙∩∙t:M(s)+W(t,s)−W(s,t)⩽K(s)

如果变迁 t t t能够在 M M M上发生:

S S S是 t t t的前集, s s s的标识应大于 等于 s s s到 t t t的边的权函数才可以发生

对于 t t t的后集但不是前集 s s s, s s s中已有的标识加上通过变迁发生增加的标识应小于库容量函数

对于既是 t t t的前集也是后集 s s s,所有 s s s中的标识减去发生流需要的标识加上输入流增加的标识应小于库容量函数

满足以上才可以发生,或者说 t t t在 M M M上有发生权

b)若 M [ t > M ′ , 则对 ∀ s ∈ S , M[t>M^{\prime},\text{则对 }\forall s\in S, M[t>M′,则对 ∀s∈S,
M ′ ( s ) = { M ( s ) − W ( s , t ) ,   若   s ∈ ∙ t − t ∙ M ( s ) + W ( t , s ) ,   若   s ∈ t ∙ − ∙ t M ( s ) + W ( t , s ) − W ( s , t ) ,   若 s ∈ ∙ t ∩ t ∙ M ( s ) ,   其他 \left.\begin{aligned}\\&M^{\prime}(s)=\left\{\begin{array}{l}M(s)-W(s,t),\:\text{若}\:s\in^\bullet t-t^\bullet\\M(s)+W(t,s),\:\text{若}\:s\in t^\bullet-^\bullet t\\M(s)+W(t,s)-W(s,t),\:\text{若}s\in^\bullet t\cap t^\bullet\\M(s),\:\text{其他}\end{array}\right.\\\end{aligned}\right. M′(s)=⎩ ⎨ ⎧M(s)−W(s,t),若s∈∙t−t∙M(s)+W(t,s),若s∈t∙−∙tM(s)+W(t,s)−W(s,t),若s∈∙t∩t∙M(s),其他

如过 M M M发生了变迁 t t t到达了 M ′ M' M′状态,对于所有的库所的状态转移方程

如果 s s s是变迁 t t t的前集而非后集,则减去所需要发生的token

如果 s s s是变迁 t t t的后集而非前集,则加上所新产生的token

如果 s s s既是变迁 t t t前集的前集与后集,则减去所要消耗的token加上新产生的token

原型Petri网的比较:

原型Petri网的变迁发生规则:只需要考虑前置库所token是否满足

P/T系统变迁发生规则:不只是需要考虑前置库所token是否满足,还需要考虑后续的库所容量是否能够接收

P/T系统组成

一个P/T系统由以下五个部分构成:

  • $ S $:库所的集合。
  • $ T $:变迁的集合。
  • $ F $:流向关系的集合。
  • $ K $:库所的容量函数,规定每个库所可以容纳的最大标识数。
  • $ W $:边的权重函数,规定每个边的权重。
  • $ M $:标识,表示系统当前状态。
原型Petri网
  • 原型Petri网是一种特殊的P/T系统,遵循特定的规则。
  • 这些规则确保系统在特定条件下的行为是可以预测和分析的。

当我们用一个 PT 系统对一个实际系统建模时,五元组 ( S , T ; F , K , W ) (S,T;F,K,W) (S,T;F,K,W)描述系统的

结构,标识 M M M反映系统的状态。五元组 ( S , T ; F , K , W ) (S,T;F,K,W) (S,T;F,K,W)称为 P/T 系统的基网。

对于一个 P/T 系统 Σ = ( S , T ; F , K , W , M ) \Sigma=(S,T;F,K,W,M) Σ=(S,T;F,K,W,M) ,若规定
∀ s ∈ S : K ( s ) = ∞ ∀ f ∈ F : W ( f ) = 1 \forall s\in S:K(s)=\infty\\\forall f\in F:W(f)=1 ∀s∈S:K(s)=∞∀f∈F:W(f)=1

那么,Σ就变成一个原型 Petri 网。从这一点看,原型 Petri 网似乎是 P/T 系统的一个子类。

然而,P/T 系统并不比原型 Petri 网有更强的模拟能力。凡是可以用 P/T 系统对其建模的实际系统,也可以用原型 Petri 网 对其建模。因为每一个 P/T 系统都可以转换 为一个行为等效 的 Petri 网。下面通过一些直观解释对此加以说明。

对于一个 P/T 系统

Σ = ( S , T ; F , K , W , M 0 ) \Sigma=(S,T;F,K,W,M_{0}) Σ=(S,T;F,K,W,M0)

P/T系统与Petri网的转化示例

1)如果 Σ \Sigma Σ 中的一个库所 s s s 有容量函数 K ( s ) = 2 K(s) = 2 K(s)=2,如图 1.12a 所示,为取消该容量函数 的限制,可以用图 1.12b 的结构代替。显然图 1.12b 的结构所在的网系统的运行过程中,对每个可能产生的标识 M M M,都有 M ( s ) ≤ 2 M(s) \leq 2 M(s)≤2。

原型Petri网的库所容量是无限 的,且在变迁发生之前,所有的前集库所都至少有一个token。所以在这里b图中s发生两次则下方新加的库所token全部消耗,则无法继续发生除非s库所往后发1生,给下方的库所增加token。

2)如果 Σ \Sigma Σ 中有一条有向边 f = ( t , s ) f=(t,s) f=(t,s),其权值为 W ( f ) = 3 W(f)=3 W(f)=3,如图 1.13a)所示,为了消除该有向边上的权值,可以用图 1.13b) 的网结构来代替。只要我们把新添加的库所和变迁看作辅助元素(即它们不与被模拟系统的任何部件对应),那么变迁 t t t 的发生所引起库所 s s s的标识变化是等效的。

相较于库所发出多条边,只能选择1条路进行发生,而变迁所对应的3条边是一起改变的。

pos_id=img-tnlriZZs-1729235696993)

3)如果Σ中有一条有向边 f = ( s , t ) f=(s,t) f=(s,t),其权值为 W ( f ) = 2 W(f)=2 W(f)=2,如图 1.14a)所示,那么图 1.14b) 的 Petri 网结构可以实现与之相同的效能。

b图中的结构保证了s中有两个的话依次发生上面的变迁下面的变迁你请安这样对应到t两个都可以发生

当我们把 Σ 中每一个带容量限定的库所和每一条加权的有向边都进行相应的取代之后,PT 系统 Σ \Sigma Σ就被改造成为一个原型 Petri 网 Σ ′ = ( S ′ , T ′ ; F ′ , M 0 ′ ) \Sigma^\prime=(S^{\prime},T^{\prime};F^{\prime},M_0^{\prime}) Σ′=(S′,T′;F′,M0′) 。它们之间满足关系

S ⊆ S ′ , T ⊆ T ′ , M ′ ( s ) = M ( s ) , 当 s ∈ S \begin{aligned}&S\subseteq S^{\prime},\quad T\subseteq T^{\prime},\\&M^{\prime}(s)= M(s),\quad\text{当}s\in S\end{aligned} S⊆S′,T⊆T′,M′(s)=M(s),当s∈S

通过上面转化的例子可以得知,我们在转化的过程中会添加库所和变迁以保证带有容量限制,故P/T系统的库所和变迁是对应原型Petri网的子集,但对应原P/T系统的库所其标识状态相同

而且易知

1)对 Σ 运行过程中可能出现的每个标识 M , Σ ′ 的运行过程中都有一个可能出现 \text{1)对 }\Sigma\text{ 运行过程中可能出现的每个标识 }M\text{,}\Sigma^{\prime}\text{ 的运行过程中都有一个可能出现} 1)对 Σ 运行过程中可能出现的每个标识 M,Σ′ 的运行过程中都有一个可能出现的标识 M ′ M^\prime M′,使得对每个 s ∈ S s\in S s∈S都有

M ′ ( s ) = M ( s ) M^{\prime}(s)=M(s) M′(s)=M(s)

2)对 Σ \Sigma Σ运行过程中每个可以接连发生的变迁序列 σ ∈ T ∗ \sigma\in T^* σ∈T∗,在 Σ ′ \Sigma^\prime Σ′的运行过程中都有一个可以接连发生的变迁序列 σ ′ ∈ T ′ ∗ \sigma^\prime\in T^{\prime*} σ′∈T′∗,使得从 σ ′ \sigma^\prime σ′中删去 T ′ − T T^{\prime}-T T′−T中的元素后,得到的子序列恰好是 σ \sigma σ。

对于一个 P/T 系统,如果规定各个库所的容量都为无穷大,即取消库所集上的容量函数而保留有向边集上的权函数,就得到一种介于原型 Petri 网和 P/T 系统之间的网系统模型 Σ = ( S , T ; F , W , M ) \Sigma=(S,T;F,W,M) Σ=(S,T;F,W,M)。称这种模型为加权 Petri 网(weighted Petri net)。加权 Petri网的变迁规则为:

1)对于 t ∈ T , M [ t > t\in T,M[t> t∈T,M[t>的条件为(1.21)式;

2)若 M [ t > M ′ ,则根据(1.26)式从 M 计算 M ′ 。 ] M\left[t>M^{\prime}\text{,则根据(1.26)式从}M\text{ 计算 }M^{\prime}。\right] M[t>M′,则根据(1.26)式从M 计算 M′。]

K ( s ) = K(s)= K(s)= W ( s ) W(s) W(s)不变 → 加权Petri网

原型Petri网→加权Petri网→P/T系统

( S , T ; F , M ) (S,T;F,M) (S,T;F,M)→ ( S , T ; F , M , W ) (S,T;F,M,W) (S,T;F,M,W) → ( S , T ; F , K , W , M ) (S,T;F,K,W,M) (S,T;F,K,W,M)

相关推荐
南宫生2 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__2 小时前
Web APIs学习 (操作DOM BOM)
学习
冷眼看人间恩怨2 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
数据的世界014 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐4 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO7 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A7 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒7 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash38 小时前
提升专业素养的实用指南
学习·职场和发展
Hejjon8 小时前
SpringBoot 整合 SQLite 数据库
笔记