基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法

文档序号:6319587阅读:115来源:国知局
专利名称:基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法
技术领域
本发明属于先进制造与自动化技术领域,涉及一种作业车间多工艺路线批量动态再调度方法。

背景技术
在实际制造环境中,由于市场对产品个性化的需求以及市场的多变性,多品种、中小批量生产方式已经逐渐成为制造业的发展主流。在这种生产方式下,若是调度时把单个零件作为一个独立的个体,那么调度问题规模会变得很大,可解性不好。一种解决方法是制定生产计划时把同种类的所有零件归为一类,也就是说,同类零件组合成一批作为调度问题中的一个工件,该批零件一起生产,每个零件独立加工,该批的加工时间为该批所有单个零件的加工时间(称为单件加工时间)之和。一批零件在某道工序只需要一次启动准备操作,如此就可以减少准备时间以达到缩短完工时间的目的。研究表明,在中小批量生产方式下,可以通过分批处理来减少机器空闲时间以达到缩短生产周期的目的,提高生产效率。
批量调度问题涉及到批量划分和调度优化,其中批量划分需要确定划分的批次数、各批次的批量大小。国内外学者对流水车间批量调度问题进行了广泛的研究,对作业车间批量调度问题的研究也已经取得了一定的成果,但现有的研究对于批量划分问题的解决都是在确定了各个工件划分的批次数后,基于等量分批的原则来确定各批次的批量大小。这样的处理方法没能考虑到实际加工环境中工序并行机之间可能存在能力不均衡的情况。


发明内容
为了克服现有技术无法有效解决动态多变环境下多品种、中小批量生产车间大规模调度问题,生产周期长,生产效率低的不足,本发明提供一种基于周期和事件驱动的多工艺路线批量动态再调度方法,考虑到差分进化算法的变异操作具有保持基因值总和不变的特点以及工件各道工序并行机之间可能存在能力不均衡的情况,有效解决动态多变环境下多品种、中小批量生产车间大规模调度问题,缩短生产周期,提高生产效率。
本发明的技术方案如下 一种基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法,所述作业车间批量动态再调度方法包括以下步骤 1)、采用基于周期和事件驱动的再调度策略,根据实际生产工况,进行再调度参数评价,刷新工件工序信息、加工批量信息和机器信息;利用滚动窗口技术,确定再调度工件窗口;记再调度时间起点为t0,按如下步骤进行再调度参数评价,确定再调度工件窗口 步骤1.1根据t0时刻机器生产状况,刷新机器参与再调度的初始可用时间; 步骤1.2统计已经参与调度的工件的生产情况,去除实际已经完成加工操作的以及t0时刻正在进行加工而不能停止的部分,得到这些工件所包含的剩余工序以及各道工序未完成的加工批量大小; 步骤1.3根据步骤1.2得到工件数记为N′,若N′<N,其中N为工件窗口大小,那么从数据库未调度生产计划中按工件紧迫度从小到大选择N-N′个工件;将工件的交货期减去t0可获得工件的紧迫度值;清空工件窗口,将这N-N′个工件和步骤1.2得到的N′个工件纳入工件窗口; 2)、对再调度参数评价后得到工件窗口中的工件,根据数据库里的基础数据以及参数评价后得到的工件信息以及机器信息,建立多工艺路线批量调度模型; 3)、采用两级差分进化算法来求解调度模型,解决批量划分和调度优化问题,优化得到各工件在每道工序所划分的批次数以及各子批的批量大小、工件各道工序各子批所分配的加工机器、工件各道工序各子批的开始/结束准备时间和工件各道工序各子批的开始/结束加工时间。
进一步在步骤2)中,所述多工艺路线批量调度模型建立过程如下 2.1)变量定义 N工件数,即工件窗口大小; AMij工件i第j道工序的加工批量大小,即包含的零件数; ni工件i所含工序数; M车间内可用机器数; WTijk工件i第j道工序在机器k上的单件加工时间,WTijk=0表示工件i第j道工序不能在机器k上加工,i=1,…,N,j=1,…,ni,k=1,…,M; PTijk工件i第j道工序在机器k上的批量准备时间,PTijk=0表示工件i第j道工序不能在机器k上加工因此不需要批量准备操作,i=1,…,N,j=1,…,ni,k=1,…,M; bij工件i第j道工序的并行机数; BNijk工件i第j道工序的第k批任务的批量,BNijk为整数,i=1,…,N,j=1,…,ni,k=1,…,bij; OMijk工件i第j道工序的第k批任务所分配到的加工机器,OMijk∈[1,M],i=1,…,N,j=1,…,ni,k=1,…,bij; SPTijk工件i第j道工序的第k批任务的开始准备时间,i=1,…,N,j=1,…,ni,k=1,…,bij; CPTijk工件i第j道工序的第k批任务的结束准备时间,i=1,…,N,j=1,…,ni,k=1,…,bij; SWTijk工件i第j道工序的第k批任务的开始加工时间,i=1,…,N,j=1,…,ni,k=1,…,bij; CWTijk工件i第j道工序的第k批任务的结束加工时间,i=1,…,N,j=1,…,ni,k=1,…,bij; TEi表示机器i的可用时间,i=1,…,M; TCij(NM)表示完成工件i第j道工序NM批量任务的加工操作的时间,i=1,…,N,j=1,…,ni; 2.2)模型建立 将工件i在第j道工序划分成bij批,i=1,…,N,j=1,…,ni,建立数学模型如下 上述式子中的i,j,k的取值在i=1,…,N,j=1,…,ni,k=1,…,bij大前提范围内;式(3)表示排产时若j=1,即对应第一道工序,则只需考虑机器约束,而当j>1时还需要考虑批任务的工序约束;允许机器提前进行批量准备操作,因此采用先确定批任务的开始加工工时间,即计算式(3),再计算开始准备时间,即式(5);当某机器完成当前批任务的加工操作,而下一批任务跟当前批属于同一种工件的同道工序,那么下一批任务不需要在该机器上再进行批量准备操作,式(3)、(5)只对需要准备操作的批任务适用,而在安排不需要准备操作的批任务时,式(3)中的机器约束应由原来的

