当前课程知识点:Petri网:模型、理论与应用 >  第四章 网论 >  4-10 实例与方法——电梯控制 >  第二部分

返回《Petri网:模型、理论与应用》慕课在线视频课程列表

第二部分在线视频

第二部分

下一节:第三部分

返回《Petri网:模型、理论与应用》慕课在线视频列表

第二部分课程教案、知识点、字幕

那么有了这个实例以后我们来看看

电梯怎么样

电梯只能一层一层的上

这才是电梯运行系统的变迁

从一层跨层的这个运行在实际当中是存在的

从一层一直到了五层我再停这个是存在的

但是这个不具有原子性

因为如果在二层三层四层有人需要下

或者有人需要它一定要停下来

所以我们要设计的这个系统

必须是有原子性的变迁组成

所以我们必须要找

找的是

上升一层下降一层的这些变迁它的外延

因此直接的楼层button或梯内button

不能作为它直接的外延

比方说这个第五层的这个梯内button

你如果在第二层的话不能够直接把五层

作为从二层上升到三层的外延

你要到五层来就要求它

先到三层 再到四层 再到五层

所以我们需要分解这个已经按下去的button

我们这个分解的这个变迁呢我们就叫req

那么分解以后呢就是叫做u_req

u_req(k)就要求这个电梯

从下一层上升到这个k层

好现在我们来看看怎么来分解这个按钮

注意在我们分解按钮的时候

刚才我讲了在你上升方向读到Fd(11)的时候

你还要回过头来为它提供服务

因为你停在十一层上升方向没有完成服务

我要留个记号在这

这个Fd(11)是我已经看到了

我会提供服务的

但是我现在还没有完成服务

其他的电梯如果是下降方向从这过的话

你要顺带给他服务点

因为这样就避免过而不停了对不对

所以我要留一个记号给别的电梯

告诉它说这个钮我已经读了

我会来提供服务

但是如果你从这儿过的话你的方向也是下

请你顺带先为他服务

就写的是Fd'(i)

Fd'(i)只供其他的电梯下降的时候顺带服务

而别的电梯如果没有活来找活的时候看不到

因为这个按钮已经有电梯承诺会来服务了

为了减少这个空驶说别的电梯就看不到它了

不需要额外好几部电梯都来为这一个button提供服务对吧

所以这个Fd'这个目的我们需要这样一个库所

来留下一个记号

同样Fu'(i)也是起着同样的作用

就是下降方向的电梯

读到楼层上升的button的话它也要做个记号

让别的电梯提供顺带服务

而它自己呢最终还会停到这

好有了这些必要的准备以后我现在来看怎么来分解

假定我们的电梯是停在第i层是上升的方向

那么这个j是比i大

就是在i层以上的这个楼层

这个L(j)就是这个电梯里面的button

这个j是大于i的

为了提供L(j)所要求的服务

我们必须要这个电梯先升到i+1层

再升到i+2层

最后一直升到第j层

然后停在j层

所以这个u_req(i)+u_req(i+1)+...u_req(j)+u_stop(j)

这就是一个梯内button所分解出来的

具有原子性的库所元素

同样的我们可以来分解这个Fu

Fu呢也是一样的一层一层的上来

然后停在第j层

Fd也一样一层一层上来

停在这儿但是要留下一个记号

就是这个Fd'(j)

说我已经读过了

你们顺便可以服务

但是读呢你们读不到了

大家注意这个分解的最后都有一个stop(j)

也就是说这个电梯

只要找到活以后它最后一定会停下来

不会说冲顶了

一层一层上去没有人让它停

不会的

这个我们有一个u_stop 一定会让它停下来

好我们找了这些变迁以后

我们就要来找这几个变迁的外延了

升变迁 升一层停下来包括开门

然后关起来 然后改变方向

那么它们的外延是什么呢

好 我们看

相关的S元素刚才我们下面已经提到过了

u_at(i)是在i层升方向

