1.一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征在于,包括以下步骤,
步骤1,初始化协同变邻域搜索算法的参数,设置初始种群大小P,当前解连续没有更新的代数限制RN,邻域操作针对个体执行的次数SN以及当前解连续没有更新的当前代数gen;
步骤2,初始化种群,根据主动解码规则,随机生成种群大小P个解,并从中选出两个最大完工时间最小的初始解,作为协同变邻域搜索算法的当前解;设置当前代数gen=0,重复步骤3-6直至满足协同变邻域搜索算法的终止时间,其中,最大完工时间为所有工件完成其加工工序后所需时间的最大值;
步骤3,执行抖动操作,通过抖动操作生成两个新解,作为变邻域下降操作的初始解;
步骤4,针对这两个初始解执行变邻域下降操作,重复步骤4-1至步骤4-3,直至邻域探索计数器k大于8,
步骤4-1,设置邻域探索计数器k的值为1,
步骤4-2,执行局部搜索操作进行解的优化,
步骤4-3,更新邻域探索计数器k;
步骤5,更新当前代数gen;
步骤6,判断是否执行重启策略,如果当前代数gen大于代数限制RN,则执行重启策略并设置gen=0,否则继续执行下一步;
步骤7,选取协同变邻域搜索算法生成的改进后的解中的最大完工时间较小的一个解,作为约束规划模型的初始解,通过约束规划模型进一步优化解的质量。
2.根据权利要求1所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤2中,主动解码规则是,确定工序Oi,j在机器 mi,j上加工,其中Oi,j表示工件i的第j道工序,mi,j表示工序Oi,j的加工的机器,在机器mi,j上遍历空闲时间段 [ts, te],检查该空闲时间段,是否有足够的时间加工工序Oi,j,其中ts表示空闲时间段的开始时间,te表示空闲时间段的结束时间,如果空闲时间段 [ts, te]有足够的时间,则工序Oi,j插入到空闲时间段[ts, te]中,此时满足公式,其中Ei,j-1表示当工序Oi,j不是工件i的第1道工序时工序Oi,j-1的完成时间,表示工序Oi,j和在机器mi,j上的加工时间,表示在机器mi,j上连续加工的工序和工序Oi,j的之间的调整时间,表示机器mi,j上连续加工的工序Oi,j和工序的之间的调整时间,工件i1表示在机器mi,j上空闲时间段[ts, te]前加工的工件,工件i2表示在机器mi,j上空闲时间段[ts, te]后加工的工件,如果工序Oi,j在空闲时间段 [ts, te]内没有合适的时间进行插入,则将工序Oi,j插入到机器mi,j当前加工的最后一个工序之后。
3.根据权利要求2所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤3中,随机选择一个邻域,生成初始解X1的邻域解X1'和初始解X2的邻域解X2',作为变邻域下降的初始解;
在抖动操作和变邻域下降操作中使用了8种邻域结构,即交换邻域、插入邻域、反转邻域、重分配邻域、优先工序交叉邻域、基于作业交叉邻域、两点交叉邻域和均匀交叉邻域;优先工序交叉邻域、基于作业交叉邻域、两点交叉邻域和均匀交叉邻域是协同邻域结构,协同邻域结构是在进行邻域操作时,使用交叉算子,使协同变邻域搜索算法的两个初始解能够相互交流,操作步骤如下,交换邻域的操作过程为,在初始解X1和初始解X2的工序序列中,分别随机选择两个不同的工序,交换所选择的工序;
插入邻域的操作过程为,在初始解X1和初始解X2的工序序列中,分别随机选择两个不同的工序,将初始解X1中被选择的较后的工序插入到被选择的较前的工序的前一个工序;
反转邻域的操作过程为,在初始解X1和初始解X2的工序序列中,分别随机选择两个不同的工序,将被选择的两个工序之间的工序顺序反转;
重分配邻域的操作过程为,在初始解X1和初始解X2的机器序列中,分别随机选择一个机器,将被选择的机器的位置重新分配可加工的机器;
优先工序交叉邻域的操作过程为,随机将工件集I分成两部分,工件集It1和工件集It2,将初始解X1的工序序列中属于工件集It1的工序不变,将初始解X2的工序序列中属于工件集It2的工序,按工序序列顺序依次替换掉初始解X1的工序序列中剩余位置的工序;将初始解X2的工序序列中属于工件集It1的工序不变,将初始解X1的工序序列中属于工件集It2的工序,按工序序列顺序依次替换掉初始解X2的工序序列中剩余位置的工序;
基于作业交叉邻域的操作过程为,随机将工件集I分成两部分,工件集It1和工件集It2,将初始解X1的工序序列中属于工件集It1的工序不变,将初始解X2的工序序列中属于工件集It2的工序,按工序序列顺序依次替换掉初始解X1的工序序列中剩余位置的工序;将初始解X2的工序序列中属于工件集It2的工序不变,将初始解X1的工序序列中属于工件集It1的工序,按工序序列顺序依次替换掉初始解X2的工序序列中剩余位置的工序;
两点交叉邻域的操作过程为,随机生成 [0,N-1]之间的两个数num1和num2,其中num1小于num2,作为初始解X1和初始解X2的工序序列索引,N表示工序的总数,保留初始解X1和初始解X2的工序序列在区间[0,num1]和[num2 ,N-1]之间不变,在初始解X1的工序序列[num1,num2]区间中,将初始解X2的工序序列依次替换掉初始解X1的工序序列[0,num1]和[num2 ,N-1]区间中不存在的工序,在初始解X2的工序序列[num1,num2]区间中,将初始解X1的工序序列依次替换掉初始解X2的工序序列[0,num1]和[num2 ,N-1]区间中不存在的工序;
均匀交叉邻域的操作过程为,随机生成与初始解X1和初始解X2的机器序列长度相等的二进制序列,初始解X1和初始解X2的机器序列所对应二进制序列值为1的机器不变,将初始解X1的机器序列所对应二进制序列值为0的机器,使用初始解X2的机器序列的相同位置替换,将初始解X2的机器序列所对应二进制序列值为0的机器,使用初始解X1的机器序列的相同位置替换。
4.根据权利要求3所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤4-2中,局部搜索操作步骤如下,根据邻域探索计数器k的值选择邻域结构,k的值从1-8分别对应交换邻域、插入邻域、反转邻域、重分配邻域、优先工序交叉邻域、基于作业交叉邻域、两点交叉邻域和均匀交叉邻域,重复执行SN次对应的邻域操作,选取初始解X1'生成的邻域解中最大完工时间最小的邻域解X1'',选取初始解X2'生成的邻域解中最大完工时间最小的邻域解X2''。
5.根据权利要求4所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤4-3中,更新邻域探索计数器k的步骤为,判断步骤4-2中生成的邻域解X1''是否优于初始解X1,邻域解X2''是否优于初始解X2,若邻域解X1''优于初始解X1,则将初始解X1更新为邻域解X1'',若邻域解X2''优于初始解X2,则将初始解X2更新为邻域解X2'',若初始解X1或者初始解X2被更新,则将邻域探索计数器k重置为1,否则将邻域探索计数器k自加1,继续探索下一个邻域。
6.根据权利要求5所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤5中,如果执行步骤4后初始解X1和初始解 X2都没有被更新,则当前代数gen自加1,否则当前代数gen重置为0。
7.根据权利要求6所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤6中,重启策略的操作过程为随机生成种群大小P个解,选择其中最大完工时间最小的解替换初始解X1和初始解 X2中最大完工时间较大的解。
8.根据权利要求7所述的一种考虑调整时间的柔性作业车间调度问题的优化方法,其特征还在于,在步骤7中,约束规划模型的变量包括,Opsi,j为工序Oi,j的区间变量;modi,j,m为工序Oi,j的可选区间变量;mchsm为对于机器m的可选区间变量modi,j,m的序列决策变量;Cmax为最大完工时间的连续决策变量;
约束规划模型需要满足约束条件(1)-约束条件(4)
(1)
(2)
(3)
(4)
其中,ni表示工件i的工序数量;I表示所有工件集合;m表示机器索引;M表示所有机器的集合;Tm表示调整时间的集合;约束条件(1)表示最小化最大完工时间的目标,函数endof(Opsi,j)用于计算并返回区间变量Opsi,j的完成时间;约束条件(2)表示对于工件i的每个工序,工序Oi,j的前一个工序Oi,j-1完成后,工序Oi,j才可以开始加工,函数endBeforeStart(Opsi,j ,Opsi,j+1)用于计算并返回区间变量Opsi,j+1的开始时间不小于Opsi,j的结束时间;约束条件(3)表示一个工序只能被一台机器加工,函数alternative(Opsi,j , modi,j,m)表示为,对于每个区间变量Opsi,j,只能选择一个可选区间变量modi,j,m;约束条件(4)表示每台机器m在任何时刻最多只能加工一个工序,当两个不同的工件连续在机器m上加工时,必须考虑顺序依赖的调整时间,函数noOverlap(mchsm,Tm,1) 表示为,在考虑调整时间的情况下,序列决策变量mchsm的可选区间变量modi,j,m是不重叠的。