更改为
再进一步在步骤3)中,具体包括以下过程 3.1)编、解码方案 算法采用两级染色体编码方式;根据工序的可用并行机数bij,将各工件在每道工序进行批量划分;对工件i的第j道工序随机产生bij个
之间的整数BNijk,使记为工件i的第j道工序的批量队列;所有工件在每道工序的批量队列组成了批量划分染色体,记为chromosome1,长度为BNijk表示工件i在第j道工序的第k子批次的批量大小; chromosome1上包含了共len个子批次的批量信息,而该len个子批次的加工排序信息则构成了排序染色体,记为chromosome2,长度也为len。排序染色体将各子批次作为调度问题中一个独立的工件,采用基于子批工序的编码方式; 解码时,对排序染色体上的批任务从左到右进行排产假定chromosome2上某位基因对应的是工件i的第j道工序的第k批,根据该工件前一道工序的所有批任务的排产情况,计算工件i在第j-1道工序完成

批量任务的时间;然后在满足工序约束和机器约束的前提下,从工件i第j道工序的并行机中选择能最早完成第k批加工任务的机器作为Oijk,安排该工序的批量准备操作和加工操作,允许机器提前进行准备操作;若j=1,那么排产时只需要满足机器约束即可; 3.2)适应度函数 式(7)表示以优化生产周期为调度目标,目标函数为 其中, 3.3)批量划分染色体的进化操作 记chromosome1i为个体i上的批量划分染色体,对当前种群中的批量划分染色体采用基于块变异块交叉操作的差分进化算法,按如下步骤进行一次进化操作 步骤3.3.1设置i=1; 步骤3.3.2对当前种群中的chromosome1i,随机产生[1,Np]之间互异且不等于i的自然数d1、d2、d3,Np为种群规模;对chromosome1i进行进化操作 ①、随机选择[1,N]之间的自然数r1、