U_open(i)就是门开了

然后U_halt(i)这是表示什么

要求在i层停下来

这个U_halt(i)是一个组合的

它由好几个库所组成

比方说哪些情况下要求它停在i层呢

比方说i层的楼层Fu按下去了那我要停

L(i)电梯里面的按了我要停下来

另外Fu'按了

说这个地方有人要上去

那我也要停下来顺带服务

所以呢这是我们这个需要的这几个库所

好这个图这就是几个上升一层up(i)

u_stop(i)就是停下来

然后u_close(i)这是关门

然后u_d这就是改变方向的变迁

所以我这个图里面一共有四个变迁

这四个便签变迁你看在U_halt那个地方

有一个什么呀 有一个约束弧

这是为什么呀

这个约束弧我先写在这

因为这是一个关键性的约束弧

如果你电梯到了i层以后

既需要你停又需要你再上一层

我们这个时候必须要先停下来

然后才能上升

否则的话你这个i层的服务你就没有完成

所以只有在没有停的需求的时候

这个电梯才直接上升到上一层

这是有冲突的对吧

因为它们共享u_at(i)这个状态元素

那么必须要这样解决

先让它上升这就出错了不能完成服务了

这种冲突呢叫做critical conflict

必须要这么解决只有这一种可能

所以我把它先画在这儿了

另外我们刚才讲的有七个变迁

为什么呢还有找活的三个变迁

我们没有写在这个地方

为了让大家看得清楚我们先给一个小图

然后把这三个要是加进去呢

我们就会得到一个更大的图

刚才我讲的第三步是什么

第三步是找到冲突消解冲突

刚才这个图里我们已经看到了

有冲突而且这个冲突是关键性的冲突

我们已经把消解方案搁进去了

免得疏忽了以后呢留下后患就不能够完成服务

我们看这个改变方向这个

它跟上升一层跟停下来是有冲突的

我就这个图上来看

它并没有其他的外延

因此它只要到了u_at(i)有token它就可以发生

这个呢改变方向这个变迁

它有很多的要求

必须要满足那些要求

这个冲突它才能够改变方向

如果我们把这些条件

加进去以后这个冲突就不存在了

为了使这个图简单一点好看一点

大家看得清楚一点所以我这个图上没画出来

但是你要注意到这是有冲突存在的

当我们把改向的这个变迁

它的外延全画出来出来以后

这个冲突就消失了 就没有了

好这张图呢就是把7个变迁全放在一起了

大家看这个

一个大圈里面有两个小圈的U_halt就是停在i层

因为我们知道U_halt不是一个库所

它是好几个库所用了一个统一的符号表示

它是由L(i)Fu(i)还有Fu'(i)组成的这个halt

还有一个u_stop

刚才我们不是说吗

在我们分解这个button的时候

都有一个u_stop作为终止的一个要求

就是你必须停下来

使这个U_halt有好几个元素组成

这个图没给出来

因为给出来就看不清楚了

另外这个大长框里头有三个小方框

三个框是找活的变迁

最上面一个是找楼梯内的button就是L(j)

只要j大于i哪一个j都行

只要里面有token

然后如果楼层里面没有

你看就跟第二个小方框它有一个约束弧

就表示电梯里面的button没有一个按的

那么这个时候我就读Fu

如果Fu也没有

那我就读Fd

所以L(j) Fu(m) Fd(k)

m k都是大于i在上层的

都必须要上层才能提供服务

这个u_at(i)就是在i层的这个库所呢

跟这三个找活的变迁

有一个箭头是双向的箭头联系的

也就是说它必须在这个状态下才能够去找活

但是这个状态不会改变

所以这样一来我们知道

这个电梯系统不能是一个基本网系统

因为基本网系统这个是不能发生的

只有在P/T系统也就是库所变迁系统

这个才是一个可以发生的变迁

另外u_d(i)那好像有轨电车一样有个小辫子对吧

一个约束弧但是它没有跟S元素连接

