基于BDD的企业车间死锁的快速预防方法与流程

文档序号:17609786发布日期:2019-05-07 20:59阅读:271来源:国知局
基于BDD的企业车间死锁的快速预防方法与流程

本发明属于车间作业调度与控制技术领域,特别是一种基于BDD的企业车间死锁的快速预防方法。



背景技术:

随着经济的不断发展,人们对物质产品的不断追求,致使企业车间制造系统也在不断地发展。由于技术的飞速发展,现代化的自动化生产制造早已投入使用,但是在效率、规模不断增大的背景下,由于系统资源不足、工作部件间工作顺序不合适或系统中资源分配不当等,导致系统中时常出现死锁情况。如何能快速有效地解决如死锁等带来的问题,早已成为各个领域所高度关注的问题,也是各领域不断突破和研究的方向。这些领域主要有集计算辅助设计(CAD)技术、机电一体化技术、模糊控制技术、模糊数学、人工智能、专家系统技术和人工神经网络(ANN)技术等。但是在研究、分析和模拟异步自动制造系统时,核心困难是如何能快速地表示、统计和处理系统中的状态及其变化情况。

Petri网是一种用于异步、并发和动态的系统的图形化、数学化建模工具,用于分析、设计、模拟和研究异步、并发、不确定性和随机的离散事件动态系统。根据有关系统结构和动态行为方面的信息,可以对要开发或者维护的系统进行评价和改进。而且Petri网是基于结构图和流程图形式,所以可以很直观、形象地观察和分析模型,同时,作为一种数学工具Petri网可以建立状态方程、代数方程以及系统行为的其他数学模型,便于计算和验证。基于这些优质的特性,使得Petri网建模被广泛应用于许多领域,包括分布式软件系统、分布式数据库系统、并发程序、柔性制造系统、离散事件系统、多处理机存储系统、数据流计算系统和逻辑程序等方面。在这些繁多而又各异的领域中被应用,也使得Petri网模型得到了快速发展,已经形成了相对规范的理论基础和典型的使用案例等。

利用Petri网模型对异步、并行自动化制造系统进行分析、处理和模拟早已被实现,也经历了很多年的研究,现有的Petri网分析方法主要有可达树、状态方程以及结构化简等。其中使用最多的也是最有效的是可达树方法,可达树方法其实质是通过枚举方式穷举生成Petri网的所有可达标识向量,并以树结构形式表示Petri网的可达状态空间,进而判定、分析模型的活性、安全性和可达性等性质。而在Petri网模型中,由系统自身的并发特性和状态变迁的语义交织引起的状态组合复杂性,是Petri网分析技术中的一个瓶颈问题,严重制约了Petri网的应用。

二叉决策图(BDD)是可对等与布尔函数的压缩表示的数据结构,可以高效地解决Petri网状态组合爆炸问题。BDD的本质是通过使用较小的数据结构,来表示庞大的数据集合,是一种可高效处理大数据集的数据结构。

Pastor等建立了基于BDD的Petri网符合分析方法,主要是使用BDD表示Petri网的库所标识的特征函数,对Petri网的各种性能进行分析。并且也是为分析、处理大规模Petri网模型研究探索出了一条全新道路,后来许多研究都是基于Pastor的这篇论文开展的(E Pastor,O Roig,J Cortadella,RM Badia.Petri Net Analysis Using Boolean Manipulation.Lecture Notes in Computer Science,1994:416~435)。

李志武等提出了求解Petri网模型的信标,然后通过对每一个信标添加一个控制库所及其连接弧,使得其P-不变式可控,以此来达到对Petri网模型死锁预防的目的。其实质是通过添加新的库所使得信标在任意变迁后,都不至于演变为空集情况(闫明明,李志武,钟春富.S3PR网的一种死锁预防策略.西安电子科技大学学报(自然科学版),2008,35(2):330~333.)。