之间的自然数r2,设置j=1,k=1; ②、若j=r1,且k=r2,则执行步骤③,否则,执行步骤④; ③、对chromosome1i上工件j的第k道工序的批量队列进行块变异块交叉操作 其中,BNjklz表示chromosome1z上工件j的第k道工序的批量队列上第l位基因;对应工件j的第k道工序第l批的批量,z=d1,d2,d3;BN′jkl表示变异新产生的队列上第l位基因;Kjk表示对chromosome1i上工件j的第k道工序的批量队列进行块变异操作时的变异算子; 为了保证产生的BN′jkl符合
范围约束,Kjk的取值需满足以下两式 采用随机产生该范围内的数值作为Kjk的取值; ④、设置BSM=0,对l从1到bjk,当l<bjk时,执行BN′jkl=[BN′jkl],BSM=BSM+BN′jkl;若l=bjk,执行BN′jkl=AMjk-BSM,[]表示取整;这样就把新产生的队列上所有的BN′jkl都转化为整数; 采用上述进化操作,BN′jkl满足式(2)的约束。选择变异新产生的块区域进入新染色体中,记为newchro1i,执行步骤⑥; ⑤、随机产生
之间的随机数r3,r3∈R;若r3≤CR,则转至步骤③;否则,选择chromosome1i上工件j的第k道工序的批量队列进入新染色体newchro1i中,执行步骤⑥; ⑥、若k<nj,执行k=k+1;否则,执行j=j+1; ⑦、若j≤N,返回步骤②;否则,此时新的染色体newchro1i已经是一条完整的批量划分染色体,将newchro1i存入临时种群; 步骤3.3.3若i<Np,执行i=i+1,返回步骤3.3.2; 3.4)排序染色体的进化操作 记chromosome2i为个体i上的排序染色体,对当前种群中的所有chromosome2染色体进行两两随机配对,采用块交叉遗传操作在两父代染色体之间进行交叉产生子代染色体存入临时种群;假设两父代排序染色体为chromosome2p和chromosome2q 步骤4.1随机选择[1,N]之间的自然数r1、

之间的自然数r2;从两父代染色体中找到拥有最少基因数且包含工件r1第r2道工序所有批任务的部分队列块; 步骤4.2交换两父代染色体中的部分队列块得到两子代染色体,用chromosome2′p和chromosome2′q表示; 步骤4.3对chromosome2′p、chromosome2′q进行修正,在部分队列块中删除多余基因、插入缺失的基因;插入时先查找部分队列块中是否有与待插入基因拥有相同工件号但不同工序号的基因,若有这样的基因且该基因对应的工序号大于待插入基因的工序号,那么要求插入的位置在该基因之前;若有这样的基因且该基因对应的工序号小于待插入基因的工序号,那么要求插入的位置在该基因之后;修正后得到chromosome2″p、chromosome2″q并将其存入临时种群; 3.5)选择操作 在对当前种群中的批量划分染色体、排序染色体采用上述进化操作后,临时种群中共有Np个新个体;在当前种群和临时种群共2×Np个个体中采用最优个体保存和轮盘赌选择操作选择Np个个体进入下一代。
本发明的效果和益处是采用工件滚动窗口技术,可以使大而复杂的调度问题划分成较小问题,使算法完全适应加工过程中复杂的环境变化和实时处理;采用两级差分进化算法能有效地解决批量划分和调度优化问题,缩短生产周期;基于差分进化算法的批量划分方法充分利用了并行机之间不均衡能力的信息,在增加批次数则花费在准备操作上的时间会增多而减少批次数则会加长等待时间这两者之间的矛盾中起到了很好的折衷作用。



图1是作业车间多工艺路线批量动态再调度方法的结构框图。
图2是两级差分进化算法流程图。
图3是批量划分染色体组成图。
图4是批量划分染色体示意图。
图5是排序染色体示意图。
图6是父代排序染色体示意图。
图7是子代排序染色体示意图。
图8是修正后的子代排序染色体示意图。

具体实施例方式 结合技术方案和附图,详细阐述本发明的具体实施方式

