当前课程知识点:Petri网:模型、理论与应用 > 第三章 Petri网 > 3-9 非线性网系统 > Video
到现在我介绍完了
EN系统 P/T系统 高级网系统以后
属于Petri网的
网系统模型的一部分就没有了
Cybernet它是一个非线性的网系统
这个我还没搞清楚
哪些部分怎么就不合适了
这是Petri说的话我记住
我跟大家交代在这儿
但是我自己没仔细的去推敲这句话
就是Cybernet
它是非线性系统这个很清楚
理论部分为什么不实用
什么情况下不实用
这个我没有去推敲
你要有兴趣自己可以去研究研究
就Cyberne改变的其实很简单
咱们讲的权函数上面不是一个常数吗
你不管这个常数你是用谓词变迁系统来表示也好
你是用有色网系统也好
它消耗的资源的个数和种类始终是一样的
是一个常数
所以那个是线性系统
非线性系统呢就是允许它是可变的
我这个权呢在这个状态下我是1
在那个状态下我是2
在那个状态下我是3
不是一个固定的常数
所以这就是一个非线性的系统
那么怎么给出这个非常数呢
我们就用S元素来表示
所以这个弧上面的权
可以是个S元素的名字
或者说用一个小圆圈
把那个弧从那个库所引导到这条弧上
就表示这个库所就是我这个弧上面的权
也就是说这个弧上面的权
就是一个S元素的名字
什么意思呢
如果你在一个标识下面来考虑
这个变迁是不是可以发生
这个时候的权就是
当时在这个状态下S元素里面
有几个token那个权就是几
因为S元素里面的token数是在变化的
所以权也是在变化
这个变化是由系统在运行当中改变的
所以它是一个非线性的系统
我们下面看个例子
比方说这个
这是将来我们要讲的
电梯系统的一部分
这是什么部分呢
这个是表示这个电梯
是在上升方向处在i这一层
这个箭头这个符号是不需要的
应该是一条横线就表示u
一横线然后at
u表示是up上升方向
at是处于第i层楼
如果这个电梯在第i层楼处于上升的方向
你现在电梯里面这个l(i)
就是电梯里面的那个Button
说我要在第i层楼停下来
我要到第i层楼
Fu(i)是我在第i层
我要往上走我按了这个
所以这Fu(i)里面的token表示已经按下了
在楼层上面按下了上升的Button
那么这个Fu(i)里面就有一个token
如果我们用P/T系统来描述
这个电梯在i层要停下来开门
然后让人上或者下呢
就需要三个变迁
这三个变迁是什么
第一个最上面的一个是说
电梯里面有人要在i层下
但是楼层上没有人按
所以是一个约束弧这个地方
第二个是说楼层上也有人要上电梯 上去
电梯里面也有人要下来在这个i层
第三个变迁是说电梯里面没有人要下来
但是楼层上面有人要上去
所以在这三种情况下
我这个电梯都得在i层停下来开门
这个就是开门
如果我们用传统的
线性的Petri网系统
你得用三个变迁来描述
分别的描述
三种不同的情况
这个地方有一个token
落在网系统的外面了
这表示什么呢
楼层上有一个人
他还没来得及摁
他摁了那就是这个发生
他不摁那就是这个发生
所以要用三个不同的变迁来描述
开门 停下来 开门这同一个动作
这个就显然阶段性太多了
如果我们要用Cybernet呢
我们就可以这样来描述
你看 我刚才讲了这就表示什么
从这个有一条弧
然后这个前面的是一个小圆圈
这就表示什么
这条弧上面的权就是S元素l(i)
所以底下这个也一样
这条弧上面的权就是Fu(i)
自空网系统什么意思
我们要在这个状态下面
看看电梯是不是需要停下来
那我们就看
这条弧上面是有一个权函数是它
它里面有一个token
所以这就是说他的权就是1
如果l(i)里面有两个token
那这个就是2
反正把你所有的token都拿掉
当然l(i)里面不可能有两个token
因为有人向你摁几次
那个灯都是一个亮的
不可能两个人摁就有两个灯亮
所以那里边最多也就只有一个token
有token就表示有人摁了
没token表示没人摁
这个图就只有一个变迁
就能够表示在i层的电梯需要开门
只要l(i)里面有一个token
或者Fu(i)里面有个token
或者这两个里面都有token
我就把它都拿掉
反正有我就拿掉
需要说明的是
如果两边都没有呢
我们要求这种弧至少有一条
权不是零
这个才有发生权
它才能够发生
否则如果都是零的话
没有意义对吧
你什么都没有
你也不知道它发生了几次
所以呢这两个控制弧
这种弧上面
至少要有一条上面的权
在标示底下不是零
它就能够发生了
这个就是suber light
我们是不是看到了它的作用
suber light非线性的
0也行 1也行
所以这个就大大的减少了
变迁的个数
使得我们描述一个实际的系统呢
大大的简略了
将来我们讲电梯系统的时候
会回到这儿来再继续讲这个
suber light在文献里面
已经存在了很长时间
就我的记忆好像是
上个世纪的80年代就有
在文献里面可以找到它的定义
但是一直没有怎么很好的用
为什么呢
因为它虽然是非线性的
但是它增加的功能并不多
我们说增加的功能
就是我们用起来比较方便
如果从模拟力来说
不需要非线性
那么有人证明了
说Petri网跟图灵机的模拟能力是一样的
所以我们说的能力增加
不是说它就模拟能力增强了
而是说我们用起来方便了
它增加的毕竟不是很多
为什么我们这样说呢
因为
归根到底库所里面的所有的只是一个token
而我们能够处理的数量
就是一个正整数
变迁的发生改变的是token的数量
要么是减法要么是加法
所以数据类型很简单
只有正整数这个类型
数据操作很简单
只有加法和减法
不管你是suber light
还是我们一般的Petri的系统
所以它们都不能够处理
复杂的数据结构和复杂的数据操作
因为Petri网它的目标应用就是计算机
计算机里面处理的就是大量的数据
如果没有数据的话
那么用起来我们会很不方便
就像让你写程序的时候
直接用机器语言写程序
用零 一 二进制来编程序
这个我是做过的
我刚开始学计算机的时候
就是用机器语言来写程序
写一个简单的小程序都是很复杂的
而且它的可读性很差
你发现错误改正错误都很不容易
所以计算机语言的出现
就是要增加语言的可读性
减少人的负担
既然petri网目的是用来解决计算机的问题
所以能不能够
直接让人能够使用复杂的数据结构和
数据结构的操作
这就是一个很关键的问题
虽然不用它也能做得到
但是人 那就是自己背上一个很重的包袱
而且很容易出错
所以我就在Petri网里面引进了变量
这一类新的S元素
为什么我叫它C_net
C有两层含义
一个是communication 通讯
一个是computation 计算
其实最早的计算机并不单单是计算
计算完了
还是要有人来读还是要交流
所以computation不仅仅是计算
它也有传输的功能
那么communication
你不能是一样东西不加改变的传来传去
它必须要经过每一个计算机的接连
加工处理以后再传输
所以这两个东西有共同的地方 有区别的地方
从computation的角度来讲
我们把计算机里面的东西看成是数据
因为它是要对数据
它的结构
它的值进行操作
从传输的角度来讲
我们把这些东西看成是信息
我不知道大家有没有思考过这个问题
数据和信息到底是不同的东西呢
还是一样的东西呢
我们信赖它的作用就是在Petri网上面
引进能够表示允许数据结构和数据操作的
一对新的元素叫做变量
这样一来我们就不局限于正整数了
我们回过头来问问看
数据和信息到底是两回事还是一回事
以我的看法
数据和信息
它是同一个东西从不同的角度来认识
给一点时间你思考一下
到底数据和信息应该怎么来理解
我刚才说的是一样东西不同的理解
到底是这个理解有什么不同呢
一会儿我再回到这个问题来
我们刚才讲了在Petri网里面
引进一类新的S元素
也就是变量
那么这样一来
Petri网的就有两类的S元素
一类叫做变量
一类叫做原来的Place或者是库所
变量集合由V来表示
库所集合还是由S来表示
既然有了两种S元素
那么它就有了两种标识
一种标示还是原来的
就是token的分布
在S元素里面的分布
在库所上的分布
另外一种就是变量的值
所以就有两种标识
一种是变量标识
一种是库所上的token标识
这样一来一个变迁能不能够发生
就有两种发生权
一个是token允许不允许它发生
它需要消耗的token有没有
我们讲了
从P/T系统讲起
我们已经把所有的容量函数看成是无穷了
因为有S补可以技术上改造成无穷
所以不考虑容纳的下 容纳不下
所以它所要消耗的库所里面
是不是有足够的token
这是token的发生权
或者叫做库所发生权
另外一个变量里面的值
我需要值是有没有
符合不符合我这个操作的条件
这种叫做变量发生权
所以一个变迁在两个条件都符合的情况下
才有发生权
一个是库所发生权
一个是变量发生权
它都有那么它才能够发生
发生的时候它改变的是什么呢
改变的是两种东西
既改变库所里面token的分布
也改变变量的值
改变变量的值就是赋值语句
改变库所里面的token数
就是按照我们P/T系统里面所讲的那样来改变
所以它的一个变迁发生的时候
它的后继又分两部分
一个是库所后继
一个是变量后继
用什么来表示呢
图示
因为Petri网都是可以用图来表示
变量为了跟库所有所区别
我是采用了两个圆圈
套在一起的双环来表示一个变量
变量上面允许两种操作
一个是读操作
一个是写操作
当然也可以读写同时对一个变量都对它进行操作
如果是读操作
小箭头指向的是变迁
就像我们的约束弧一样的
约束弧不就是从库所指向变迁的吗
那个也只是起到读的作用
看看里面是不是有token
所以我们还继承下来
所以要多一个变量就是用
从变量到变迁的一个
以小圆圈作为箭头的
这样一个箭头来连接
写就是把箭头倒过来
库所那边是由小圆圈作为箭头的
从变迁指向变量
如果是读写操作
我对一个变量既读又写
就像电梯
你去读出这个button有没有被摁下去
楼上有没有人呢
你读了的话
这个灯也就写了
就是我知道了
有人读我要来提供服务了
这个读写对于楼层的button来说
是既读又写的
这个我们就用
两头都有小圆圈
或者两头都没有
这就表示
读写操作对同一个变量同时操作
所以C_net是写并行程序的网系统
C_net跟P/T系统一样
跟所有的Petri网系统一样
它没有全局的控制
也没有局部的控制
但是如果你的应用需要有这种控制的话
你可以借用token来实现它的token的流动
来描述控制流的流动
所以也可以实现
我们这个系统本身没有
但是如果你应用需要的话
可以用token的流动
来体现控制的流动
另外我们刚才讲的有两类S元素
有两类状态元素
一类的是库所 一类的是变量
每一个变迁不一定一定要跟这两个都有关系
一个变迁可以只跟一类
比方只跟库所有关系
它就是纯粹的原来Petri网里面的变迁
也可以只跟变量有关系
没有库所相连
也就是没有控制流
所以这两个都是允许的
一个变迁可以跟库索和变量同时相关
也可以只跟其中一类相关
下面我们看到的这个
就是一个简单的例子
这还是像suber light描述的那样
这是一个楼层上面
电梯在上升方向
到达了第i层
如果这个时候l(i)是电梯里面的这个button
有人想要在这一层下
这个Fu是楼层上面的button
有人想要在这上电梯
这个是用C_net来描述
有一个变迁就描述成这样
我们知道用P/T系统是需要三个变迁
而C_net只需要一个
这个时候它有两种发生权
我们刚才讲了
从库所的角度来讲
它就输入
也就是u_at(i)那个i那里有一个token
所以呢它是具有库所发生权的
那么从变量的角度来讲
变量它符合什么条件这个变迁能够发生
这个电梯需要停下来开门呢
就需要l(i)里面有token
或者是Fu里面有token
这是过去我们说的
现在我们用变量来说
l(i)或Fu用的都是布尔变量
它的值要么是1要么是0
要么是真要么是假
在变迁里面有一道杠
这个杠的上面就是这个变迁发生的条件
它写的是l(i)或者Fu(i)
也就是说这两个布尔变量里面
只要有一个成真
就符合发生的条件
也就具有了变量发生权
这个变迁是有库所发生权的
一旦它有了变量发生权
就可以发生了
发生以后的结果呢
从库所来讲
它会在u_open那个地方
那个库所里面放上一个token
表示现在电梯是处在开门的状态
赋值这一部分 变量这一部分怎么改变呢
那当然就是把这两个
凡是成真的
有人要上或者有人要下的
已经服务完毕
门一开服务就完毕了
所以都它们赋值成零
也就是说都不真了
没有人再要求了
所以在Fu上面有一杠 一个OverBar
就表示是写这个变量
这个变量名字上面的这一Bar表示写操作
写操作后面有一个圆括号里面的那个值 那个零
就是赋值表达式里面的数学表达式
用这个表达式的值来给这个变量赋值
所以OverBar是一个二元操作
一个是写谁
就是OverBar下面变量的那个名字
第二个元就是用什么来写
就是小括号里面的那个数学表达式
这种赋值语句的写法
我正在写一本书在介绍
这就是
我们现的程序语言
它是把程序里面的语法和语意
是分别研究的
所以现在的程序语言
写出来的程序
你没有办法证明它是正确
所以只能够用testing
用数据来测试
测试没有发现错误
你也不能说我这个程序对了
你发现了一个错误改正这个错误
你还是不能说这个程序对了
因为你改了一个错
可能引进了两个错
而 研究的是什么呢
就是把语意和语法联合起来
然后来提出来的
像我这里给出的这种赋值
这样我们可以
用公理来计算一个程序的性质
它到底做了什么
所以程序正确性的证明呢
就是可能的了
这个 我会在以后
在咱们课的后面跟大家讲
因为既然咱们用到C_net
C_net里面需要 里面的赋值语句
以及它的性质的计算
语意的公理
所以这个我到以后再讲
这是一个例子
这个地方我只对C_net做一个简单的介绍
就是用这一个变迁来给大家看看
C_net到底是个什么样子的
刚才我说了
咱们应该考虑一下数据和信息
到底有什么不同
计算机里处理的东西都是一样
你可以说它是数据
当我对它进行操作的时候它是数据
但是数据它是有语意的
如果没有语意我们在那瞎算
那计算机就没有存在的必要了
所以从结构和操作的角度来讲
我们所处理的对象是数据
从应用的角度来讲
我们所处理的对象是信息
我们对信息进行处理
得到新的信息
所以同一个东西
从不同的角度来说
它既是数据又是信息
我下面有个问题
有没有不是数据的信息
有没有不是信息的数据
你说这个数据没有任何的语意
那是什么
那是乱码
只有一种可能性
我考古学家挖出了一个乌龟壳
乌龟壳刻了一些符号
我不知道它是什么意思
我需要研究
你不知道不等于它没有
所以信息和数据
从计算机的角度来讲是一回事儿
不同的角度来理解
乌龟壳上的东西你就不能说它是数据
因为你一个数也看不见
但是如果你要是想用计算机来处理他的话
你就必须把它数字化
所以那个时候它就是数据
这个非线性系统
我就讲到这
-概述
--Video
-有向网
--Video
-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
-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
-第八章 总结--习题