Li和Zhou提出的基本信标理论,将Petri网中的严格极小信标分为基本信标和从属信标,通过为每一个基本信标添加一个控制库所,使其P-不变式可控,不仅能极大地减少控制库所的数目,而且能达到更好的控制效果。这是通过缩减所需考虑、分析的库所集数,来减少所需添加控制库所的信标集,从而减少提高运算效率的方式(Li Z W,Zhou M C.Elementary Siphons of Petri Nets and Their Application to Deadlock Prevention in Flexible Manufacturing Systems[J].IEEE Trans on Syst Man Cybern,2004,34(1):38~51.)。

针对Petri网模型死锁分析、处理和预防的研究,已经在很多方面取得了进步,比如通过基于信标添加控制库所来预防死锁,通过分解严格极小信标来提高运算效率,通过在不同类型的模型中引用死锁预防策略研究等。在各领域研究者的共同努力下,对于Petri网模型的分析、研究和死锁的控制方面已经取得了很大成就,但是还是存在一些问题:

(1)状态组合爆炸问题。在Petri网模型中,由系统自身的并发特性和状态变迁的语义交织引起的状态组合复杂性,从而导致状态集会随着Petri网模型的规模呈指数级增长。这给规模稍大或者关系稍微复杂的模型研究带来了致命问题,这也使得当今的很多研究都是基于中小规模的系统模型的原因。

(2)大批量的数据间运算、求解问题。在分析、求解Petri网模型相关标识集时,模型中涉及的状态标识集量大,而且还需相互之间做计算和处理,通常都是十分复杂的,甚至是现有工具不可实现的操作。



技术实现要素:

本发明的目的在于以企业车间制造系统的生产任务和生产资源为研究对象,提供一种存储空间大大减少,但可快速、高效地计算出死锁预防监督控制器,并且可适用大规模的网系统的方法。

实现本发明目的的技术解决方案为:一种基于BDD的企业车间死锁的快速预防方法,首先利用Petri网实现企业车间生产系统建模,和Petri网模型的信标、极小信标、陷阱以及严格极小信标的快速求解,之后根据所求得的严格极小信标添加新的控制库所和对应的弧来实现死锁的预防,具体包括以下步骤:

步骤1、利用Petri网实现企业车间生产系统的建模:归类生产系统主要有工作部件和共享资源,工作部件按照一定的规则并发执行和共享系统的资源。使用Petri网的库所中的托肯数表示资源数,使用Petri网的变迁表示工作部件,使用Petri网中库所与变迁间的关系弧表示生产系统中的规则。这样即可将现实的企业车间生产系统模型化,使用Petri网模型表示,并且通过分析、处理Petri网模型来实现对实际系统的研究和控制。

步骤2、Petri网模型的极小信标求解过程如下:首先需要根据Petri网信标的定义,即非空集合满足则S为信标,结合信标的求解公式求解出模型中的所有信标。基于BDD求解出的所有信标,去除其中具有包含关系的信标集,同时去除集合中的空集,剩下的库所集即为所需求解的极小信标集;

步骤3、Petri网模型的陷阱求解过程如下:Petri网模型陷阱的定义为,若非空集合满足则称S为陷阱,由定义可知陷阱和极小信标是互为反向的库所集。所以求解Petri网模型的陷阱有两种方法,第一种可以直接根据定义和求解公式进行求解,同时去除具有包含关系的信标集和空集等。第二种是利用与信标的互逆关系,将Petri网N逆向表示为N',则根据逆向网N'求解信标即为正向网N中的陷阱;

步骤4、Petri网模型的严格极小信标求解过程如下:由严格极小信标的定义可知,若信标S中不包含任何P-不变式的支撑,则称其为严格信标,若既满足极小信标又满足严格信标,则称为严格极小信标。基于上述求解的Petri网模型的极小信标和陷阱,即可以利用BDD快速地求解出Petri网模型的严格极小信标,其求解函数为:XSMS=XMS-XT(其中XMS为极小信标集,XT为陷阱集);