参照附图1~图8,一种基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法,包括以下步骤 步骤1判断时钟计数器是否到周期时间点,若到周期时间点则取该时间点为再调度时间起点t0,执行步骤2;否则,判断是否有突发事件,若发生突发事件,则以事件发生时刻作为再调度时间起点并执行步骤2。
本发明研究的动态环境包括以下突发事件机器突然损坏;损坏的机器被修复;订单信息更改等。
步骤2根据t0时刻实际生产工况,进行再调度参数评价,刷新工件工序信息、加工批量信息和机器信息,采用滚动窗口技术,确定再调度工件窗口 (2.1)根据t0时刻机器生产状况,刷新机器参与再调度的初始可用时间,对于t0时刻正在进行加工操作的机器,由于加工的连续性,该机床不能立刻停止对该零件的加工,因此该机床只能在完成该单个零件后参与再调度; (2.2)根据实际生产工况,统计已经参与调度的工件的生产情况,去除实际已经完成加工操作的以及t0时刻正在进行加工而不能停止的部分,得到这些工件所包含的剩余工序以及各道工序未完成的加工批量大小; (2.3)根据步骤(2.2)得到工件数记为N′,若N′<N(N为工件窗口大小,可根据用户实际要求设定),那么从数据库未调度生产计划中按工件紧迫度从小到大选择N-N′个工件。将工件的交货期减去t0可获得工件的紧迫度值。清空工件窗口,将这N-N′个工件和步骤(2.2)得到的N′个工件纳入工件窗口。
步骤3对再调度参数评价后得到工件窗口中的工件,根据数据库里的基础数据以及参数评价后得到的工件信息以及机器信息,建立多工艺路线批量调度模型 (3.1)变量定义 N工件数,即工件窗口大小; AMij工件i第j道工序的加工批量大小,即包含的零件数; ni工件i所含工序数; M车间内可用机器数; WTijk工件i第j道工序在机器k上的单件加工时间,WTijk=0表示工件i第j道工序不能在机器k上加工,i=1,…,N,j=1,…,ni,k=1,…,M; PRijk工件i第j道工序在机器k上的批量准备时间,PTijk=0表示工件i第j道工序不能在机器k上加工因此不需要批量准备操作,i=1,…,N,j=1,…,ni,k=1,…,M; bij工件i第j道工序的并行机数; BNijk工件i第j道工序的第k批任务的批量,BNijk为整数,i=1,…,N,j=1,…,ni,k=1,…,bij; OMijk工件i第j道工序的第k批任务所分配到的加工机器,OMijk∈[1,M],i=1,…,N,j=1,…,ni,k=1,…,bij; SPTijk工件i第j道工序的第k批任务的开始准备时间,i=1,…,N,j=1,…,ni,k=1,…,bij; CPTijk工件i第j道工序的第k批任务的结束准备时间,i=1,…,N,j=1,…,ni,k=1,…,bij; SWTijk工件i第j道工序的第k批任务的开始加工时间,i=1,…,N,j=1,…,ni,k=1,…,bij; CWTijk工件i第j道工序的第k批任务的结束加工时间,i=1,…,N,j=1,…,ni,k=1,…,bij; TEi表示机器i的可用时间,i=1,…,M; TCij(NM)表示完成工件i第j道工序NM批量任务的加工操作的时间,i=1,…,N,j=1,…,ni。
(3.2)模型建立 为便于模型的建立和算法的求解,且充分发挥工件各道工序并行机的作用以减少等待时间,将工件i在第j道工序划分成bij批,i=1,…,N,j=1,…,ni。本发明所考虑的数学模型如下 上述式子中的i,j,k的取值在i=1,…,N,j=1,…,ni,k=1,…,bij大前提范围内。式(3)表示排产时若j=1(对应第一道工序),则只需考虑机器约束,而当j>1时还需要考虑批任务的工序约束。允许机器提前进行批量准备操作,因此这里采用先确定批任务的开始加工工时间(式(3))再计算开始准备时间(式(5))的方法,这样使批任务一到达即可进行加工操作,缩短完工时间。当某机器完成当前批任务的加工操作,而下一批任务跟当前批属于同一种工件的同道工序,那么下一批任务不需要在该机器上再进行批量准备操作。式(3)、(5)只对需要准备操作的批任务(根据机器分配以及加工排序结果决定是否需要进行准备操作)适用,而在安排不需要准备操作的批任务时,式(3)中的机器约束应由原来的