刚才说了这个S元素很复杂很多

我们下面会看到

这是表示这个改变方向是有条件的

这条件我这没给出来

目的就是为了让这个图不会太复杂

大家看不见了

好 我们来仔细的看一看

这三个找活的就是这个大长框里面的三个小框

这三个变迁是什么样的

这最左边的这个a图就是找这个叫做readL

就是找梯内button

它是有什么条件呢

第一它要在这i一层

第二上升一层就是这个u_req(i+1)里面没有token

就是我没有这个上升一层的需求

另外这个L(j)里面要有一个token

这个j是大于这个i的

在这个条件下我们就可以读到这个L(j)

读到L(j)以后我们怎么分解呢

就是写得u_stop

它一定要有一个stop来终止它

所以u_stop里会得到一个token

就是要求它停在第j层

另外一个u_req(i+1)一直到j

这不是一个库所

这是若干个库所

就是从j+1+2+3就刚刚我们分解的时候已经看到了

这表示在req(i+1)(i+2)(i+3)一直到(i+j)

都需要各有一个token

所以我们画简单的

就用一个库所代表的是若干个

这就是很容易理解吧

就是read 怎么叫read

没活了就是这个u_req(i+1)

没有token没活了

找活找到了

L(j)里面有一个token

这个按钮按下去了

然后我分解

分解成一个最后stop停在第j层

然后呢从i层上一层一直到j层

每层都有一个要求它上一层的要求

这就是readL

这个b给出的就是找Fu上升的button

跟这个第一个我不去细说一样

它只是要有一个额外的条件就是L

就是梯内button从i+1一直到m没有人按下来

所以我们这个u_req(i+1)没有

因为最左边底下的一个S元素写的是L(i+1,M)

也就是说i层以上楼梯里面的button都没有按下去

这个时候我才去读Fu

那么读完了以后当然就按照分解公式分解

分别放token在里面然后停stop

然后第三个呢

当然就是读Fd了

它要增加一个条件就是

在i层以上既没有L(j)也没有Fu(m)

这个时候我才读楼层上面下降的button

那么按照分解的需求我放上token

但是不要忘了我们还有个Fd'

这个呢也要放上一个token

这是我们留给其他电梯提供顺带服务的一个记号

这个呢就是改变方向的button

这个改变方向的button它的外延是什么呢

刚才我们前面说了它的外延比较复杂

你看上去这个图很简单啊

好像一共只有六个库所

其实每个库所它代表的有好多都是不止一个button

当然要想改变必须在U_at(i)

就是上升方向

我在这个i层

你才能改变成下降方向在i层

所以这个U_at(i)变成D_at(i)

条件是什么呢

第一没有活

就是这个U_req(i+1)没有活

第二没有梯内的button

就是左上角的这个L(i+1,M)都没有

你看这是个约束弧

都没有token

然后Fu(i+1,M)都没有token

然后Fd(i+1,M)也没有token

所以在这样的前提下我才改变方向

我没有现在能干的活

就是U_req(i+1)没有token

然后没有任何需要我上升提供服务的button

这个时候我就改变方向

所以你看我们每一个变迁局部确定原理

使得我们把目标集中在一个一个的变迁上面

我们可以很准确的把它们外延找出来

这一页写的是在这些图上的缩写公式

刚才我讲了就是这个u_req(i+1,j)

表示的是什么呢

那么多个u_req要上升一层上升两层上升到第j层

这就是这个缩写

我就不去细说了因为这个很容易读

我来读一遍也没有意思对吧

你看的时候或者是看书的时候

可以很容易就懂了

还有一个变迁我们刚才没有说

就是这个stop

stop其实很简单的一个对吧

就是在这一层有需要我停下来开门

但是你看啊

由于Petri网的确定性

就是每个变迁都有固定的外延

固定的发生条件

这样一来使得我们模拟器stop这个一个动作

就要用几个呢

要用五个变迁

