发明名称 基于Petri网基本结构的过程模型修复方法
摘要 本发明公开了一种基于Petri网基本结构的过程模型修复方法。该修复方法主要通过对原有数据进行处理,使其成为符合规范的事件日志;之后对其使用归纳挖掘算法挖掘出对应的过程模型;通过将扩大的事件日志与挖掘得到的过程模型进行校准,发现过程模型中存在的偏差;最后提出了不同结构下过程模型的修复方案,旨在修复过程模型,增强过程模型的一致性。在选择结构中,对日志动作和模型动作相邻这种情况进行了特殊修复,提出的修复算法在保证拟合度、精确度的同时,也提高了过程模型的简化度。
申请公布号 CN105095491A 申请公布日期 2015.11.25
申请号 CN201510508766.5 申请日期 2015.08.18
申请人 山东科技大学 发明人 杜玉越;祁宏达;王路;刘伟
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 济南舜源专利事务所有限公司 37205 代理人 朱玉建
主权项 基于Petri网基本结构的过程模型修复方法,其特征在于,包括如下步骤:a利用归纳挖掘算法从事件日志中挖掘出对应的过程模型a1过程树定义过程树设Σ是一个有限活动集,⊕是给定的符号集,τ是隐式变迁;(1)a∈Σ∪{τ}是一个过程树;(2)设M<sub>1</sub>,…,M<sub>n</sub>均是过程树,n&gt;0,则⊕(M<sub>1</sub>,…,M<sub>n</sub>)也是过程树;对于操作符,有如下几种:操作符×代表着选择关系,该操作符对应的子树只有一个会发生;操作符→代表着顺序关系,该操作符对应的子树会顺序发生;操作符<img file="FDA0000783407980000017.GIF" wi="47" he="42" />代表着循环关系,M<sub>1</sub>代表循环体,M<sub>2</sub>,…,M<sub>n</sub>代表循环路径,对于<img file="FDA0000783407980000018.GIF" wi="45" he="47" />,n≥2;操作符∧代表着并行关系;为描述过程树的语义,对于过程树定义一个循环单调函数;对于过程树的操作符,分别定义其结合函数⊕1:<img file="FDA0000783407980000019.GIF" wi="346" he="66" />对于a∈Σ;<img file="FDA00007834079800000110.GIF" wi="895" he="66" />对于操作符×,<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mo>&times;</mo><mn>1</mn><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>L</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><munder><mrow><mi></mi><mo>&cup;</mo></mrow><mrow><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><mi>n</mi></mrow></munder><msub><mi>L</mi><mi>i</mi></msub><mo>;</mo></mrow>]]></math><img file="FDA0000783407980000011.GIF" wi="546" he="121" /></maths>对于操作符→,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mo>&RightArrow;</mo><mn>1</mn><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>L</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><mo>{</mo><msub><mi>t</mi><mn>1</mn></msub><mo>&CenterDot;</mo><msub><mi>t</mi><mn>2</mn></msub><mo>...</mo><msub><mi>t</mi><mi>n</mi></msub><mo>|</mo><mo>&ForAll;</mo><mi>i</mi><mo>&Element;</mo><mn>1</mn><mo>...</mo><mi>n</mi><mo>:</mo><msub><mi>t</mi><mi>i</mi></msub><mo>&Element;</mo><msub><mi>L</mi><mi>i</mi></msub><mo>}</mo><mo>;</mo></mrow>]]></math><img file="FDA0000783407980000012.GIF" wi="1210" he="70" /></maths>对于操作符<img file="FDA00007834079800000111.GIF" wi="50" he="52" />,<img file="FDA0000783407980000013.GIF" wi="1481" he="122" />为描述操作符∧,引入符号集<img file="FDA00007834079800000114.GIF" wi="280" he="87" />这个符号集代表着t<sub>1</sub>...t<sub>n</sub>的交错;<img file="FDA0000783407980000014.GIF" wi="1313" he="103" /><img file="FDA0000783407980000015.GIF" wi="1112" he="78" /><img file="FDA0000783407980000016.GIF" wi="701" he="76" />其中,f是一个双射函数,将t中每一个事件映射到t<sub>i</sub>中的一个事件,t(i)代表着t中第i个元素;使用这种符号定义,下面来定义操作符∧:<img file="FDA00007834079800000112.GIF" wi="1192" he="92" />每一个过程树的操作符都有一个直接的形式化地对应到一个稳固块结构的工作流网中;a2确定操作符和选择切割四种操作符×,→,<img file="FDA00007834079800000113.GIF" wi="72" he="53" />∧每一种都有着典型的形式来进行分割;事件日志会根据选定的操作符进行分割,被分割的事件日志会继续递归进行分割;定义选择切割存在一个紧邻图G,对其进行选择切割,产生了不相交的集合Σ<sub>1</sub>,…,Σ<sub>n</sub>,有:<img file="FDA0000783407980000021.GIF" wi="923" he="74" />定义顺序切割存在一个紧邻图G,对其进行顺序切割,产生了不相交的集合Σ<sub>1</sub>,…,Σ<sub>n</sub>,有:<img file="FDA0000783407980000022.GIF" wi="1065" he="77" /><img file="FDA0000783407980000023.GIF" wi="1052" he="75" /><img file="FDA0000783407980000024.GIF" wi="1006" he="77" /><img file="FDA0000783407980000025.GIF" wi="1008" he="76" /><img file="FDA0000783407980000026.GIF" wi="975" he="82" />定义并行切割存在一个紧邻图G,对其进行并行切割,产生了不相交的集合Σ<sub>1</sub>,…,Σ<sub>n</sub>,有:<img file="FDA0000783407980000027.GIF" wi="925" he="76" /><img file="FDA0000783407980000028.GIF" wi="1360" he="74" />定义循环切割存在一个紧邻图G,对其进行选择切割,产生了不相交的集合Σ<sub>1</sub>,…,Σ<sub>n</sub>,有:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>S</mi><mi>t</mi><mi>a</mi><mi>r</mi><mi>t</mi><mrow><mo>(</mo><mi>G</mi><mo>)</mo></mrow><mo>&cup;</mo><mi>E</mi><mi>n</mi><mi>d</mi><mrow><mo>(</mo><mi>G</mi><mo>)</mo></mrow><mo>&SubsetEqual;</mo><msub><mi>&Sigma;</mi><mn>1</mn></msub><mo>;</mo></mrow>]]></math><img file="FDA00007834079800000214.GIF" wi="562" he="76" /></maths><img file="FDA0000783407980000029.GIF" wi="1400" he="78" /><img file="FDA00007834079800000210.GIF" wi="1417" he="86" /><img file="FDA00007834079800000211.GIF" wi="961" he="79" /><img file="FDA00007834079800000212.GIF" wi="1597" he="90" /><img file="FDA00007834079800000213.GIF" wi="1653" he="93" />a3切割日志在确定操作符并选择对应的切割后,需要对事件日志进行分离;不同的切割对应不同的切割函数,下面列出对应的切割函数:定义顺序切割函数输入:事件日志L和顺序切割集合(Σ<sub>1</sub>,...,Σ<sub>n</sub>);输出:切割后的事件日志L<sub>1</sub>,···,L<sub>n</sub>;依次遍历每一个顺序切割集合,每一个集合会将原有的事件日志切割出与其对应的事件日志,有:<img file="FDA0000783407980000031.GIF" wi="1342" he="77" />定义选择切割函数输入:事件日志L和选择切割集合(Σ<sub>1</sub>,...,Σ<sub>n</sub>);输出:切割后的事件日志L<sub>1</sub>,···,L<sub>n</sub>;依次遍历每一个选择切割集合,每一个集合会将原有的事件日志切割出与其对应的事件日志,有:<img file="FDA0000783407980000032.GIF" wi="1138" he="73" />定义并行切割函数输入:事件日志L和并行切割集合(Σ<sub>1</sub>,...,Σ<sub>n</sub>);输出:切割后的事件日志L<sub>1</sub>,···,L<sub>n</sub>;依次遍历每一个并行切割集合,每一个集合会将原有的事件日志切割出与其对应的事件日志,有:<img file="FDA0000783407980000033.GIF" wi="735" he="77" />其中,t|<sub>x</sub>是一个映射函数,它将迹t投射到活动x之中,这样所有在t|<sub>x</sub>中存在的事件均在事件x中;定义循环切割函数输入:事件日志L和循环切割集合(Σ<sub>1</sub>,...,Σ<sub>n</sub>);输出:切割后的事件日志L<sub>1</sub>,···,L<sub>n</sub>;依次遍历每一个循环切割集合,每一个集合会将原有的事件日志切割出与其对应的事件日志,有:<img file="FDA0000783407980000034.GIF" wi="679" he="72" /><img file="FDA0000783407980000036.GIF" wi="350" he="74" /><img file="FDA0000783407980000035.GIF" wi="951" he="77" /><img file="FDA0000783407980000037.GIF" wi="898" he="83" />在分别定义了各个切割的分离日志函数后,下面给出归纳挖掘的核心算法,其输入为事件日志,输出为过程树:定义归纳挖掘核心算法输入:事件日志L;输出:过程树;步骤1:判断并选择最为重要且最大的切割方法;步骤2:若选择的切割方法为选择切割,则调用选择切割函数,得到切割后的事件日志L<sub>1</sub>,···,L<sub>n,</sub>并返回{(×,((L<sub>1</sub>,0),...,(L<sub>n</sub>,0)))};步骤3:若选择的切割方法为顺序切割,则调用顺序切割函数,得到切割后的事件日志L<sub>1</sub>,···,L<sub>n,</sub>并返回{(→,((L<sub>1</sub>,0),...,(L<sub>n</sub>,0)))};步骤4:若选择的切割方法为并行切割,则调用并行切割函数,得到切割后的事件日志L<sub>1</sub>,···,L<sub>n,</sub>并返回{(∧,((L<sub>1</sub>,0),...,(L<sub>n</sub>,0)))};步骤5:若选择的切割方法为循环切割,则调用循环切割函数,得到切割后的事件日志L<sub>1</sub>,···,L<sub>n,</sub>并返回<img file="FDA0000783407980000042.GIF" wi="568" he="66" />步骤6:若事件日志为空集或事件日志只含有一个元素,返回<img file="FDA0000783407980000043.GIF" wi="61" he="61" />通过上述归纳挖掘算法从事件日志中挖掘出对应的过程树,进而得到相应的过程模型;b将扩大的事件日志与挖掘得到的过程模型进行校准,发现过程模型中存在的偏差定义移动队列设<img file="FDA0000783407980000044.GIF" wi="138" he="63" />是活动集,σ∈A*是基于活动集A的迹,N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>)是基于活动集A的Petri网;迹σ和模型N之间的移动队列γ∈(A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>)*必须满足:π<sub>1</sub>(γ)<sub>↓A</sub>≤σ,表示移动队列γ第一项在A上的投影,即迹中的移动序列是迹的前缀;存在一个完全发生队列<img file="FDA0000783407980000045.GIF" wi="192" he="103" /><img file="FDA0000783407980000048.GIF" wi="157" he="65" />有<img file="FDA0000783407980000049.GIF" wi="257" he="67" />即模型中的移动序列是完全发生序列的前缀;对于所有的移动队列里的二元组(a,t)∈γ,规定如下几种移动:若a∈A且t=&gt;&gt;,则称之为日志动作;若a=&gt;&gt;且t∈T,则称之为模型动作;若a∈A且t∈T,则称之为同步动作;其他类型称之为非法动作;所有的日志动作、模型动作和同步动作都是合法动作;一个移动队列如果只包含合法动作,那么它就是合法移动队列;在移动队列定义的基础上,对校准进行定义:定义校准设<img file="FDA0000783407980000046.GIF" wi="145" he="73" />是活动集,σ∈A*是基于活动集A的迹,N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>)是基于活动集A的Petri网;迹σ和模型N之间的校准γ∈(A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>)*是满足以下条件的移动队列:π<sub>1</sub>(γ)<sub>↓A</sub>=σ,即迹中的移动序列产生了这条迹;<img file="FDA0000783407980000041.GIF" wi="248" he="120" />即模型中的移动序列产生一个完全发生序列;<img file="FDA0000783407980000047.GIF" wi="126" he="94" />是迹σ和模型N之间所有校准的集合;定义最优校准设<img file="FDA0000783407980000055.GIF" wi="148" he="74" />是活动集,σ∈A*是基于活动集A的迹,N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>)是基于活动集A的简单稳固Petri网,函数lc:A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>→IR是移动的可能性代价函数;迹σ和模型N之间的校准<img file="FDA0000783407980000059.GIF" wi="181" he="95" />是一个最优校准当且仅当<img file="FDA0000783407980000053.GIF" wi="643" he="97" /><img file="FDA0000783407980000054.GIF" wi="400" he="78" /><img file="FDA0000783407980000051.GIF" wi="150" he="83" />是可能性代价函数为lc的情况下,迹σ和模型N之间的最优校准集合;定义标准可能性代价函数设<img file="FDA0000783407980000056.GIF" wi="147" he="74" />是活动集,N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>)是基于活动集A的简单稳固Petri网;标准可能性代价函数lc:A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>→IR将所有的移动映射到实数集上,对于所有的(x,y)∈A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>:当x∈A,y∈T并且x=α(y),或者x=&gt;&gt;,y∈T并且α(y)=τ时,lc((x,y))=0;当x∈A,y∈T并且x≠α(y),或者x=y=&gt;&gt;时,lc((x,y))=+∞;其他情况下,lc((x,y))=1;c不同结构下过程模型的修复方法对过程模型先进行分块,每一个分块都是一个单一结构,通过对每个块结构修复之后,再将修复之后的块结构进行合并,进而完成整体的过程模型的修复;每个块结构为并行、选择、循环和顺序四种结构中的一种;具体修复方法如下:对于顺序结构类的块结构,利用c1方法进行修复;对于选择结构类的块结构,利用c2方法进行修复;对于并行结构类的块结构,利用c3方法进行修复;对于循环结构类的块结构,利用c4方法进行修复;c1顺序结构的过程模型修复算法定义扩展校准设<img file="FDA0000783407980000057.GIF" wi="138" he="68" />是活动集,σ∈A*是基于活动集A的迹,N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>)是基于活动集A的Petri网;迹σ和模型N之间的扩展校准γ∈(A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>×P)*是满足以下条件的移动队列:π<sub>1</sub>(γ)<sub>↓A</sub>=σ,即迹中的移动序列产生了这条迹;<img file="FDA0000783407980000052.GIF" wi="245" he="117" />即模型中的移动序列产生一个完全发生序列;π<sub>3</sub>(γ)=(π<sub>2</sub>(γ)<sub>↓A</sub>)<sup>·</sup>,即模型中变迁发生后托肯所在库所的位置;定义最优扩展校准设<img file="FDA0000783407980000058.GIF" wi="138" he="69" />是活动集,σ∈A*是基于活动集A的迹,N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>)是基于活动集A的简单稳固Petri网,函数lc:A<sup>&gt;&gt;</sup>×T<sup>&gt;&gt;</sup>→IR是移动的可能性代价函数;迹σ和模型N之间的扩展校准<img file="FDA0000783407980000062.GIF" wi="181" he="90" />是一个最优扩展校准当且仅当<img file="FDA0000783407980000063.GIF" wi="474" he="97" /><img file="FDA0000783407980000064.GIF" wi="495" he="68" /><img file="FDA0000783407980000061.GIF" wi="143" he="75" />是可能性代价函数为lc的情况下,迹σ和模型N之间的最优校准集合;日志动作的出现,说明日志中出现了过程模型并未存在的活动;需要过增加这个活动来保证过程模型的一致性,下面给出该情形下的过程模型修复算法:算法1部分不可重演日志的日志动作修复算法输入:扩展校准γ和日志动作出现的位置i;输出:修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);步骤1:在Petri网变迁集T中添加一个变迁π<sub>1</sub>(γ[i]);步骤2:在Petri网库所集P中添加一个库所p<sub>π1(γ[i])</sub>;步骤3:在Petri网弧集F中添加一个弧(p<sub>π1(γ[i])</sub>,(π<sub>3</sub>(γ[i]))<sup>·</sup>);步骤4:删除Petri网弧集F中的弧(π<sub>3</sub>(γ[i]),(π<sub>3</sub>(γ[i]))<sup>·</sup>),并添加新的弧(π<sub>3</sub>(γ[i]),π<sub>1</sub>(γ[i]))和(π<sub>1</sub>(γ[i]),p<sub>π1(γ[i])</sub>);步骤5:输出修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);模型动作的出现,说明了事件日志中不存在这种活动;需要对这一活动进行删除来满足模型的一致性,下面给出该情形下的过程模型修复算法:算法2部分不可重演日志的模型动作修复算法输入:扩展校准γ和日志动作出现的位置i;输出:修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);步骤1:在Petri网变迁集T中删除变迁π<sub>2</sub>(γ[i]);步骤2:在Petri网库所集P中删除库所π<sub>3</sub>(γ[i]);步骤3:在Petri网弧集F中添加一个弧(<sup>·</sup>(π<sub>2</sub>(γ[i])),(π<sub>3</sub>(γ[i]))<sup>·</sup>);步骤4:删除Petri网弧集F中的弧(<sup>·</sup>(π<sub>2</sub>(γ[i])),π<sub>2</sub>(γ[i])),(π<sub>2</sub>(γ[i]),π<sub>3</sub>(γ[i]))和(π<sub>3</sub>(γ[i]),(π<sub>3</sub>(γ[i]))<sup>·</sup>);步骤5:输出修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);日志动作的出现,说明事件日志中出现了过程模型中不存在的活动,而原有的迹仍旧存在,原有的过程模型是正确的,不能更改原有的结构,只能在原有的过程模型上进行扩展,只要在相应的库所处添加一个自环变迁就能够满足这种要求;下面给出该情形下的修复算法:算法3扩展日志的日志动作修复算法输入:扩展校准γ和日志动作出现的位置i;输出:修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);步骤1:在Petri网变迁集T中添加一个变迁π<sub>1</sub>(γ[i]);步骤2:在Petri网弧集F中添加弧(π<sub>3</sub>(γ[i]),π<sub>1</sub>(γ[i]))和(π<sub>1</sub>(γ[i]),π<sub>3</sub>(γ[i]));步骤3:输出修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);模型动作的出现,说明事件日志中不存在这种活动,而原有的迹仍然存在,就不能将其删掉,而是添加一个不可见变迁来扩展模型,使其符合扩展后的的事件日志;下面给出该情形下的过程模型修复算法:算法4扩展日志的模型动作修复算法输入:扩展校准γ和日志动作出现的位置i;输出:修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);步骤1:在Petri网变迁集T中添加一个不可见变迁τ;步骤2:在Petri网弧集F中添加弧(<sup>·</sup>(π<sub>2</sub>(γ[i])),τ)和(τ,π<sub>3</sub>(γ[i]));步骤3:输出修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);c2选择结构的过程模型修复c21部分不可重演日志的过程模型修复日志动作的出现,说明日志中出现了过程模型并未存在的活动;因此需要在这条分支下增加这个活动来保证过程模型的一致性,因为将修复的部位放在了分支的内部,其原理和方法跟顺序结构下修复一致,其修复算法与步骤c1中算法1相同;c22扩展日志的过程模型修复日志动作的出现,说明事件日志中出现了过程模型中不存在的活动,而原有的迹仍旧存在,说明原有的过程模型是正确的,不能更改原有的结构,方法与顺序结构中的方案一致,添加一个自环,其修复算法与步骤c1中算法3相同;c23模型动作修复模型动作的出现,需要运用步骤c1中算法4对过程模型添加一个不可见变迁;c24对过程模型和事件日志进行校准,如果出现了日志动作和模型动作相邻的情况,且最优校准模型动作部分是选择结构的分支,那就要添加一个选择分支,分支的活动就是日志动作的内容;通过如下算法来添加这个分支:算法5添加选择结构分支输入:扩展校准γ,日志动作出现的位置i和模型动作出现的位置j;输出:修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);步骤1:在Petri网变迁集T中添加一个变迁π<sub>1</sub>(γ[i]);步骤2:在Petri网弧集F中添加弧(π<sub>3</sub>(γ[i]),π<sub>1</sub>(γ[i]))和(π<sub>1</sub>(γ[i]),π<sub>3</sub>(γ[j]));步骤3:输出修复后的Petri网N=(P,T,F,α,m<sub>i</sub>,m<sub>f</sub>);c3并行结构的过程模型修复日志动作的出现,说明事件日志中出现了新的活动,而过程模型中并不存在;因而使用步骤c1中的算法3对过程模型进行修复;模型动作的出现,说明事件日志中不存在这种活动,而原有的迹仍然存在,同样的方法,对其添加一个不可见变迁,采用步骤c1中的算法4对过程模型进行修复;c4循环结构的过程模型修复按照过程树部分对过程模型进行分解,将其分解成循环体和循环部分得到两个顺序结构,然后按照步骤c1中顺序结构进行过程模型修复。
地址 266590 山东省青岛市经济技术开发区前湾港路579号