步骤5、基于严格极小信标添加新的控制库所和对应的关系弧来实现Petri网死锁预防过程如下:首先分析死锁的形成原因可发现,其主要是因为系统资源不足;工作部件间工作顺序不合适;系统中资源分配不当等使得系统无法继续运行所导致。我们定义的控制策略是在系统中添加新的库所,实现死锁状态不可达,从而避免死锁的出现。然而,经过分析可知限制死锁状态集出现的关键是如何实现严格极小信标集在任意情况下都是不可被清空的,这样整个系统将一直处于活的状态。基于上述三个步骤求得的严格极小信标集,结合添加库所的关联公式可以在原有的Petri网模型中添加一些新的控制库所和相应的关系弧,以达到预防死锁的目的。

本发明与现有的技术相比,其显著优点为:1)本发明使用BDD数据结构可以很容易地解决Petri网模型中组合状态爆炸问题,可以使用较少的数据集来压缩表示大规模数据集;2)本发明基于BDD数据结构特性,并将Petri网标识集符号化,可以高效地、快速地实现标识集间的运算,且本文提出方法可以解决那些其他工具无法处理的大规模Petri网模型;3)本发明提出了一种具有“最大包含性”的概念,在从所有信标集中去除非极小信标集时,可以针对性的多集合的去除而非逐个比较去除,从而提高了求解极小信标的效率;4)本发明提出基于从极小信标集合中去除陷阱的方式来获得严格极小信标,这种方式结合BDD计算特性是十分高效的。然后就可以基于严格极小信标,添加相应新的库所和对应的关系弧来实现死锁的预防。实现对计算和表示的简洁化和快速化,而非在集合中做深入分解,相比下比通过集合分解方法效果更优。

附图说明

图1为极小信标的求解过程图。

图2为严格极小信标求解过程图。

图3为一个简单安全Petri网模型图。

图4为Petri网模型实例图。

图5为一个生产单元实例图。

图6为图5对应的S3PR模型图。

图7为基于图6获得的对应控制库所结果图。

具体实施方式

结合附图,本发明的一种基于BDD的企业车间死锁的快速预防方法,步骤如下:

步骤1、利用Petri网对企业车间生产系统进行建模,具体为:使用Petri网的库所中托肯数表示资源数,使用Petri网的变迁表示工作部件,使用Petri网中库所与变迁间的关系弧表示生产系统中的规则;

步骤2、对Petri网模型的极小信标进行求解,求出极小信标集;具体为:

步骤2-1、根据Petri网理论和BDD求解特性,求解单个信标的特征函数再利用特征函数求解出网系统中的所有信标;其中,pi和pj表示网系统中的库所;P表示所有库所集合;t表示网系统中的变迁;

步骤2-2、基于步骤2-1已求得的所有信标集,去除其中存在的空集,得到非空库所集

步骤2-3、依据库所集间的关联函数去除信标间具有包含性的信标,即保留相对独立不具有包含性的信标集;其中,pi表示当前所求的未知库所集,qi表示与之关联的库所集;

步骤2-4、在做去除具有包含性信标时,循环去除具有最大包含性的信标集实现批量地去除非极小信标而非逐个去除,得到严格极小信标集其中n表示网系统中库所的数目。

步骤3、求取Petri网模型的陷阱;Petri网模型陷阱的定义为,若非空集合满足则称S为陷阱;

求取Petri网模型的陷阱求解方法两种:第一种方法与步骤2-1求取所有信标的方法相同;

第二种方法是根据陷阱与信标间互为逆向的关联关系,将Petri网模型反向表示即将关联矩阵逆向,然后基于逆向的Petri网模型求解出的信标集即为正向模型的陷阱集。

步骤4、求取Petri网模型的严格极小信标;具体为:

步骤4-1、整理步骤2和步骤3求解的极小信标集和陷阱集,形成符号化表示的两个集合,分别使用XMS和XT表示;

步骤4-2、根据严格极小信标的求解函数XSMS=XMS-XT,反复地从极小信标集中去除存在的陷阱集元素,直至极小信标集XMS中不包含陷阱集XT为止。

步骤5、基于步骤4求得的严格极小信标添加新的控制库所和对应的关系弧来实现Petri网死锁预防。具体为:

步骤5-1、将由步骤4所得的严格极小信标集,进行符号化表示:设Sp=2p是使用|P|个库所表示Petri网中任一库所集,则系统就是对应的标识集的布尔代数形式;其对应关系写成映射函数ε:Sp→Bn,每一个标识集S∈Sp都被相应地映射为一个顶点(p1,...,pn)∈Bn如下:

