摘要
针对柔性制造系统最小完工时间的调度问题, 本文提出一种基于时延Petri网和代价函数的调度算法. 首先, 对现有基于时延Petri网的调度算法进行分析, 引入一种考虑当前标识和后继标识到目标标识的变迁发射向量的代价函数; 其次, 通过遍历部分可达图的标识代价函数值选取下一步发射的变迁, 并利用回溯法避免系统的死锁标识和不满足系统规格的标识; 从而, 获得时延Petri网系统的逻辑变迁序列. 通过将逻辑变迁序列转为时延变迁序列, 找到最小时间的变迁序列; 进而, 获得系统最小完工时间的调度方案; 最后, 利用实例验证本文方法的可行性和有效性.
Abstract
To solve the problem of scheduling for the minimum completion time of tasks in a flexible manufacturing system, this paper proposes a scheduling algorithm based on timed Petri nets (TdPN) and cost function. Firstly, by analyzing the existing TdPN-based scheduling algorithms, we introduce a novel cost function taking into account the transition firing vectors from the current marking and subsequent markings to the target one. Then, through traversing the cost functions of markings in the partial reachable graph, the firing of next transition is selected. Meanwhile, the employment of backtracking method prevents deadlock markings and those markings that do not meet the system specifications, thereby obtaining logical transition sequences of the TdPN system. By transforming the logical transition sequences into timed ones, the minimum time transition sequences are computed, and then the scheduling scheme for the minimum completion time of the system can be obtained. Finally, the feasibility and effectiveness of the approach presented in this paper are validated through practical instances.
Keywords
1 引言
离散事件系统(discrete event systems,DES)是一类状态空间离散且状态演化由事件驱动的动态系统 [1],例如柔性制造系统(flexible manufacturing system,FMS)和项目管理系统等一系列复杂工业系统都可以抽象为DES来研究. 这些系统需要某些操作的多个作业/阶段来完成给定任务,在作业的每个处理阶段,分配不同资源来执行其操作,如机器、机器人和行进区域. 这就面临一个具有挑战性的资源受限调度问题 [2] : 给定系统的初始状态和目标状态,在固定资源条件下,如何合理地将不同资源分配给操作使得系统能在最小时间到达目标状态完成工作,从而获得高效率的调度方案. 然而,这类调度问题通常是(non-deterministic polynomial-time hard,NP)困难的 [3] .
Petri网作为一种图形工具,已广泛用于DES建模、调度和控制 [4-5] . 与图论、自动机等工具相比,Petri网能很好地刻画系统结构特征,如序列、选择、并发和同步,并分析系统行为特征 [6] . 此外,Petri网通常提供底层系统更紧凑的结构表示,特别是对于具有较大状态空间的系统. 更重要的是,Petri网的可达图(reachability graph,RG)有助于可视化可达标识和找到系统从当前状态到目标状态运行轨迹的变迁发射路径 [7],充分揭示底层系统的行为.
在具有时间约束的系统中,调度问题的关键之一是满足任务的时间要求. 因此,国内外学者试图在Petri网模型中引入时间信息来研究这一问题. 根据引入确定时间的对象不同分为库所赋时Petri网、变迁赋时 Petri网和弧赋时Petri 网 [8] . 两种主要的变迁赋时Petri 网模型是时间Petri网和时延Petri网. 时延Petri网的变迁与固定发射延时相关联. 在解决调度问题时,相比时间Petri网,时延Petri网提供了对任务执行时间的确定性,使得任务排序和安排更为直观. 因此,时延Petri网被广泛用于解决赋时DES的调度问题 [9-10] .
利用时延Petri网解决调度问题已有大量方法,例如: 基因遗传算法 [11]、粒子群算法 [12],这类结合人工智能的搜索方法需要进行编码与解码等操作的可达性判断,增加了问题处理的复杂度. Lee等 [13] 首次基于时延Petri网的RG提出了一种A ∗搜索算法. 该方法不需要搜索完整RG来获得调度方案. 然而,对于大型的复杂系统,很难在合理时间内找到最优或近优调度策略. 为提高搜索效率,研究人员提出了不同的改进方法. 其中,大多数方法通过修改A ∗算法来加速搜索过程,但都以牺牲解的质量为代价,比如具有动态移动窗口的A ∗搜索 [14] 和无死锁动态搜索 [15] . 有希望解决该问题的方法是基于RG的A ∗搜索设计更为智能的启发式函数 [16],但是许多启发式函数是从不同方面制定的,往往只适用特定场合. 此外,所考虑的系统可能存在死锁,而大多数基于RG的A ∗搜索算法难以解决系统死锁问题和状态爆炸问题.
受模型预测控制(model predictive control,MPC)思想的启发,Lefebvre [17-18] 提出了基于时延Petri网和 MPC的方法对含禁止标识的系统状态空间进行部分搜索来获得逻辑变迁序列,再将该变迁序列转换为时延变迁序列. 这种方法在一定程度上有效避免了系统的状态爆炸问题. 文献 [19] 在文献 [18] 的基础上提出了一种将逻辑变迁序列转换为时延变迁序列的优化方法,并且证明了该方法的有效性.
众所周知,MPC的基本思想是预测系统状态演化以实现控制目标. 在某些约束条件下,每个步骤的性能标准都被最小化,从而获得一系列控制动作 [20] . 文献 [17-18] 选择代价函数值最小的标识,获取相应变迁序列. 该策略主要是通过选择变迁序列中第1个使能变迁,由系统新标识的代价函数再次预测,继而计算出最小时间的时延变迁序列. 研究人员已经证明文献 [17] 的欧式距离代价函数并不能明确描述两个标识之间的距离关系,使得每次预测不一定准确. 文献 [18] 在文献 [17] 基础上,将发射向量作为代价函数,无论是准确性还是搜索效率都得到明显提升.
综上,本文在文献[18]的基础上,通过优化预测后继标识的方法,提出一种最小时间调度算法. 具体而言,本文提出新的代价函数,优化了文献 [18] 近似最小时间的调度算法,有效降低计算复杂度并且提高了算法搜索的准确性. 同时,通过文献 [19] 将逻辑变迁序列转换为时延变迁序列. 最终,提出一种计算系统所有调度方案的时延变迁序方法,以获得最小时间调度方案.
2 时延Petri网
Petri网为四元组Net = ⟨P,T,WPR,WPO⟩ [6],其中: P = { p1,p2,· · ·,pn}表示n个库所的有限集合,T ={t1,t2,· · ·,tq}表示q个变迁的有限集合,和分别是Net的后置关联矩阵和前置关联矩阵,其中代表非负整数集. Petri网的关联矩阵为A = WPO − WPR.
Petri网的标识表示为含义是为网中每个库所分配非负整数个 token. 在标识 M 中,库所 p中的token数记为 M(p). 变迁 tj 在M 下的使能度为nj (M)= min{⌊M(pk)/WPR(k,j)⌋ : pk ∈ °tj},其中: °tj为tj的前置输入库所集,WPR(k,j)为矩阵WPR 的第k行第j列的参数值,⌊ ⌋为向下取整数. 当WPR(:,tj )时,变迁tj ∈ T在标识M下是使能的,表示为M[tj ⟩,其中: WPR(:,tj)表示WPR对应tj的列向量. M下所有使能变迁集表示为 Bn(M)= {tj ∈ T|M [tj ⟩}. 使能变迁tj ∈ Bn(M)发射后会产生一个新标识(也称M的后继标识)M′ = M + A ·其中是变迁tj的发射向量,该过程用M[tj ⟩M′表示.
时延Petri网(timed Petri nets,TdPN)是一类行为受时间约束的Petri网,其每个变迁具有一个确定性的发射延时. 本文用⟨Net, M0,D⟩表示一个TdPN系统,其中: M0是系统的初始标识,续时间参数的向量(是非负实数集),则D(tj )表示变迁tj使能持续时间. 本文所考虑的TdPN具有无限服务器语义、竞争策略以及使能记忆策略 [18] . 因此,每个使能变迁tj最早在D(tj)个时间单位之后发射. 用表示变迁tj的剩余使能持续时间,每个变迁tj在使能时间后最早还需d(tj )时间单位发射,其中d(tj )= D(tj )− τ .
TdPN系统的一个时延变迁序列为表示στ的长度为 h,其中 η1,· · ·,ηh表示变迁发射时间且满足的全局发射时间记为 τ(στ)= ηh. 在忽视变迁发射时间时,用表示στ的逻辑变迁序列(σ = ε表示空序列),并用表示σ的变迁发射向量,则(ti)表示σ中 ti出现的次数.为σ 中所有变迁出现的次数和,其中且[1]1×q为全1的行向量. 对于两个序列σ和σ′,σσ′代表其串联.
对于M0使能的变迁序列στ下的路径可表示为 TR(στ,M0)= M0[(tj1 ,η1)⟩M1 · · · Mh−1[(tjh,ηh)⟩ Mh,其中M1,· · ·,Mh−1是中间标识,Mh是最终标识. 为方便起见,M ∈ TR(στ,M0)代表M存在于路径TR(στ, M0)中,t ∈ TR(στ,M0)表示变迁t在序列 σ 中至少出现一次. 如果存在满足 M0[σ⟩M的 σ,则称M从初始标识M0可达. TdPN系统中所有可从M0 到达的标识构成的集合表示为R(Net, M0). 当不存在其他时延变迁序列到达Mh,或者当存在其他满足的时延变迁序列到达Mh时,στ为最小时间的时延变迁序列.
3 调度问题陈述
3.1 调度问题及相关定义
一般情况下,实际系统的状态并不都符合要求,因此,本文在研究过程中考虑了系统存在一些非法标识. 如果标识M满足以下至少一个条件,则为非法标识: 1)M不满足系统规格; 2)M是死锁标识. 非法标识均为禁止标识.
给定一个TdPN系统⟨Net,M0,D⟩,为了找到系统从初始状态到目标状态的最小时间调度方案,1)需要寻找从初始标识M0到目标标识Mtar可行的最小时间的时延变迁序列,其中该时延变迁序列下的路径标识都合法,并且全局发射时间相同的两个时延变迁序列属于同一调度方案; 2)为减少搜索工作量,在系统初始标识下检查是否存在可行变迁序列是必要的.
定义 1 给定一个TdPN系统⟨Net,M0,D⟩和两个变迁发射向量相同,但变迁发射顺序不同的时延变迁序列 στ 和若其满足和则στ和为从初始标识M0到目标标识Mtar同一调度方案的两个时延变迁序列.
定义 2 给定一个TdPN系统⟨Net, M0,D⟩,若可达标识M下的变迁都不能发射,则M为死锁标识 [21] .
定义 3 给定一个TdPN系统⟨Net,M0,D⟩和目标标识Mtar,则满足M0[σ⟩Mtar的任意变迁序列σ都存在一个非负整数的 n 维发射向量使得Mtar = M0 + A · [22] .
定义 4 给定一个从M0发射变迁序列στ可达的标识Mtar(即满足),则满足M ∈ TR(στ,M0)的标识称为预选标识,否则为禁止标识. 其中: 禁止标识集用Γ(M0,Mtar)表示,预选标识集合表示为Pre(M0,Mtar)= {M ∈TR(στ, M0)|στ : M0 [στ ⟩Mtar}.
定义 5 给定一个TdPN系统⟨Net,M0,D⟩和目标标识Mtar,则满足M0[σ⟩Mtar的逻辑变迁序列集合可表示为E(M0,Mtar)={σ ∈ T ∗ |M0[σ⟩Mtar},满足 M0[στ ⟩Mtar的时延变迁序列集合为Eτ(M0,Mtar)= {στ ∈(T × R +) ∗ |M0[στ ⟩Mtar}.
定义 6 给定一个TdPN系统⟨Net,M0,D⟩及其目标标识 Mtar,对于所有满足M0[στ ⟩Mtar 的时延变迁序列,若∈Eτ (M0,Mtar)满足τ ()≤τ (στ),其中στ ∈ Eτ (M0,Mtar)\ {},则称为M0到Mtar的最小时间时延变迁序列.
性质 1 给定一个TdPN系统⟨Net,M0,D⟩和变迁序列σ,σ ′ . 若M[σ ′ ⟩M′和M′ [σ⟩Mtar成立,则存在一个非负整数的n 维向量 使得M[σ ′′⟩ Mtar.
证若M[σ ′ ⟩M′和M′ [σ⟩Mtar成立,由关联矩阵可知M′ = M +A.和Mtar = M′+A·,联立两式可得Mtar = M + A ·. 假设使M[σ ′′⟩Mtar成立的一个变迁序列为σ ′′ ,即Mtar = M + A · . 因此,可证得 证毕.
3.2 基于MPC思想的搜索策略与代价函数设定
MPC是一种滚动优化的控制方法. 在文献 [18] 中,作者将系统可达图标识作为预测模型,并且利用回溯法矫正禁止标识的干扰,其滚动优化策略是将DES中的离散事件发展过程抽象为Petri网可达图的生成过程. 在可达图生成的过程中,计算当前标识变迁发射长度为H内所有可达标识代价函数值,并从中选取代价函数值最小的标识,以获取最优的下一发射变迁. 在多次迭代到达Mtar后获得最优的逻辑变迁序列. 如图1所示,本文基于 MPC 思想的搜索策略是在文献 [18] 基础上提出新的代价函数并设定H恒为1. 每次只计算可达图中当前标识的后继标识代价函数值,并基于当前标识以及后继标识的代价函数值选取下一变迁. 与此同时,通过回溯法避免不合法标识.
图1基于MPC思想的搜索策略流程图
Fig.1Flow chart of search strategy based on MPC
由定义3可知,若不存在,则在M0下没有可行的逻辑变迁序列σ0,即由M0下的变迁发射向量可初步判断系统是否存在可行的逻辑变迁序列. 因此,本文将M0代价函数设为,且满足下式:
(1)
其中:表示M0到Mtar的变迁发射向量,σ0为Mtar从M0可达的变迁序列,为集合中值最小的变迁发射向量.
式(1)确定了M0到Mtar可用的变迁发射向量,从而可以预测M0到Mtar近似最小时间的逻辑变迁序列. 假设Mi和Mi−1为逻辑变迁序列下路径中的中间标识,其中由性质1可知,标识Mi到Mtar的发射向量满足下式:
(2)
其中:(为正整数集),表示标识Mi−1到Mtar的发射向量; 为变迁ti−1的发射向量.
由式(2)得到了逻辑变迁序列下路径的中间标识发射向量,使得后继标识的选择更加准确. 因此,本文设定标识Mi到Mtar的代价函数为注意发射向量的求解方法如下: 由可得非线性齐次方程组再由消元法与矩阵初等变换求,其中中的每个值都为非负整数.
由式(1)可知,J(M0)的确定利用了M0到Mtar变迁发射向量的关系; 由式(2)可知, J(Mi)的确定利用了当前标识和后继标识两者到Mtar的变迁发射向量之间的关系. 当由于系统可能存在死锁标识,通过J(M0)不能直接确定存在逻辑变迁序列,需要进一步判断,但是当可知不存在逻辑变迁序列; 当则只有成立时,才能确定Mi为新标识,并得到逻辑变迁序列中的下一个使能变迁的发射. 具体的搜索算法将在下一节展示.
4 近似最小时间调度算法优化
4.1 近似最小时间的逻辑变迁序列
本文通过算法1(见表1)中的代价函数值确定下一个标识,从而确定下一个变迁 t∗的发射. t ∗的确定在变迁集中选择. 由于标识 M下可能存在同时使能的变迁tj1和tj2,且它们都在所选的逻辑变迁序列中,则tj1和tj2都可作为下一个变迁. 然而,tj1和tj2在M下的逻辑变迁序列中具有先后顺序,因此,本文通过设置相关集合储存这类变迁和后继标识,以及指定的代价函数值,并确定逻辑变迁序列中下一个变迁. 其中: S(M)为储存后继标识的集合, T ⋄(t)为储存变迁的集合,Q(M,Mtar, J(M))表示储存代价函数值的集合,其具体表达式如下:
为了确定下一个标识及变迁,步骤3–5计算出M′ 和J(M′). 步骤6–12将满足条件的变迁以及对应标识和代价函数值储存在相应集合中. 当J(M′)= ε,表示标识M′∈/ Pre(M0,Mtar),因此,令Γ ←Γ ∪{M′},防止回溯后再次访问该标识. 考虑到J(Mtar)≡ ε,可通过判断式()找到Mtar. 值得注意的是,代价函数值不能排除死锁的影响. 若 J(M)存在,但是Bn(M)= ∅,则M为死锁标识,因此,将此标识加入Γ,防止下一次访问. 同时,设置回溯标志位backtracking=1,使得回溯到逻辑变迁序列下路径的上一标识(见步骤15–17). 当S(M)存在多个标识时,表示存在多条符合条件的逻辑变迁序列. 为了获取其中一条逻辑变迁序列,可选取S(M)中任意标识作为下一标识. 由于算法1每次运算只确定逻辑变迁序列中的一个变迁,为了减少算法计算复杂度,本文选取集合S(M)中储存的第一个标识M∗作为下一标识. 同理, t∗为集合T⋄ (t)中储存的第1个变迁,J(M∗ )为集合Q(M,Mtar,J(M))中储存的第1个代价函数(见步骤19–21).则当成立时,由M[t⟩M′和 M′ = Mtar可确定σ最后的变迁为t.
表1计算TdPN系统下一个变迁t ∗
Table1Computation of the next transition t ∗ for TdPN systems
证由定义3可知,若则存在一个非负整数的 n 维向量满足等式即由可知变迁t 在标识M 下能发射; 又因为标识M是从M0发射逻辑变迁序列σ获得,因此,可确定σ最后的变迁为t. 证毕.
算法1每次确定逻辑变迁序列的一个变迁,为了获得逻辑变迁序列,将通过算法2(见表2)对算法1迭代来解决.
在算法2中,若M不满足系统规格(即非法),初始化时可将该标识加入Γ,即将Γ ← ∅ 改为Γ ← {M}. 算法2对算法1每次迭代都会排除Γ中的标识为下一个标识. 若M是死锁标识,通过算法1将返回条件backtracking=1,回溯到σ下路径的上一标识,从而避开死锁标识的选择. 步骤2通过式(1)计算若存在并且Mtar从M0可达,则可确定存在σ. 步骤3–5确定 J(M0). 步骤9–10当M0为死锁标识或不满足系统规格,令success= −1,表示不存在满足条件的σ. 在步骤11–16中,若backtracking=0,即可确定下一标识和变迁; 若backtracking=1,表示当前标识是死锁标识,需要回溯到上一标识. 为此,本文利用集合S ∗(M)记录所选σ下路径的标识,通过去除S∗ (M)最后所选标识MEND及σ中最后选择的变迁tEND回溯到上一标识,转而搜索其他符合条件的标识. 步骤18–20中的 M = Mtar 表示搜索到的 σ 中最后一个变迁,可得 success=1.
表2计算TdPN系统的逻辑变迁序列σ
Table2Computation of the logical transition sequence σ for TdPN systems
定理 2 给定一个初始标识为M0的TdPN系统及其目标标识Mtar ∈ R(Net,M0),通过算法 2对算法1迭代可避免死锁标识并得到逻辑变迁序列σ ∈ E(M0,Mtar).
证假设由式(1)得且算法2通过算法1确定下一个发射的变迁. 具体而言,算法1由确定变迁可以发射,并通过确定为 σ 中的变迁. 当系统不存在死锁标识时,算法2 通过多次迭代后可知为严格单调递减. 当由定理1可确定σ最后的变迁. 当 M0为死锁标识,可得success= −1并返回σ = ε. 若当前标识Mk的后继标识Mk+1为死锁标识,则backtraking=1,回溯到Mk ∈ S ∗ (M)的上一个标识Mk−1,然后,继续通过算法1计算标识Mk−1下的变迁. 若backtraking=0,则可确定新的变迁此时有再通过算法1将作为当前标识,并确定其后继标识和变迁综上,算法2 对算法1迭代可获得σ并且可以避免死锁标识. 证毕.
4.2 近似最小时间的时延变迁序列
给定一个逻辑变迁序列σ,在不改变σ变迁发射顺序下,通过算法3(见表3)可将σ转为时延变迁序列στ . 其核心是利用CAL,CAL表示在当前标识M下处于使能状态的变迁及其剩余使能持续时间的集合,迭代计算στ中变迁的发射时间,并更新M处已发射变迁的剩余使能持续时间 [19] . 其中: 对于步骤3–20中通过变迁序列σ得到的每一个标识M,将其对应的使能变迁及剩余使能持续时间由CALnew进行保存,并添加至集合 进而得到变迁的全局发射时间(见步骤3–4); 步骤5–12 找与变迁能够同时使能的变迁t ′及其剩余使能持续时间; 步骤14–19找到发射后生成的变迁t ′′ 及其剩余使能持续时间,表示σ中所有的变迁剩余使能持续时间. 初始状态等于. 其中: 算法3应用变迁最早发射策略,将变迁发射向量相同而变迁发射顺序不同的逻辑变迁序列σ和σ ′转为时延变迁序列后,
1)给定初始标识M0 = [1 0 0 0 0]T,目标标识 Mtar = [0 0 0 0 1]T. 根据算法1–2,该TdPN的逻辑变迁序列搜索如图3所示. 首先,计算出J(M0)= [1 0 1 0 2 1 2]T,即存在逻辑变迁序列且 = 7. 继而计算出 M0 后继标识M1,M2,M3 及其代价函数J(M1),J(M2),J(M3)和变迁t1,t2,t5. 其中只有 J(M1)≠ ε,挑选M1为下一标识并确定下一变迁为 t1. 算法 2对算法1迭代6次后,可得当前标识M = [0 0 0 1 1]T及其代价函数J(M)= [0 0 0 0 0 0 1]T. 由此可知 = 1,算法2再通过对算法1迭代后得到标识M = Mtar,因此,success←1表示搜索到逻辑变迁序列中最后一个变迁,即得到 最后,通过算法 3将σ 转为
图3蓝色箭头和变迁为所选逻辑变迁序列下的路径,黑色箭头为不可选路径. 算法2在整个计算过程,共访问18个节点(标识),即平均每次访问2.57个节点. 在求得相同逻辑变迁序列情况下,文献 [18] 则需至少访问27个节点,平均每次访问3.38个节点.
表3将σ转换为时延变迁序列στ
Table3Transtormation of σ into στ
2)给定M0 =[0 0 0 3 0]T和Mtar =[0 0 0 0 1]T,可得J(M0)= [0 0 0 0 0 2 3]T. 如图4所示,算法2 对算法 1第1次迭代可得J(M1)和J(M2)都不为空,此时,S(M)= {M1,M2},T ⋄(t)= {t6,t7},Q(M,Mtar,J(M))= {J(M1),J(M2)},即M0下的变迁t6 和t7都可被选为下一变迁. 本文选择S(M)中第1个标识M1作为下一个标识以及对应T ⋄ (t)中第1个变迁 t6作为下一变迁. 算法 2对算法 1多次迭代后得出. 具体情况如图4所示(图中忽略了部分可达图中不可选标识),其中存在3条逻辑变迁序列: 和 其时延变迁序列分别为
由定义1可知,通过算法3将变迁发射向量相同而变迁发射顺序不同的σ转为στ后,3条时延变迁序列为同一调度方案. 其中序列是选择S(M)和 T ⋄(t)中第1个值的结果. 若要找到所有符合要求的逻辑变迁序列,则需进一步优化对S(M),T⋄(t),Q(M,Mtar,J(M))中各个参数的选择. 结合图2和图4可以发现变迁t6和t7同时使能使得t6,t7都可以被选择,导致出现多条符合条件的逻辑变迁序列.
图3部分搜索的可达图
Fig.3Partial searching reachable graph
4.3 TdPN系统最小时间调度
给定一个TdPN系统,可能会存在多个从M0到达 Mtar的στ,基于文献[18]的优化算法只能得到一条近似最小时间的στ . 由定义3可知,当M0到Mtar的逻辑变迁序列存在时,必然存在一个通过合理的选取(即J(M0)),利用算法2可快速算出符合条件的σ0,再由算法3转为στ . 由于不同J(M0)对应不同逻辑变迁序列,通过不断标记已经选取的J(M0),再计算出未被标记J(M0)对应的逻辑变迁序列并转为时延变迁序列,可将所有调度方案计算出来. 详细流程如图5所示.
图4逻辑变迁序列搜索图
Fig.4Graph for searching logical transition sequences
图5时延变迁序列求解流程图
Fig.5Flow chart for solving timed transition sequences
定理 3 给定一个TdPN系统⟨Net, M0,D⟩,通过算法2–3可以得到系统所有调度方案的时延变迁序列στ ∈ Eτ(M0,Mtar),进而得到最小时间时延变迁序列 ∈ Eτ(M0,Mtar).
证由定理2可知,算法2对算法1迭代可得逻辑变迁序列σ ∈ E(M0,Mtar). 算法3将σ转换为时延变迁序列στ,同时,将变迁发射向量相同而变迁发射顺序不同的逻辑变迁序列σ和σ ′转为时延变迁序列后,可得τ(στ)= τ(). 通过将已访问的J(M0)标记,由算法 2–3计算出所有 对应的时延变迁序列 στ ∈ Eτ(M0,Mtar). 由定义1可知,相同下变迁发射顺序不同的时延变迁序列的τ (στ)相等属于同一调度方案,因此,通过该方法可以计算出系统所有方案的时延变迁序列στ ∈ Eτ(M0,Mtar). 由定义6,对于所有满足 M0[στ ⟩Mtar的时延变迁序列,∈ Eτ(M0,Mtar)满足 从而可得最小时间的时延变迁序列 . 证毕.
4.4 复杂度分析
目前,相关工作都未考虑优化代价函数提高计算效率,而是在文献 [18] 代价函数基础上引入其他智能搜索算法,以获取更好的调度方案. 例如文献 [19] 将文献 [18] 的代价函数与混合滤波波束搜索算法结合,尽管提高了搜索的准确性,但面对复杂系统时,会消耗大量时间求解所需参数,并且由于受代价函数的约束,难以得到系统的最小时间调度方案. 因此,下面结合图2所示例子将本文与文献 [18] 中的方法进行对比.
如表4所示,本文算法2在计算逻辑变迁序列在效率上比文献 [18] 方法有较大提升. 其中: Ql为所需的逻辑变迁序列下的路径访问节点(标识),Qsp为非所选路径访问的节点. 相比文献 [18],本文(J(M))方法只有当访问节点为死锁标识才有几率访问Qsp,即Qsp ≈ 0,而文献 [18] 由于仅考虑当前标识到目标标识代价函数值,其中访问节点存在大量不可忽略的伪解标识,因此需要大量回溯才能解决这个问题. 实际对比情况如表5所示,其结果是图2所示的TdPN在获得相同逻辑变迁序列下测试多次后的平均访问节点数.
表4σ的算法复杂度对比
Table4Comparison of algorithmic complexity of σ
表5σ访问节点对比
Table5Comparison of access nodes for σ
5 FMS最小时间调度分析与对比
为验证本文方法的有效性,考虑一个可以处理两种类型零件 b1和b2 的FMS,如图6所示. 其中: b1型零件有两条加工路线:而b2型零件只有1条加工路线目标需求是得到零件b1和b2所有调度方案,并从中选择最优调度方案. 库所和变迁的含义见表6.
图6某FMS的TdPN模型
Fig.6The TdPN model of an FMS
表6库所和变迁的含义
Table6Implication of places and transitions
由表6可知D = [2 5 8 1 4 3 6 4 2 6 3 4](工序时间均设为单位时间),零件1库和零件2库加入2个未加工零件,初始标识以及目标标识如下:
由式(1)可知 {[2 2 2 2 2 0 0 0 2 2 2 2]T,[2 1 1 1 2 1 1 1 2 2 2 2]T,[2 0 0 0 2 2 2 2 2 2 2 2]T},即系统有3 个调度方案. 其中: 方案1: 2个 b1型零件选用路线w1,2个b2型零件选用路线w3; 方案2: 2个b1 型零件分别选用路线w1和w2,2个b2型零件选用路线w3; 方案3: 2个b1型零件选用路线w2,2 个 b2型零件选用路线w3.3个方案中值分别为70,69和68. 因此,上述调度方案分别记为: 1)w1,w3,70; 2)w1,w2,w3,69; 3)w2,w3,68. 由此可知,p1中b1型零件可选择路线w1或w2加工,b2型零件则只可选择路线w3. 当p9中b2型零件不为空时,调度方案的数量仅与库所p1中的资源数量相关. 若b1型零件有个,则图6所示的TdPN系统必然有x + 1个调度方案.
根据图5,由式(1),首先,选择值最小的方案 3并标记J(M0),通过算2–3计算出该方案的时延变迁序列,即
再选取计算中值最小且未被标记的方案2的时延变迁序列,即
最后计算方案1的时延变迁序列,即
通过本文方法可计算出所有方案的时延变迁序列,其中方案 3“w2,w3,68”的值最小,与文献 [18] 方法计算的方案时间相同,但显然其不是最小时间的调度方案. 表7是通过图6所示TdPN模型与文献 [18] 计算的στ调度方案对比结果,其中文献 [18] 只能计算出一条近似最小时间的调度方案,而本文计算的方案数等于系统存在的方案数. 结合表7和上述分析可知,本文可以计算出所有的时延变迁序列方案,并最终获得最小时间的调度方案.
6 结论
为获取柔性制造系统最小完工时间的调度方案,在现有基于时延Petri网的近似最小时间时延变迁序列搜索算法的基础上,提出了一种基于时延Petri网与代价函数的优化调度算法. 首先,通过改进的代价函数搜索可行的逻辑变迁序列. 其次,将逻辑变迁序列转为时延变迁序列,并通过初始标识代价函数标记已经找到的时延变迁序列,来计算所有可能的时延变迁序列,最终,找到系统最小完工时间的调度方案. 相比现有近似最小时间的调度算法,本文提出的优化调度算法能有效降低计算复杂度并提高算法搜索的准确性. 然而,当时延Petri网系统存在大量可行时延变迁序列时,找出所有变迁序列的计算量会增大. 下一步工作将通过设置更优的代价函数以快速找到最小时间的时延变迁序列. 此外,在本文方法的基础上研究含不可控或不可观变迁的Petri网系统优化调度也将是一项挑战性的工作.
注 1 p ∗ = p14 + 2p15 +p16 +p17 + 2p18,多集形式的初始标识M0 = 2p1 + 2p9 +p14 + 2p15 +p16 +p17 + 2p18等价于M0 = [2 0 0 0 0 0 0 0 2 0 0 0 0 1 2 1 1 2]T,其代表零件1库和2库中各有两个待加工的零件. 访问节点数是所计算方案总体节点数的平均值,例如上述案例计算的方案 1,2,3 访问节点数测试结果分别为49,39,50,则该案例访问节点数定为46.