更改为
需要确定各工件在各道工序划分的批次数以及各子批的批量,为各子批选择加工设备,并确定子批任务的加工顺序。
步骤4设置差分进化算法控制参数,包括种群规模Np、迭代次数TM和交叉概率CR,采用两级差分进化算法进行调度方案编制,求解批量划分和调度优化问题 (4.1)设置迭代次数h=1。随机产生Np个个体得到初始种群,每个个体由一条批量划分染色体和一条排序染色体组成 其中,批量划分染色体包含各工件在各道工序的子批次批量信息,排序染色体包含各子批次的加工排序信息。根据工序的可用并行机数bij,将各工件在每道工序进行批量划分。对工件i的第j道工序随机产生bij个
之间的整数BNijk,使记为工件i的第j道工序的批量队列。所有工件在每道工序的批量队列组成了第一条染色体,记为chromosome1,长度为如图3所示,BNijk表示工件i在第j道工序的第k子批次的批量大小。例如,如表1所示批量调度问题,图4为该问题的批量划分染色体示例。
chromosome1上包含了共len个子批次的批量信息,而该len个子批次的加工排序信息则构成了第二条染色体,记为chromosome2,长度也为len。排序染色体将各子批次作为调度问题中一个独立的工件,采用基于子批工序的编码方式。图5为表1所述批量调度问题的排序染色体示例。排序染色体上″ab″表示工件a的第b道工序,根据从左到右″ab″出现的次数来解释批次号。为了满足批任务的工序约束,要求当c>b时,排序染色体上所有的″ab″基因排在″ac″基因之前,也即工件a的第b道工序的所有批任务在该工件第c道工序的批任务之前排产。
表1批量调度问题示例
(4.2)对种群中每个个体进行解码,按式(7)计算其适应度函数值 其中, 解码时,对排序染色体上的批任务从左到右进行排产假定chromosome2上某位基因对应的是工件i的第j道工序的第k批,根据该工件前一道工序的所有批任务的排产情况,计算工件i在第j-1道工序完成

批量任务的时间(工序约束);然后在满足工序约束和机器约束的前提下,从工件i第j道工序的并行机中选择能最早完成第k批加工任务的机器作为OMijk,安排该工序的批量准备操作和加工操作,允许机器提前进行准备操作。若j=1,那么排产时只需要满足机器约束即可。
(4.3)对当前种群中批量划分染色体进行进化操作,得到Np条新的批量划分染色体 记chromosome1i为个体i上的批量划分染色体,对当前种群中的批量划分染色体采用基于块变异块交叉操作的差分进化算法,按如下步骤进行一次进化操作 (4.3.1)设置i=1。
(4.3.2)对当前种群中的chromosome1i,随机产生[1,Np]之间互异且不等于i的自然数d1、d2、d3,Np为种群规模。对chromosome1i进行进化操作 ①、随机选择[1,N]之间的自然数r1、

之间的自然数r2,设置j=1,k=1。
②、若j=r1,且k=r2,则执行步骤③,否则,执行步骤④。
③、对chromosome1i上工件j的第k道工序的批量队列进行块变异块交叉操作 其中,BNjklz表示chromosome1z上工件j的第k道工序的批量队列上第l位基因(对应工件j的第k道工序第l批的批量),z=d1,d2,d3;BN′jkl表示变异新产生的队列上第l位基因。Kjk表示对chromosome1i上工件j的第k道工序的批量队列进行块变异操作时的变异算子。
为了保证产生的BN′jkl符合
范围约束,Kjk的取值需满足以下两式 本发明采用随机产生该范围内的数值作为Kjk的取值。由于采用式(8)产生的BN′jkl不能保证是整数,因此需要进行微调,执行步骤④。
④、设置BSM=0,对l从1到bjk,当l<bjk时,执行BN′jkl=[BN′jkl],BSM=BSM+BN′jkl;若l=bjk,执行BN′jkl=AMjk-BSM,[]表示取整。这样就把新产生的队列上所有的BN′jkl都转化为整数。
采用上述进化操作,BN′jkl满足式(2)的约束。选择变异新产生的块区域进入新染色体(记为newchro1i)中,执行步骤⑥。
⑤、随机产生
之间的随机数r3,r3∈R。若r3≤CR,则转至步骤③;否则,选择chromosome1i上工件j的第k道工序的批量队列进入新染色体newchro1i中,执行步骤⑥。
⑥、若k<nj,执行k=k+1;否则,执行j=j+1。
⑦、若j≤N,返回步骤②;否则,此时新的染色体newchro1i已经是一条完整的批量划分染色体,将newchro1i存入临时种群。
(4.3.3)若i<Np,执行i=i+1,返回步骤(4.3.2)。
(4.4)对当前种群中排序染色体进行进化操作,得到Np条新的排序染色体 记chromosome2i为个体i上的排序染色体,对当前种群中的所有chromosome2染色体进行两两随机配对,采用块交叉遗传操作在两父代染色体之间进行交叉产生子代染色体存入临时种群。假设两父代排序染色体为chromosome2p和chromosome2q (4.4.1)随机选择[1,N]之间的自然数r1、