n表示系统中库所的数目;

步骤5-2、依据信标空集判断条件公式判定哪些严格极小信标集是可被清空的,并对这样的集合进行统计,可被清空的严格极小信标集会导致成为死锁的严格极小信标;其中,m0()表示求解特定集合在初始标识下的托肯数,表示s1的前集和后集的并集;

步骤5-3、根据特征函数求解出符合添加的新的控制库所集XN,以及对应的关系弧;所述关系弧是确定新添加的库所对应的变迁前集和对应的变迁后集

步骤5-4、基于添加的新的控制库所集和对应的关系弧,验证Petri网模型是否为活的,即根据定义t∈Ti,m0[σt>mt判断是否所有的变迁都为活的,如果所有的变迁都是活的,那么对应的网系统就是活的,则检验添加的新的库所和对应的关系弧是可实现死锁预防的;否则,返回步骤5-3;其中,表示T对应的变迁结合;

步骤5-5、整理所得到的新添加的库所集和对应的关系弧,来实现Petri网死锁预防。

本发明使用BDD数据结构可以很容易地解决Petri网模型中组合状态爆炸问题,可以使用较少的数据集来压缩表示大规模数据集

下面结合实施例对本发明作进一步详细描述。

实施例

一种基于BDD的企业车间死锁的快速预防方法,步骤为:

第一步,结合图1和图3,本发明基于BDD求解Petri网模型的极小信标主要步骤如下:

步骤1:首先需要根据Petri网模型的库所状态集情况,将相应的库所状态集使用符号化表示。具体做法为,符号化表示:设Sp=2p是任意库所集的子集可使用|P|个库所表示Petri网中任一库所集,则系统就是对应的标识集的布尔代数形式。其对应关系可写成映射函数ε:Sp→Bn每一个标识集S∈Sp都被相应地映射为一个顶点(p1,...,pn)∈Bn如下:

以图1所示安全Petri网为例,其初始标识M0为库所p1和库所p3分别有一个托肯,即M0为则对应的布尔顶点为(1,0,1,0)。因为库所p1中存在一个托肯,所以变迁t1和变迁t2都是可以发射的。设t1发射生成新的标识M1,即库所p1减少一个托肯库所p2增加一个托肯,则M1为对应的布尔顶点为(0,1,1,0)。

步骤2:根据信标的定义即若非空集合满足则称S为信标,求解出单个信标。求解的特征函数如下:

即对于所有特征函数Σpj值一定是1,表明至少有一个变量pj∈t·在顶点中的对应值为1,所以对于任何都有

步骤3:基于单个信标求解的基础上,可以进一步求解出整个Petri网模型的所有信标集,具体特征函数如下:

步骤4:步骤3后求得的模型的所有信标集中存在着空集,但是极小信标为非空库所集,所以需要去除不符合的空集,求解函数如下:

函数中实现控制求解出的信标集合中至少存在一个库所托肯数为非0,从而确保所求信标集中不包含空集。

步骤5:库所集间存在着特定的关联关系,是信标集间处理的关键。本发明中提出了“最大包含性”的概念,依据单个信标求解出其对应的具有最大包含性的信标。根据求解出的具有最大包含性的信标并去除,就可以同时去除多个相互间具有包含关系的信标集,要比逐个对比判断去除非极小信标效率高很多。最大包含性的信标特征函数如下:

其中具有最大包含性的非极小信标集求解函数如下:

从排除非空信标集合后,再去除掉非极小信标即可获得所求的极小信标集:

XMS=XS-XM (6)

第二步,结合图2分析严格极小信标生成过程,具体实现如下:

步骤1:首先需要根据Petri网模型的库所状态集情况,将相应的库所状态集使用符号化表示。

步骤2:利用第一步处理过程求解出模型中的极小信标集。如图4所示其所有的信标集为经过求解可得到如下的结果集:

步骤3:基于Petri网陷阱的定义,即若非空集合满足则称S为陷阱,求解出模型中的所有陷阱集。也可以利用陷阱和信标间存在的互为逆反关系,也就是将Petri网逆序具体实现是将关联矩阵逆向,然后基于逆向网模型求解出的信标集即为正向网模型的所有陷阱集。

步骤4:基于步骤2、3求解出的极小信标集和陷阱集,即可利用陷阱的特征来实现使得信标中不包含任何P-不变式的支撑,也就是使得信标变成严格信标。同时满足既是极小信标又是严格信标,则称为严格极小信标。

严格极小信标集的求解算法如下:

第三步,根据已经求解出的严格极小信标集做分析,然后进行新库所和弧的添加以此来实现死锁的预防,具体步骤如下:

步骤1:通过第二步的求解过程,获取Petri网模型的严格极小信标集,如图5是一个生产实例,图6是其对应的Petri网S3PR模型,其中有18个严格极小信标。

步骤2:分析已有的严格极小信标集,尤其是判断是否会演变为空集的情况,因为这是导致死锁的关键。判断的条件公式为

步骤3:根据函数求解出符合添加至严格极小信标集的新库所XN。

步骤4:根据添加新库所的情况,添加相应的关系弧,也就是确定新添加的库所对应的变迁前集和对应的变迁后集

步骤5:基于添加的新库所和对应的弧,判断网系统的活性,即根据定义t∈Ti,m0[σt>mt判断是否对于模型中所有的变迁都是活的。如果所有的变迁都是活的,那么对应的整个Petri网模型就是活的。则检验添加的库所是可实现死锁预防的。

步骤6:根据检验的结果可以判断添加库所是否正确,在确定正确的情况下,以及最终整理后所得到的添加库所和相应的关系弧,即为最终所要操控的死锁预防策略。

图5是一个由三个机器人(R1,R2,R3:每个机器人同时刻可以持有一个产品)和四台机器(M1,M2,M3,M4:每个机器同时刻可以处理两个产品),以及三个输入缓存(I1,I2,I3)和三个输出缓存(O1,O2,O3),共同组成的一个自动化产品生产系统。其运转流程如下:

J1:I1→R1→M1→R2→M2→R3→O1

or I1→R1→M3→R2→M4→R3→O1

J2:I2→R2→M2→R2→O2

J3:I3→R3→M4→R2→M3→R1→O3

图6则是图5对应的Petri网模型的表示形式。

基于BDD对图6进行严格极小信标求解可得模型中有十八个严格极小信标,分别为:{p10,p16,p22,p26},{p4,p10,p19,p20,p21,p22,p23,p24,p25,p26},{p4,p10,p18,p21,p22,p24,p25,p26},{p4,p10,p17,p21,p22,p24,p26},{p4,p9,p13,p18,p21,p24,p25,p26},{p4,p9,p13,p17,p21,p24,p26},{p4,p9,p12,p19,p20,p21,p23,p24,p25},{p4,p9,p12,p18,p21,p24,p25},{p4,p9,p12,p17,p21,p24},{p2,p4,p8,p13,p19,p20,p21,p23,p25,p26},{p2,p4,p8,p13,p18,p21,p25,p26},{p2,p4,p8,p13,p17,p21,p26},{p2,p4,p8,p12,p19,p20,p21,p23,p25},{p2,p4,p8,p12,p18,p21,p25},{p2,p4,p8,p10,p19,p20,p21,p22,p23,p25,p26},{p2,p4,p8,p10,p18,p21,p22,p25,p26},{p2,p4,p8,p10,p17,p21,p22,p26}。求解十八个严格极小信标用时还不到0.5秒,且仅需要177个BDD节点,而使用Petri网分析软件INA求解则需要3.63秒,以及4074个描述节点。基于所得的十八个严格极小信标,以及步骤3求解添加控制库所的过程,可以得到图7中对应的十八个控制库所,详细给出了对应的变迁前集和变迁后集以及对应的托肯数。添加这样十八个新的控制库所集和其对应的关系弧,就能够保证所有严格极小信标在任何系统状态下都不会被清空,从而控制了系统不会出现死锁,最终获得企业车间死锁监控器。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1