我们刚才讲的一共有几个情况下让它停啊

一个是L(i)按下来了

楼梯里面有人要在i层停

Fu(i)按下来了

就是楼层上有人在这层想上去

需要你停下来

另外Fu'(i)

就是有人给我留下记号了

说这个地方有人想上去

你顺带给我提供一下服务

另外还有一个u_stop

这是我们在分解button的时候

有一个结尾的u_stop

那么仔细分析一下呢

我们可以把u_stop跟这个L(i)合并在一起

所以我这个图上的就u_stop就不出现了

因为就用这个L(i)取代了

这样一来就有三个

但是这个Fu和Fu'呢

它不可能同时成真

因为Fu如果有token的话

表示这个button还没有人去承诺过要来给它提供服务

而Fu'是有电梯承诺了会来提供服务

所以这两个是不可能同时有token的

因此这三个要求它停下来了

就有可能是单独的一个成真

这就是三个变迁

其中L(i)跟Fu两个成真

那就是第四个变迁

L和Fu'这是第五个变迁

所以那一共有五个变迁

所以你看

如果我们要把它按照Petri网的准确的外延来描述的话

它就会很复杂

所以这个Petri网的确定性也带来了麻烦

就是这个元素太多

旁边那个图很简单

就是用Cyber net自控网系统

你看每个L(i) Fu(i) Fu'(i)上面都有一个特殊的权函数

就是它自己

说L(i)里面有几个token就拿走几个

Fu里面有几个token就拿走几个

有就拿没有就拉倒

Fu'有没有

有就拿走没有拉倒

但是这有个条件

这三个这种可变的权

必须要至少有一个有token这个变迁才能发生

但是哪个有 随便

只要有一个有就行了

你凡是有的我就拿掉 没有拉倒

所以这样就把这五个变迁变成一个变迁了

这就是Cyber net提高一点点层次

它的优点就克服了

Petri网确定性的外延带来的变迁多这个毛病

好这样一来你看我们有了一个完整的图

有了一个所有的变迁自己的外延的图

我们的设计呢就完成了

那么再把它连在一起的时候你注意去消解冲突

那么这里还有几个细节我没提到

这个地方比方说你这个电梯在第七层

我在第二层要下去或者我在第三层要下去

我着急的很我恨不得马上就飞下去

结果我就按那个楼层上的button

按了一次看着还不来

我再按一次

有的性子急的人可能咕嘟咕嘟按好几次

这个动作我们怎么在Petri网里面表达出来

你是按一次给一个token按一次给一个token吗

那我们这个楼层button里面都要有多少个token啊

我到时候我知道它要提供几次服务啊

所以这个不行

只能让它有一个token

怎么处理它

这是一个我们刚才在细节里面没有提到的

另外一个假定我这个电梯就在这一层

我刚关上门有人按了怎么办呢

门开开

我刚关上又有人按了

我门又开开

那么如果有人开玩笑或者有人闹恶作剧

他就不让你这电梯走看你关门马上就按

看你关门我也不上

怎么办

我们这电梯就听他摆布吗

那么怎么处理

所以这个呢也是一个细节

我的书里有

我这就不提了

引进细节以后呢

就会引进新的S元素

这样一来这个变迁的外延就会复杂一些

那么而且会引进新的冲突

那么我们注意消解冲突就是了

好到了这里

我们这一个一个的外延找清楚了

把它组合在一起了

我们也引进细节了

最后呢也找到冲突 消解了冲突了

这样一来我们这个电梯的运行系统就完整了

第四步

我们来分析它是不是符合我们的设计要求

首先就是安全性

电梯最重要的是安全性

第一条性质这个是叫做⊕

圆圈里面有个加号就叫做按位加

或者叫做排他性的O

前两行就表示什么呢

电梯只能处在一个状态

要么是在某一层上升状态

要么在某一层下降状态

或者在某一层上升状态门开着

或者在下降方向在某一层门开着

只能在某一个状态