之间的自然数r2;从两父代染色体中找到拥有最少基因数且包含工件r1第r2道工序所有批任务的部分队列块。
(4.4.2)交换两父代染色体中的部分队列块得到两子代染色体,用chromosome2′p和chromosome2′q表示。对于表1所示的调度问题,假设两父代染色体如图6所示,且r1=1,r2=2,那么找到的部分队列块如阴影部分所示。交换两父代染色体中的部分队列块得到两子代染色体,如图7所示。
(4.4.3)对chromosome2′p、chromosome2′q进行修正,在部分队列块中删除多余基因、插入缺失的基因。插入时先查找部分队列块中是否有与待插入基因拥有相同工件号但不同工序号的基因,若有这样的基因且该基因对应的工序号大于(小于)待插入基因的工序号,那么要求插入的位置在该基因之前(后)。修正后得到chromosome2″p、chromosome2″q并将其存入临时种群。对图7中两子代排序染色体进行修正,如图8所示,带下划线的基因表示插入的缺失基因。
(4.5)将步骤(4.3)和(4.4)得到的Np条新的批量划分染色体和Np条新的排序染色体一一对应构成Np个新个体存入临时种群。从当前种群和临时种群共2×Np个个体中采用最优个体保存和轮盘赌选择操作选择Np个个体作为下一代进入当前种群覆盖种群里的旧个体。
(4.6)判断若h<TM,则执行h=h+1,返回步骤4.2;否则,寻找当前种群中的最优解,解码得到最优调度方案。
步骤5时钟计数器归零,按最优调度方案投入生产。返回步骤1。
权利要求
1、一种基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法,其特征在于所述作业车间批量动态再调度方法包括以下步骤
1)、采用基于周期和事件驱动的再调度策略,根据实际生产工况,进行再调度参数评价,刷新工件工序信息、加工批量信息和机器信息;利用滚动窗口技术,确定再调度工件窗口;记再调度时间起点为t0,按如下步骤进行再调度参数评价,确定再调度工件窗口
步骤1.1根据t0时刻机器生产状况,刷新机器参与再调度的初始可用时间;
步骤1.2统计已经参与调度的工件的生产情况,去除实际已经完成加工操作的以及t0时刻正在进行加工而不能停止的部分,得到这些工件所包含的剩余工序以及各道工序未完成的加工批量大小;
步骤1.3根据步骤1.2得到工件数记为N′,若N′<N,其中N为工件窗口大小,那么从数据库未调度生产计划中按工件紧迫度从小到大选择N-N′个工件;将工件的交货期减去t0可获得工件的紧迫度值;清空工件窗口,将这N-N′个工件和步骤1.2得到的N′个工件纳入工件窗口;
2)、对再调度参数评价后得到工件窗口中的工件,根据数据库里的基础数据以及参数评价后得到的工件信息以及机器信息,建立多工艺路线批量调度模型;
3)、采用两级差分进化算法来求解调度模型,解决批量划分和调度优化问题,优化得到各工件在每道工序所划分的批次数以及各子批的批量大小、工件各道工序各子批所分配的加工机器、工件各道工序各子批的开始/结束准备时间和工件各道工序各子批的开始/结束加工时间。
2、如权利要求1所述基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法,其特征在于在步骤2)中,所述多工艺路线批量调度模型建立过程如下
2.1)变量定义
N工件数,即工件窗口大小;
AMij工件i第j道工序的加工批量大小,即包含的零件数;
ni工件i所含工序数;
M车间内可用机器数;
WTijk工件i第j道工序在机器k上的单件加工时间,WTijk=0表示工件i第j道工序不能在机器k上加工,i=1,…,N,j=1,…,ni,k=1,…,M;
PTijk工件i第j道工序在机器k上的批量准备时间,PTijk=0表示工件i第j道工序不能在机器k上加工因此不需要批量准备操作,i=1,…,N,j=1,…,ni,k=1,…,M;
bij工件i第j道工序的并行机数;
BNijk工件i第j道工序的第k批任务的批量,BNijk为整数,i=1,…,N,j=1,…,ni,k=1,…,bij;
OMijk工件i第j道工序的第k批任务所分配到的加工机器,OMijk∈[1,M],i=1,…,N,j=1,…,ni,k=1,…,bij;
SPTijk工件i第j道工序的第k批任务的开始准备时间,i=1,…,N,j=1,…,ni,k=1,…,bij;
CPTijk工件i第j道工序的第k批任务的结束准备时间,i=1,…,N,j=1,…,ni,k=1,…,bij;
SWTijk工件i第j道工序的第k批任务的开始加工时间,i=1,…,N,j=1,…,ni,k=1,…,bij;
CWTijk工件i第j道工序的第k批任务的结束加工时间,i=1,…,N,j=1,…,ni,k=1,…,bij;
TEi表示机器i的可用时间,i=1,…,M;
TCij(NM)表示完成工件i第j道工序NM批量任务的加工操作的时间,i=1,…,N,j=1,…,ni;
2.2)模型建立
将工件i在第j道工序划分成bij批,i=1,…,N,j=1,…,ni,建立数学模型如下
CPTijk=SWTijk,
上述式子中的i,j,k的取值在i=1,…,N,j=1,…,ni,k=1,…,bij大前提范围内;式(3)表示排产时若j=1,即对应第一道工序,则只需考虑机器约束,而当j>1时还需要考虑批任务的工序约束;允许机器提前进行批量准备操作,因此采用先确定批任务的开始加工工时间,即计算式(3),再计算开始准备时间,即式(5);当某机器完成当前批任务的加工操作,而下一批任务跟当前批属于同一种工件的同道工序,那么下一批任务不需要在该机器上再进行批量准备操作,式(3)、(5)只对需要准备操作的批任务适用,而在安排不需要准备操作的批任务时,式(3)中的机器约束应由原来的
更改为
3、如权利要求1或2所述基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法,其特征在于在步骤3)中,具体包括以下过程
3.1)编、解码方案
算法采用两级染色体编码方式。根据工序的可用并行机数bij,将各工件在每道工序进行批量划分;对工件i的第j道工序随机产生bij个
之间的整数BNijk,使记为工件i的第j道工序的批量队列;所有工件在每道工序的批量队列组成了批量划分染色体,记为chromosome1,长度为BNijk表示工件i在第j道工序的第k子批次的批量大小;
chromosome1上包含了共len个子批次的批量信息,而该len个子批次的加工排序信息则构成了排序染色体,记为chromosome2,长度也为len。排序染色体将各子批次作为调度问题中一个独立的工件,采用基于子批工序的编码方式;
解码时,对排序染色体上的批任务从左到右进行排产假定chromosome2上某位基因对应的是工件i的第j道工序的第k批,根据该工件前一道工序的所有批任务的排产情况,计算工件i在第j-1道工序完成
批量任务的时间;然后在满足工序约束和机器约束的前提下,从工件i第j道工序的并行机中选择能最早完成第k批加工任务的机器作为OMijk,安排该工序的批量准备操作和加工操作,允许机器提前进行准备操作;若j=1,那么排产时只需要满足机器约束即可;
3.2)适应度函数
式(7)表示以优化生产周期为调度目标,目标函数为
其中,
3.3)批量划分染色体的进化操作
记chromosome1i为个体i上的批量划分染色体,对当前种群中的批量划分染色体采用基于块变异块交叉操作的差分进化算法,按如下步骤进行一次进化操作
步骤3.3.1设置i=1;
步骤3.3.2对当前种群中的chromosome1i,随机产生[1,Np]之间互异且不等于i的自然数d1、d2、d3,Np为种群规模;对chromosome1i进行进化操作
①、随机选择[1,N]之间的自然数r1、
之间的自然数r2,设置j=1,k=1;
②、若j=r1,且k=r2,则执行步骤③,否则,执行步骤④;
③、对chromosome1i上工件j的第k道工序的批量队列进行块变异块交叉操作
l=1,…,bjk(8)
其中,BNjklz表示chromosome1z上工件j的第k道工序的批量队列上第l位基因;对应工件j的第k道工序第l批的批量,z=d1,d2,d3;BN′jkl表示变异新产生的队列上第l位基因;Kjk表示对chromosome1i上工件j的第k道工序的批量队列进行块变异操作时的变异算子;
为了保证产生的BN′jkl符合
范围约束,Kjk的取值需满足以下两式
采用随机产生该范围内的数值作为Kjk的取值;
④、设置BSM=0,对l从1到bjk,当l<bjk时,执行BN′jkl=[BN′jkl],BSM=BSM+BN′jkl;若l=bjk,执行BN′jkl=AMjk-BSM,[]表示取整;这样就把新产生的队列上所有的BN′jkl都转化为整数;
采用上述进化操作,BN′jkl满足式(2)的约束。选择变异新产生的块区域进入新染色体中,记为newchro1i,执行步骤⑥;
⑤、随机产生
之间的随机数r3,r3∈R;若r3≤CR,则转至步骤③;否则,选择chromosome1i上工件j的第k道工序的批量队列进入新染色体newchro1i中,执行步骤⑥;
⑥、若k<ni,执行k=k+1;否则,执行j=j+1;
⑦、若j≤N,返回步骤②;否则,此时新的染色体newchro1i已经是一条完整的批量划分染色体,将newchro1i存入临时种群;
步骤3.3.3若i<Np,执行i=i+1,返回步骤3.3.2;
3.4)排序染色体的进化操作
记chromosome2i为个体i上的排序染色体,对当前种群中的所有chromosome2染色体进行两两随机配对,采用块交叉遗传操作在两父代染色体之间进行交叉产生子代染色体存入临时种群;假设两父代排序染色休为chromosome2p和chromosomc2q;
步骤4.1随机选择[1,N]之间的自然数r1、
之间的自然数r2;从两父代染色体中找到拥有最少基因数且包含工件r1第r2道工序所有批任务的部分队列块;
步骤4.2交换两父代染色体中的部分队列块得到两子代染色体,用chromosomc2′p和chromosome2′q表示;
步骤4.3对chromosome2′p、chromosome2′q进行修正,在部分队列块中删除多余基因、插入缺失的基因;插入时先查找部分队列块中是否有与待插入基因拥有相同工件号但不同工序号的基因,若有这样的基因且该基因对应的工序号大于待插入基因的工序号,那么要求插入的位置在该基因之前;若有这样的基因且该基因对应的工序号小于待插入基因的工序号,那么要求插入的位置在该基因之后;修正后得到chromosome2″p、chromosome2″q并将其存入临时种群;
3.5)选择操作
在对当前种群中的批量划分染色体、排序染色体采用上述进化操作后,临时种群中共有Np个新个体;在当前种群和临时种群共2×Np个个体中采用最优个体保存和轮盘赌选择操作选择Np个个体进入下一代。
全文摘要
一种基于两级差分进化算法的作业车间多工艺路线批量动态再调度方法,涉及到再调度参数评价、调度模型构造和调度方案编制,采用基于周期和事件驱动的再调度策略,建立了多工艺路线批量调度模型,提出两级差分进化算法来求解该模型,解决批量划分和调度优化问题;考虑到实际环境中工件各道工序并行机之间可能存在能力不均衡的情况,本发明对各工件在每一道工序进行批量划分,设计的两级差分进化算法解决了批量划分和调度优化,能有效地减少机器空闲时间,缩短生产周期,完全适应加工过程中复杂的环境变化和实时处理。
文档编号G05B19/418GK101609334SQ200910100829
公开日2009年12月23日 申请日期2009年7月13日 优先权日2009年7月13日
发明者赵燕伟, 王海燕, 王万良, 徐新黎, 澄 赵, 戴欣华 申请人:浙江工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1