基于Petri网与改进遗传算法的自动化立体仓库拣选作业调
度建模优化方法
技术领域
背景技术
[0002] 生产制造业发展的初期,物流发展未得到应有的重视,导致生产规模越大、生产
制造过程越柔性化、越自动化,物流的落后导致其与生产制造系统无法匹配的矛盾就越突出。而现代物流的重要表现形式为自动化立体仓库,是仓储发展的趋势,可有效提高空间利用率,降低物流成本,对于改善企业仓储和生产管理
水平等方面具有传统仓库无可比拟的优势。自动化立体仓库经历了多个阶段,如图1所示。
[0003] 在人工、机械化仓储阶段,货物托盘为随机摆放存储,人工将货物托盘放置在货架上任意空余
位置。70年代初期,伴随着巷道堆垛机、移动式货架、旋转体式货架及其他搬运设备在自动化仓储中运用,进入自动化仓储阶段,但设备的独立性造成为自动化
孤岛,无法有效联系系统整体。70年代末为自动化立体仓库发展的第二个阶段,生产和分配领域越来越多的应用自动化技术,集成化自动化孤岛显得尤为重要和迫切,集成系统概念也由此诞生。集成化研究实现了自动化设备与信息决策间的集成,逐渐向智能化控制方向发展,从而使自动化立体仓库发展进入第三个发展阶段,即
人工智能仓储的初级发展阶段。
[0004] 国内外针对自动化立体仓库的智能化进行大量研究,其中主要是为达到提升其效率的优化决策方面研究,一般为货位分配优化研究、堆垛机作业调度优化研究、输送系统输送过程优化调度研究等。我国针对自动化立体仓库的研究起步较晚,但是与西方发达国家在信息处理,自动化程度等方面存在较大差距,系统长期运行过程中问题逐渐凸显,信息处理方式不完善和低效会导致自动化立体仓库作业调度的不合理安排,从而大大降低自动化立体仓库的仓储效率,成本也居高不下。
[0005] 自动化立体仓库是一个随机的复杂系统,特别当系统面临高强度与大批量快速拣选作业时,作业若仅依照顺序执行,忽略存在的冲突及共享资源竞争等情况,由于拣选作业任务目标货位点的随机分布性,堆垛机在前序作业任务与后续作业任务间执行时存在大量空载无效运行时间,进而导致系统有效作业运行时间、路径无法达到最优,将很大程度上降低系统整体运作效率,自动化立体仓库拣选作业调度寻优时一般采用传统的精确算法(可求出最优解的算法,如动态规划算法、枚举法等)或智能算法(无限逼近最优解的算法,粒子群算法、蚁群算法、模拟
退火算法、禁忌搜索算法、遗传算法等)进行求解,传统精确算法很难处理求解效率与问题规模呈指数关系,很难在可接受的时间内求出最优或次优解,智能算法在可接受的时间内对最优解进行无限逼近,但对于自动化立体仓库拣选作业调度这种离散寻优问题时所体现的效果不一,寻优时前期或者后期存在导致寻优结果变差的可能,因此为了在可接受的时间内时间优质快速寻优,可对原有的智能算法进行设计改进。
[0006] 目前,自动化立体仓库数学模型通常采用多项式组合,且利用标准智能算法对其进行优化研究,对基于Petri网自动化立体仓库作业调度建模、基于Petri网与改进遗传算法结合算法的调度优化并无人进行研究。
发明内容
[0007] 有鉴于此,本发明的目的在于提供一种基于Petri网与改进遗传算法的自动化立体仓库拣选作业调度建模优化方法,该方法可以实现自动化立体仓库拣选作业调度建模及作业调度快速、优质寻优,降低自动化立体仓库拣选作业执行过程中的空载无效运行时间。
[0008] 为达到上述目的,本发明提供如下技术方案:
[0009] 基于Petri网与改进遗传算法的自动化立体仓库拣选作业调度建模优化方法,具体步骤如下:
[0010] 1)建立自动化立体仓库拣选作业调度Petri网模型,并提出拣选作业调度优化的固定部分及可变部分时间消耗的数学表达。
[0011] 设一个六元组赋量网Petri网Σ=(P,T,I,O,τ,M)为拣选作业调度过程的Petri网模型,其中各个元素的定义如下:
[0012] ①P:P={P0,Px1,Px2,Px3,…,Pxi}为库所的有限集合,在拣选作业调度Petri网模型中代表作业过程需要遍历的所有货位点,其中P0堆垛机原点,即堆垛机处于出入库台位置。
[0013] ②T: 为时延变迁的有限集合表示,代表堆垛机在任意两个目标货位点间运行过程,例如 代表堆垛机由货位点Px1向货位点Px2的运行过程。
[0014] ③I、O:分别代表联系各目标货位点与堆垛机运行过程的输入输出弧集。
[0015] ④τ: 为时延变迁所对应的时延常数,代表堆垛机在任意两个目标货位点间运行所需要的时间消耗。为了更好的反应变迁时延,可建立对应的时间到达矩阵τ(i+1)×(i+1)。
[0016]
[0017] 可知,时间到达矩阵τ(i+1)×(i+1)为对称矩阵,即τ(i+1)×(i+1)T=τ(i+1)×(i+1)。
[0018] ⑤M:托肯标识M代表堆垛机目前所处的货位点。
[0019] ⑥Petri网Σ=(P,T,I,O,M0)的结构(P,T,I,O)可用一个m行n列矩阵
[0020] A=[aij]m×n
[0021] 来表示,其中
[0022]
[0023]
[0024]
[0025] 称A为网N=(P,T,I,O)的关联矩阵(incidence matrix)。由上两式构成的两个m行n列矩阵
[0026]
[0027] 分别称为N=(P,T,I,O)的输入矩阵和输出矩阵。
[0028] 在上述定义的
基础上,建立拣选作业调度Petri网模型如图2所示。
[0029] 图2中所示的拣选作业调度Petri网模型成立还需要限制一定的条件,其限制条件如下:
[0030] 对于同一库所的输入输出变迁,应满足
[0031]
[0032] 对于所有的变迁有向弧,将变迁以向量的形式表示应满足
[0033]
[0034] 该式使得堆垛机能够遍历所有的目标作业货位。
[0035] 建立拣选作业调度Petri网模型后,需要对其可变时间部分进行分析,并提出拣选作业调度Petri网模型运行时间,即堆垛机在由初始位置出发,遍历所有目标货位点的时间消耗。利用拣选作业调度Petri网模型的输入矩阵以及可查到的时间到达矩阵τ(i+1)×(i+1)中对应的变迁的延时常数进行数学分析。
[0036] 所示作业调度Petri网模型消耗的延时向量为
[0037]
[0038] 所以,作业调度过程可变部分消耗的时间可表示为
[0039] τvar=ηA-τ1
[0040] 作业调度过程不变部分消耗的时间可表示为
[0041] τconst=2eτ(i+1)×(i+1)η=2[1 0 … 0 0]τ(i+1)×(i+1)[1 1 … 1 1][0042] 2)设计基于Petri网与改进遗传算法结合的作业调度
优化算法,实现对作业调度过程的优质寻优和快速寻优。
[0043] 对标准的遗传算法进行改进,设计一种逆转算子,并且改善遗传算法的局部搜索能
力,即将
染色体上基因序列在两处断裂,并将两处间的基因逆转重新插入原基因位置,形成新的基因序列,只有在进行逆转算子操作后适应度提高,这样的逆转算子操作才有效,否则丢弃。基于Petri网与改进遗传算法结合算法设计步骤如下:
[0044] 步骤1:建立初代拣选作业调度Petri网模型;
[0045] 设当前t时间有xi个作业任务,并针对xi个拣选作业任务建立初代拣选作业调度Petri网模型,其建立过程如1)中所述:
[0046] 步骤2:基因编码和解码
[0047] 初代拣选作业调度Petri网模型 代表模型的一个可行的调度方案,染色体被分为i+2段基因,每一段基因代表一个作业目标货位,转化过程如下式所示:
[0048]
[0049] 同理,在进行解码时即为上式的逆过程,即
[0050]
[0051] 步骤3:随机扩展种群规模
[0052] 根据初代拣选作业调度Petri网模型对应的染色体基因序列使用随机方法扩展,即对(P0,Px1,Px2,…,Pxm,…,Pxn,…,Pxi,P0)进行基因的间位置随机互换。种群规模使用N表示,N过小无法提供足够的样本信息,使得很难得到最优解;而N过大会导致收敛速度过慢,影响寻优效率,一般种群规模取N=10~200之间较为适宜。
[0053] 步骤4:适应度函数
[0054] 适应度函数值大小反应个体适应环境的能力强弱,适应度函数值越大对应的个体适应能力越强,反应个体的基因越优秀。作业调度Petri网模型与遗传算法的结合中将作业调度过程可变部分时间消耗作为构建适应度函数的主要因素。一个可行的作业调度过程可变部分消耗的时间可表示为
[0055] τvar=ηA-τ1
[0056] 可以构造对应的适应度函数为
[0057]
[0058] 式中γ为放大系数,Q为常数。利用放大系数γ增大个体适应度值间的差距,这样便于后续的选择算子操作。
[0059] 步骤5:选择操作
[0060] 在进行个体选择时,往往希望适应度值大的个体能够将优秀基因能够更大概率的遗传给下一代,选择算子可有效的选择较为优秀的基因个体作为父代,而舍弃适应度小的个体,使得适应度较大的个体尽可能的保留在下一代群体中,从而避免丢失优秀遗传信息,并且对全局收敛速度及计算效率有所提升。每个个体遗传的概率可通过下式计算:
[0061]
[0062] 式中为Pi为个体遗传的概率,N为种群规模;ηi为第i个个体的适应度。从式中可以看出,个体的适应度越大,其被选择的概率也随之增大,即保证了适应度大的个体更有可能能够被选择进入下一代。在进行选择操作时,使用经典的轮盘选择方式,如图3所示。
[0063] 适应度最高的个体i具有最大的遗传概率Pi,当随机产生一个0~2π间的随机数,一旦落入某个个体扇区,则该个体被选为下一代的一个个体,持续选择直到所有群体内个体均被选择出来结束。
[0064] 步骤6:交叉算子
[0065] 对于已经过编码的个体染色体间进行交叉互换基因时,可能会出现染色体中基因重复的情况,而作业调度过程需要保证单次遍历所有的作业任务目标货位点,因此在进行基因交叉时采用循环交叉的方式,例如两条染色体:
[0066] chromsome1=(P0,P1,P5,P3,P4,P2,P6,P0)
[0067] chromsome2=(P0,P4,P2,P1,P3,P6,P5,P0)
[0068] 首尾的两个基因位置不变,对中间部分进行循环交叉,即首先记录chromsome1中P1的位置为2,而chromsome 2中P1的位置为4;chromsome1中位置为4的基因为P3,而chromsome 2中P3的位置为5;chromsome1中位置为5的基因为P4,而P4位于chromsome2中的位置为2,至此循环结束。因为保持染色体中位置2、4、5的基因不变,其他位置进行交叉互换,从而得到的交叉后的染色体基因序列为:
[0069] chromsome1'=(P0,P1,P2,P3,P4,P6,P5,P0)
[0070] chromsome2'=(P0,P4,P5,P1,P3,P2,P6,P0)
[0071] 其中chromsome1'与chromsome2'即为子代对应的染色体基因序列。
[0072] 在进行交叉算子操作时,设定一个交叉概率Pc,并在每次交叉之前产生一个P→(0~1)之间的随机数,当P≤Pc时发生交叉算子操作。通常设定0.6≤Pc≤0.9,即设定的交叉概率越大,发生交叉算子操作的可能性越大。
[0073] 步骤7:变异算子
[0074] 对于变异操作,可以通过对染色体上的两个基因位置进行互换来实现变异操作。例如一条染色体:
[0075] chromsome1=(P0,P1,P5,P3,P4,P2,P6,P0)
[0076] 随机产生两个m,n→(2~7)之间的随机整数,若m=2、n=5,即对chromsome1中位置2及位置5基因进行交换实现变异,变异后的染色体基因序列为
[0077] chromsome1'=(P0,P4,P5,P3,P1,P2,P6,P0)
[0078] 在进行变异算子操作时,设定一个变异概率Pm,并在每次变异之前产生一个P→(0~1)之间的随机数,当P≤Pm时发生变异算子操作。通常设定0.001≤Pm≤0.2,即发生变异算子操作的可能性一般较小。
[0079] 步骤8:逆转算子
[0080] 遗传算法中交叉算子操作的搜索能力有限,因此为了使得选择、交叉、变异产生的新个体能够更多的继承父代的优秀基因,并且进一步提高寻优效率,对标准的遗传算法进行改进,设计一种逆转算子,并且改善遗传算法的局部搜索能力,即将染色体上基因序列在两处断裂,并将两处间的基因逆转重新插入原基因位置,形成新的基因序列,只有在进行逆转算子操作后适应度提高,这样的逆转算子操作才有效,否则丢弃。例如一条染色体:
[0081] chromsome1=(P0,P1,P5,P3,P4,P2,P6,P0)
[0082] 随机产生两个m,n→(2~7)之间的随机整数,若m=3、n=6,即对chromsome1中位置3及位置6间基因进行逆转,并插入原位置,逆转算子操作后的染色体基因序为[0083] chromsome1'=(P0,P1,P5,P6,P2,P4,P3,P0)
[0084] 其实基因
片段(P3,P4,P2,P6)与(P6,P2,P4,P3)所代表的信息是相同的,即所对应的可变部分时间消耗是相同的,这样可以保证下一代个体能够更多的遗传父代的优良基因片段,承载更多的父代信息。若经过逆转算子操作后个体的适应度提升,则接受该逆转算子操作。
[0085] 步骤9:终止判断
[0086] 当遗传算法计算过程达到之前所设定的代数之后,停止遗传算法计算,并输出当前最优结果。
[0087] 步骤10:终代拣选作业调度Petri网模型
[0088] 根据改进遗传算法计算寻优所得的作业调度方案结果,将最优染色体基因序列再次转化为对应的变迁序列,并使用它来描述对应的终代拣选作业调度Petri网模型,即完成[0089]
[0090] 的解码工作。
[0091] 3)根据所设计的基于Petri网与遗传算法结合的作业调度优化算法设计自动化立体仓库拣选作业调度优化系统,并可对所设计算法与标准遗传算法求解过程效率和优化结果进行比较,验证所设计算法的优势。
[0092] 本发明的有益效果在于:本方法可以实现自动化立体仓库拣选作业调度建模及作业调度快速、优质寻优,降低自动化立体仓库拣选作业执行过程中的空载无效运行时间。
附图说明
[0093] 为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:
[0094] 图1为自动化立体仓库技术发展示意图;
[0095] 图2为拣选作业调度Petri网模型图;
[0096] 图3为轮盘选择方式示意图;
[0097] 图4为初代拣选作业调度Petri网模型图;
[0098] 图5为终代拣选作业调度Petri网模型图;
[0099] 图6为拣选作业调度优化系统;
[0100] 图7为初始拣选作业Petri网线路图;
[0101] 图8为拣选作业调度优化对比图;
[0102] 图9为本发明所述方法的流程示意图。
具体实施方式
[0103] 下面将结合附图,对本发明的优选
实施例进行详细的描述。
[0104] 图9为本发明所述方法的流程示意图,如图所示,本方法包括以下步骤:步骤一:建立自动化立体仓库拣选作业调度Petri网模型,并提出拣选作业调度优化的固定部分及可变部分时间消耗的数学表达,从数学的层面研究拣选作业调度优化问题;步骤二:设计基于Petri网与改进遗传算法结合的作业调度优化算法,将Petri网与改进遗传算法进行结合,并设计一种逆转算子对遗传算法进行改进,实现对作业调度过程的优质寻优和快速寻优;步骤三:根据所设计的基于Petri网与遗传算法结合的作业调度优化算法设计自动化立体仓库拣选作业调度优化系统,并对所设计算法与标准遗传算法求解过程效率和优化结果进行比较,验证所设计算法的优势。
[0105] 步骤1:设一个六元组赋量网Petri网Σ=(P,T,I,O,τ,M)为拣选作业调度过程的Petri网模型,示例的参数(对于不同自动化立体仓库可对应调整参数,并不限于所列举示例参数):
[0106] 货架的单个货位尺寸分别为length=1m、width=1m;
[0107] 堆垛机的水平及垂直方向上运行速度为vx=2m/s、vy=1m/s;
[0108] 作业任务对应的30个货位点为:(63,4)、(6,9)、(22,8)、(5,9)、(26,5)、(44,9)、(40,5)、(58,7)、(19,1)、(54,1)、(47,7)、(4,5)、(27,8)、(18,7)、(54,4)、(30,3)、(53,6)、(54,6)、(2,1)、(59,4)、(41,8)、(38,6)、(4,1)、(27,6)、(38,2)、(47,1)、(3,6)、(20,1)、(2,3)、(53,7)
[0109] 首先根据基于Petri网与改进遗传算法的算法步骤1将上述作业任务序列转化为初代拣选作业调度Petri网:
[0110] ①P:P={P0,x1,Px2,Px3,…,Px30},其中P0堆垛机原点,库所Px1,Px2,Px3,…,Px30分别对应上述30个作业任务。
[0111] ②T: 为堆垛机在30个作业货位点间运行的延时变迁。
[0112] ③τ: 为时延变迁所对应的时延常数,代表堆垛机在任意两个目标货位点间运行所需要的时间消耗。为了更好的反应变迁时延,可建立对应的时间到达矩阵τ31×31,时间到达矩阵τ31×31为对称矩阵,如下所示。
[0113] 对应的时间单位为s,为此建立初代Petri网模型对应的时间到达矩阵τ31×31。
[0114]
[0115] 根据Petri网模型建模步骤,按照顺序调度的方式建立对应的初代拣选作业调度Petri网模型,其对应的延时变迁序列如下,模型如图4所示
[0116]
[0117]
[0118]
[0119] 根据上式可对初代拣选作业调度Petri网模型进行可变部分时间消耗及固定部分时间消耗进行计算:
[0120]
[0121] τconst=2eτ31×31η=2[1 0 … 0 0]τ31×31[1 1 … 1 1]=1002s
[0122] 步骤2:基因编码和解码
[0123] 初代拣选作业调度Petri网模型的变迁序列代表模型的一个可行的调度方案,可将初代拣选作业调度Petri网模型的运行状态对应的变迁序列转化为堆垛机需要遍历作业目标货位表示,转化过程如下式所示:
[0124]
[0125] 同理,在进行解码时即为上式的逆过程,即
[0126]
[0127] 步骤3:随机扩展种群规模
[0128] 根据初代拣选作业调度Petri网模型对应的染色体基因序列使用随机方法扩展,即对(P0,Px1,Px2,…,Pxm,…,Pxn,…,Px30,P0)进行基因的间位置随机互换。为了使得种群提供足够的样本信息,且数量适宜,取N=100。
[0129] 步骤4:适应度函数
[0130] 适应度函数值大小反应个体适应环境的能力强弱,适应度函数值越大对应的个体适应能力越强,反应个体的基因越优秀。作业调度Petri网模型与遗传算法的结合中将作业调度过程可变部分时间消耗作为构建适应度函数的主要因素。
[0131] 可以构造对应的适应度函数如下,式中γ=3,Q=1。
[0132]
[0133] 步骤5:选择操作
[0134] 选择算子可有效的选择较为优秀的基因个体作为父代,而舍弃适应度小的个体,使得适应度较大的个体尽可能的保留在下一代群体中,从而避免丢失优秀遗传信息,并且对全局收敛速度及计算效率有所提升。每个个体遗传的概率可通过下式计算:
[0135]
[0136] 式中为Pi为个体遗传的概率,N为种群规模;ηi为第i个个体的适应度。从式中可以看出,个体的适应度越大,其被选择的概率也随之增大。在进行选择操作时,使用经典的轮盘选择方式,当随机产生一个0~2π间的随机数,一旦落入某个个体扇区,则该个体被选为下一代的一个个体,持续选择直到所有群体内个体均被选择出来结束。如图3所示。
[0137] 步骤6:交叉算子
[0138] 对于已经过编码的个体染色体间进行交叉互换基因时,可能会出现染色体中基因重复的情况,而作业调度过程需要保证单次遍历所有的作业任务目标货位点,因此在进行基因交叉时采用循环交叉的方式,在进行交叉算子操作时,设定交叉概率Pc=0.9。
[0139] 步骤7:变异算子
[0140] 对于变异操作,可以通过对染色体上的两个基因位置进行互换来实现变异操作。在进行变异算子操作时,设定变异概率Pm=0.05。
[0141] 步骤8:逆转算子
[0142] 对标准的遗传算法进行改进,设计一种逆转算子,改善遗传算法的局部搜索能力,即将染色体上基因序列在两处断裂,并将两处间的基因逆转重新插入原基因位置,形成新的基因序列,只有在进行逆转算子操作后适应度提高,这样的逆转算子操作才有效,否则丢弃。其实经过逆转操作的基因片段所代表的信息是相同的,即所对应的可变部分时间消耗是相同的,这样可以保证下一代个体能够更多的遗传父代的优良基因片段,承载更多的父代信息。若经过逆转算子操作后个体的适应度提升,则接受该逆转算子操作。
[0143] 步骤9:终止判断
[0144] 最大允许
迭代次数iterations=3000,并输出当前最优结果。
[0145] 步骤10:终代拣选作业调度Petri网模型
[0146] 根据遗传算法计算寻优所得的作业调度方案结果,将最优染色体基因序列再次转化为对应的变迁序列,并使用它来描述对应的终代拣选作业调度Petri网模型,即完成[0147]
[0148] 的解码工作。
[0149] 根据上述优化后解码所得的变迁序列,并将其转化为多对应的终代拣选作业调度Petri网模型,如图5所示:
[0150]
[0151]
[0152] 优化后的终代作业任务的调度Petri网模型所对应的可变部分时间消耗为[0153] τvar'=ηA-'τ1'=85.5s
[0154] 经过调度优化后可变部分时间消耗减少了
[0155]
[0156] 图6为自动化立体仓库拣选作业调度优化系统,通过优化计算可以看出,基于Petri网与改进遗传算法结合算法对拣选作业调度过程进行优化的作业序列空载时间为85.5s,而标准遗传算法对拣选作业调度过程进行优化的作业序列空载时间为116s。经过标准遗传算法调度优化后可变部分时间消耗减少了
[0157]
[0158] 减少程度相比较于基于Petri网与改进遗传算法结合算法的优化效果。图7为初代Petri网模型路线图。
[0159] 图8中a)为标准遗传算法对拣选作业调度过程进行优化的适应度变化曲线,其优化后最优个体所对应的终代Petri网模型路线图如图b)所示;c)为基于Petri网与改进遗传算法结合算法对拣选作业调度过程进行优化的适应度变化曲线,其优化后最优个体所对应的终代Petri网模型路线图如图d)所示。通过对比可知,通过基于Petri网与改进遗传算法结合算法对拣选作业调度过程进行优化可以更快的获得较大适应度个体,在迭代次数500以内即可获得,而通过标准遗传算法在迭代次数2500后才才获得最优个体。
[0160] 从结果对比分析可知所设计的基于Petri网与改进遗传算法结合算法可以更快更优的对拣选作业调度过程进行优化。
[0161] 最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明
权利要求书所限定的范围。