或者上升或者下降或者关着门或者开着门

所以这许许多多状态里面它只在一个状态

就不会混乱

另外我们每分解一个button

都有一个stop来停下来

所以不会有电梯运行起来以后不知道停

所以这也是安全性

另外安全性分析了

什么叫有求必应呢

就是如果你停在某一层

而它的上层有电梯里面的button按了

或者楼层里面的上升的方向按了

那么这个电梯一定会到那一层把门打开提供服务

所以这就是为上升button提供服务

假定你在上升方向处在i层

但是上层的这个下降的方向楼层的button按下去了

比方说刚才讲了你在第八层上升方向

十一层的下降方向的电梯那个楼层button按下去了

这个时候我们要证明

这个电梯一定会最终停在十一层下降方向把门打开

这个Fd(11)是不是就服务了

下降方向开着门停在十一层

所以这就是能够有求必应

所以我们证明了这个性质以后

这电梯就符合要求了

Petri网:模型、理论与应用课程列表:

第一章 概述

-概述

--Video

第二章 有向网

-有向网

--Video

第三章 Petri网

-3-1 Petri网定义

--Video

-3-2 Petri网层次系统

--Video

-3-3 基本网(EN)系统

--第一部分

--第二部分

--第三部分

--第四部分

-第三章 Petri网--3-3 基本网系统课后思考题

-3-4 条件-事件(C-E)系统

--Video

-第三章 Petri网--3-4 条件-事件系统课后习题

-3-5 库所-变迁(P-T)系统

--Video

--Video

--Video

--Video

--Video

-3-5 库所-变迁(P-T)系统课后习题--作业

-3-6 网系统层次

--Video

-3-7 高级网系统

--Video

-3-8 化简网系统

--Video

-3-9 非线性网系统

--Video

-3-10 小结

--Video

第四章 网论

-4-1 前言

--Video

-4-2 网拓扑

--Video

-4-3 并发论

--Video

-4-4 网逻辑

--Video

-4-5 信息流网

--Video

--Video

-4-6 同步论

--Video

--Video

-4-7 同步论-合同实例

--Video

-4-8 同步论-婚礼教堂实例

--Video

-4-9 同步论 同步器

--Video

-第四章 网论--思考题1

-4-10 实例与方法——电梯控制

--第一部分

--第二部分

--第三部分

--第四部分

-4-11 建模方法论

--Video

-4-12 汉诺塔问题

--第一部分

--第二部分

-第四章 网论--思考题2

第五章 业务流程管理

-5-1 工作流管理联盟

--Video

-5-2 工作流网(WF_net)

--Video

-5-3 Artifacts

--Video

-5-4 BPMN2.0

--Video

-5-5 学界

--Video

-5-6 业务流程管理(BPM)

--Video

-5-7 BPM建模

--A of ARM

--R of ARM:物理对象相关性

--R of ARM:同步器回顾

--R+M of ARM:业务逻辑

--M of ARM:化简规则

--R+M of ARM:案例语义

--R+M of ARM:管理逻辑

--M of ARM:BPMA

-5-8 流程举例

--第一部分

--第二部分

-5-9 流程之外

--Video

-Petri网小结

--Video

--Video

第六章 过程挖掘

-6.1 过程挖掘基础

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-6.2 过程挖掘工具

--Video

--Video

-6.3 过程挖掘算法介绍

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-6.4 未来研究方向

--Video

第七章 科研思考

-7.1 科研三要素

--Video

-7.2 Program today

--Video

-7.3 Program yesterday

--Video

-7.4 Theory of Programming

--Video

-7.5 A of ARM

--Video

-7.6 R of ARM

--Video

-7.7 M of ARM

--Video

-7.8 OESPA

--Video

-第七章 科研思考--习题

第八章 总结

-8.1 树个靶子

--Video

-8.2 八卦与自然

--Video

-8.3 结束语和感谢

--Video

-第八章 总结--习题

第二部分笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。