[0086] 下面结合附图对本发明的技术方案做进一步的详细说明:
[0087] 一个柔性作业车间中,有5台机器,4项待加工的作业。每项作业的每道工序均可以在5台机器上分别加工。这些工序中,有部分工序的加工时间存在不确定性。4项作业包含的工序个数、每道工序在各台允许加工机器上的初始预估加工时间如表1所示。
[0088] 表1
[0089] O11 O12 O13 O21
预估加工时间 2,5,4,1,2 5,4,5,7,5 4,5,5,4,5 2,5,4,7,8
O22 O23 O31 O32
预估加工时间 5,6,9,8,5 4,5,4,54,5 9,8,6,7,9 6,1,2,5,4
O33 O34 O41 O42
预估加工时间 2,5,4,2,4 4,5,2,1,5 1,5,2,4,12 5,1,2,1,2
[0090] 使用本发明提出的基于分解多目标进化算法的柔性作业车间鲁棒调度方法求解该柔性作业车间实施例的调度方案,主体流程图如图1所示,具体步骤如下:
[0091] (1)初始化。读取柔性作业车间的输入信息,包括每项作业的工序数、每项作业中每道工序可分配的机器集合、各工序在相应机器上的初始预估加工时间(见表1);定义优化目标,设定约束条件:
[0092] 优化目标中的“作业完工时间”表示完成柔性作业车间中的所有作业所花费的时间开销,它定义为:
[0093]
[0094] 其中,Cv和Sv分别表示第v项作业Jv中,最后一道工序的加工完成时间和第一道工序的加工开始时间,v=1,2,…,n;n为柔性作业车间中所有作业的总数,本实例中,n=4;I表示初始景象,本实例中,针对加工时间这一不确定属性,假设它的值为初始预估值确定不变,在此情况下计算初始景象下的作业完工时间;
[0095] 优化目标中的“机器最大负载”表示各台机器总的加工时间的最大值,它定义为:
[0096]
[0097] 其中,m是柔性作业车间内机器的总台数,本实例中,m=5; 是根据当前调度方案,在第s台机器上按第r个顺序进行加工的工序Osr的加工时间;ws是分配到第s台机器上的工序个数;I表示初始景象;
[0098] 优化目标中“调度性能的鲁棒性”衡量调度方案的作业完工时间和机器的最大负载对不确定因素的敏感程度,它定义为:
[0099]
[0100] 鲁棒性采用基于景象的方法定义,将一个调度方案在不确定工序加工时间的多种采样值{θq|q=1,2,…,Q}下进行仿真,以比较作业完工时间和机器最大负载的实际值与初始预估值之间的差值;其中,θq是不确定工序加工时间的第q个采样值,Q是样本个数;makespanq和workloadq分别是采样值θq下相应的作业完工时间和机器最大负载目标值;
[0101] 工序优先级约束是指每项作业的各道工序是按事先确定的顺序进行加工的;在柔性作业车间问题中,每道工序可以在它允许的机器集合中任一台上进行加工;
[0102] 禁止抢先占有的约束包括:(i)每道工序的加工,只能在同一作业中排在它之前的所有工序都完成之后才能开始进行;(ii)如果将一道工序分配给了某台机器,只有在这台机器完成之前调度的所有工序之后,才能开始该道工序的加工;
[0103] (2)初始化基于分解的多目标进化算法的参数:
[0104] 设置目标评价次数NmbEvl为15000、群体规模(即子问题的个数)N为500、产生N个1 N
均匀分布的目标权向量λ,…,λ、子问题的邻域规模T为50,繁殖算子中的父代个体从邻域里选取的概率δ为0.7、邻域个体允许被每个子代个体替换的最大数目nr为5,评价鲁棒性时采样的不确定场景个数Q为30,交叉概率CR为0.3;
[0105] (3)确定每个子问题的邻域,产生初始父代群体:
[0106] (3.1)对第i个子问题,i=1,…,N,确定邻域B(i)={i1,…,iT}。分别计算第i个子问题的权向量λi和其它(N-1)个子问题权向量间的欧拉距离,将T个距离λi最近的权向量所对应的子群体序号{i1,…,iT}构成B(i);
[0107] (3.2)随机产生初始父代群体{x1,…,xN},其中个体xi为第i个子群体的当前解;群体中的每个个体包括工序序列向量和机器分配向量;随机采样一组不确定性场景θq,q=1,2,...,Q;计算初始父代群体中每个个体的目标值f1=makespanI、f2=workloadI和f3=robustness;从初始父代群体中确定出所有的Pareto非支配解构成外部存储器Arc;设置目标评价次数计数变量ct=N;归一化各目标值,将每个个体xi的第j个目标值fj(xi)映射到区i i
间[0,1]之间,产生x在第j个目标上的归一化值fnoj(x),即:
[0108]
[0109] 其中, 和 分别表示当前父代群体中的所有个体在第j个目标上的最大值和最小值,j=1,2,3。
[0110] (3.3)设置进化代数t=0;
[0111] 初始父代群体由N个随机生成的个体组成。本发明中,一个个体包括两个向量:(i)工序序列向量;(ii)机器分配向量。图2给出了个体表示方法的示例。对于工序序列向量,采用基于作业的表示方法,同一作业的工序均用该作业号表示。例如,图2中,工序O11、O12、O13均用作业号1表示。每道工序依据它在工序序列向量中出现的顺序进行转换。例如,工序序列向量中第一个出现的数字3代表工序O31,第二个出现的3代表O32,依此类推。因此,可将图2中的工序序列向量解释为:
[0112]
[0113] 其中, 表示将工序a首先加入它所分配机器的等待队列,然后再调度工序b。
[0114] 机器分配向量表示给每道工序分配的机器。它的分配顺序是:从当前序号最小作业的第一道工序到序号最大作业的最后一道工序。例如,在图2的机器分配向量中,第一个元素2表示将作业1的第一道工序O11分配给机器2,第二个元素3表示将作业1的第二道工序O12分配给机器3,依此类推,机器分配向量可解释为:
[0115] O11→机器2,O12→机器3,O13→机器5,O21→机器4,
[0116] O31→机器5,O32→机器3,O41→机器1,O42→机器2
[0117] 其中,→表示将工序分配给相应的机器。
[0118] 随机产生初始群体是指,每个个体中的工序序列向量通过随机排列所有作业中的所有工序生成;对于机器分配向量,将每道作业工序随机分配到它机器集合中的任一台上进行加工;
[0119] Pareto支配是指:设x1和x2为多目标优化问题的两个解,问题的目标个数为m1,假设所有目标均需最小化,称x1Pareto支配x2当且仅当
[0120]
[0121] 其中,g和h分别表示目标的某一个序号,fg(x1)和fg(x2)分别表示x1和x2在第g个目标fg上的目标值,fh(x1)和fh(x2)分别表示x1和x2在第h个目标fh上的目标值。
[0122] Pareto非支配解是指,如果在某一集合中不存在任何其它解x'Pareto支配x,则称x为该集合中的Pareto非支配解(简称非支配解)。提高Pareto非支配解在任何一个目标上的性能,都必然会导致它在剩余的至少一个目标上的性能降低;
[0123] (4)生成子代群体:
[0124] 随机采样一组不确定性场景θq;设置子代群体 令i=1;
[0125] (4.1)交配选择;
[0126] 产生一个均匀分布的随机数rand1∈[0,1];设置第i个子问题的更新邻域P(i):
[0127]
[0128] 基于以下规则产生3个不同的父代个体 和
[0129]
[0130] (4.2)繁殖;
[0131] 采用基于微分进化算法的繁殖算子,由 和xi生成子代个体ui;
[0132] (4.3)更新外部存储器;
[0133] 评价ui的目标值,并归一化各目标值;令ct=ct+1;将ui加入外部存储器Arc;并删除当前Arc中所有重复解和Pareto支配解;设Chipop=Chipop∪ui;如果i<N,则令i=i+1,转至(4.1),否则执行步骤(5);
[0134] 步骤(4.2)所述的繁殖算子是指,基于微分进化算法中的变异算子和交叉算子,设计一种改进的自适应变异算子和基于修复的交叉算子,由父代个体 和第i个子i i
问题的当前个体x,生成子代个体u;其中,改进的自适应变异算子的实施方法如下:
[0135] β=e-0.015t,
[0136]
[0137] 其中,F1,F2和F3是变异因子,它们的值分别从[0.5,1]中均匀随机生成; 是当前外部存储器Arc中,距离xi最近的解, 参数β的值随着进化代数t的取值而变化;yi是由改进的自适应变异算子生成的个体;
[0138] 对于个体的工序序列向量和机器分配向量,分别实施上述所述改进的自适应变异算子;在实施完成后,生成向量中的部分元素可能为非整数,即不可行值。为了解决该问题,对于生成的yi中的工序序列向量ysi,将它的各个元素按从小到大的顺序进行排列,得到ysi的排序向量tysi,并将排序后的每个元素在原向量ysi中的位置索引记录在索引向量Ii中;将xi的工序序列向量xsi中各个元素按从小到大的顺序进行排列,得到xsi的排序向量txsi,并令ysi(Ii)=txsi(ysi(Ii)表示ysi中所有在Ii记录的位置上的元素);对于生成的yi中的机器分配向量ymi,针对每个元素,搜索其对应工序的机器集合,从中确定出与该元素值最接近的机器,并将该机器替代此元素;如果有两台以上机器同时满足此条件,则从中随机选择i i i
一台机器替换对应元素;更新后的工序序列向量ys和机器分配向量ym构成个体y;
[0139] 所述基于修复的交叉算子的实施方法如下:
[0140] (a)将由改进的自适应变异算子生成的个体yi与xi组合,构成子代个体ui:
[0141]
[0142] 其中, 分别是ui,yi,xi的第ll个元素,L是个体xi的长度,CR∈[0,1]是交叉概率, 是从[0,1]中均匀随机产生的一个数,Irandi是从集合{1,2,…,L}中随机选择的一个整数;
[0143] 在本发明机器分配向量的表示方法中,yi的机器分配向量ymi与xi的机器分配向量xmi在相同位置上的机器对应于同一道工序。因此,上述交叉算子可以直接作用于ymi和xmi,交叉得到的结果即为子代个体ui的机器分配向量umi。
[0144] 对于工序序列向量,上述交叉算子的实施可能产生不可行结果,即在交叉后的工序序列向量中,出现冗余的作业工序,而丢失了另外一些工序。为了解决该问题,本发明针对yi的工序序列向量ysi与xi的工序序列向量xsi,需进一步实施以下步骤:
[0145] (b)将步骤(a)求得的ui的工序序列向量usi中,来自于xsi的元素位置索引记录在1号索引向量index1中,将来自于ysi的元素位置索引记录在2号索引向量index2中;令usi=xsi,临时索引向量tempindex2=index2,测试向量test=usi(index1)(usi(index1)表示usi中所有在index1记录的位置上的元素),索引删除向量donor_delete=[],[]表示空集合;
[0146] (c)对test中的每个元素ue,确定在ysi(index1)(ysi(index1)表示ysi中所有在index1记录的位置上的元素)中是否存在一些元素等于ue;如果存在,则从中均匀随机地选择一个元素,将选中的元素在ysi中的位置索引加入donor_delete,并将该索引从index1中删除;否则,找出在ysi(index2)(ysi(index2)表示ysi中所有在index2记录的位置上的元素)中等于ue的元素,从中均匀随机地选取一个,将它在ysi中的位置索引加入donor_delete,并将该索引从index2中删除;
[0147] (d)将donor_delete中的元素从集合{1,2,…,L}中移除,即令索引保留向量donar_reserve={1,2,…,L}\donar_delete(\表示去除),且usi(tempindex2)=ysi(donar_reserve)(usi(tempindex2)表示usi中所有在tempindex2记录的位置上的元素,ysi(donar_reserve)表示ysi中所有在donar_reserve记录的位置上的元素)。
[0148] (5)解的更新:
[0149] 设混合群体Mixpop={x1,…,xN}∪Chipop,令i=1,
[0150] (5.1)令计数器c=0;
[0151] (5.2)从第i个子问题的更新邻域P(i)中随机选取一个子群体的序号k,k∈P(i);
[0152] (5.3)对于第k个子问题,从Mixpop中确定最佳解;
[0153] 设标记变量mark=0;给定第k个子问题的权向量 ( 为第j个目标的权值, )和参考向量 为第j个目标的参考
点,采用切比雪夫法求得任意一个个体x在第k个子问题的合成目标函数为:
[0154]
[0155] 由于采用归一化目标值,设置参考向量z*=(0,0,0);对于Mixpop中的每个个体xyl和第k个子问题的当前解xk,如果下述3个条件中有一个满足:(i)gte(xyl|λk,z*)<gte(xk|λk,z*);(ii)gte(xyl|λk,z*)=gte(xk|λk,z*)且xyl Pareto支配xk;(iii)gte(xyl|λk,z*)=gte(xk|λk,z*)且xyl在鲁棒性能f3=robustness上的目标值小于xk,则令xk=xyl,FVk=F(xyl),Fnok=Fno(xyl),且mark=1;其中,FVk表示xk的目标向量,即FVk=F(xk)=[f1(xk),f2(xk),f3(xk)],F(xyl)表示xyl的目标向量,即F(xyl)=[f1(xyl),f2(xyl),f3(xyl)],Fnok表示xk经归一化后的目标向量,即Fnok=[fno1(xk),fno2(xk),fno3(xk)],Fno(xyl)表示xyl经归一化后的目标向量,即Fno(xyl)=[fno1(xyl),fno2(xyl),fno3(xyl)];
[0156] (5.4)如果mark=1,则令c=c+1;
[0157] (5.5)从P(i)中删除序号k;如果c<nr且P(i)非空集,则转至(5.2);否则,如果i<N,则令i=i+1,转至(5.1),否则转至步骤(6);
[0158] 步骤(6)终止准则判断:
[0159] 如果ct>NmbEvl,则终止迭代,输出外部存储器Arc,即一组Pareto非支配的柔性作业车间调度解,将这些解提供给生产管理者进行参考,并由他从中挑选出一个符合生产要求的满意解作为调度方案;否则,令t=t+1,转至步骤(4)。
[0160] 本发明的效果可以通过以下仿真实验进一步说明:
[0161] 1.实验条件:
[0162] 在CPU为Intel core Duo 2.2GHz、内存4GB、WINDOWS 7系统上使用Matlab 2010进行仿真。
[0163] 2.实验内容:
[0164] 本发明针对上述具有5台机器,4项作业的柔性作业车间实施例求解生产调度方案。本实施例中,每项作业的每道工序均可以在5台机器上分别加工。这些工序中,有部分工序的加工时间存在不确定性。4项作业包含的工序个数、每道工序在各台允许加工机器上的初始预估加工时间、以及受扰动后的实际加工时间如表1所示。
[0165] 3.实验结果
[0166] 本发明运行一次,可以求得一组Pareto非支配的柔性作业车间调度解。从这组解中挑选2个调度方案解Solutiona和Solutionb,当面临相同的加工时间不确定性时,给出它们在效率性能(作业完工时间、机器最大负载)和鲁棒性能上的比较。每道工序在各台允许加工机器上的初始预估加工时间、以及受扰动后的实际加工时间如表2所示。两个解在初始预估景象下的作业完工时间makespanI、机器最大负载workloadI、受扰动情况下的作业完工时间makespanq、机器最大负载workloadq,以及它们的鲁棒目标值如表3所示。从表3可以看出,为了获取更好的鲁棒性,Solutionb的初始作业完工时间makespanI和机器最大负载workloadI劣于Solutiona。然而,当面临相同的加工时间扰动时,Solutiona的作业完工时间makespanq和机器最大负载workloadq却不仅劣于Solutionb在扰动情况下的相应值,也劣于Solutionb在初始景象中的makespanI和workloadI。由此说明,Solutionb所具有的优良鲁棒性,补偿了它在初始景象中效率性能(makespanI和workloadI)的弱势,使得它具有更强的抗干扰能力,降低了它的效率性能对扰动的敏感程度。图3为调度方案解Solutiona在初始景象中的甘特图,图4为调度方案解Solutiona在扰动情况下的甘特图,图5为调度方案解Solutionb在初始景象中的甘特图,图6为调度方案解Solutionb在扰动情况下的甘特图。从甘特图中可以获取为每道工序分配的加工机器,每道工序的开始加工时间和结束时间、每项作业的开始加工时间和结束时间,以及每台机器上各工序的先后加工顺序。
[0167] 表2
[0168]
[0169]
[0170] 每个单元格中每行的5个值分别为各工序在各台机器上的预估或扰动加工时间[0171] 表3
[0172]
[0173] 分别使用本发明方法,以及两个现有的经典多目标进化算法MOEA/D-DE和NSGA-II求解本实施例,将求得的Pareto非支配解集在收敛性能和分布性能上进行比较。收敛性测度采用超体积比率(hypervolume ratio,简称HVR)度量。HVR的值越大,说明算法求得的Pareto非支配解集在目标空间上的收敛性越好,分布越广。分布性能用测度Spread度量,Spread越小,说明算法求得的Pareto非支配解集的分布越宽广且越均匀。将本发明方法和其它两种已有算法分别在本实施例中运行30次,采用显著性水平为0.5的Wilcoxon秩和检验法对3种算法在30次运行中的性能进行统计测试,结果如表4所示。表4中,p值是Wilcoxon秩和检验法的返回值,假设两组样本的分布具有相同的中值,则p值表示样本数据支持该假设的证据,p值越大,证据越强。符号‘+/-/=’分别表示,在算法A vs.算法B中,依据所采用的显著性水平为0.5的Wilcoxon秩和检验法,算法A显著优于B,或算法A显著劣于B,或算法A和B之间没有显著差别。由表4可见,在本实施例中,对于收敛性测度HVR和分布性能用测度Spread,本发明均显著优于MOEA/D-DE和NSGA-II,说明与两种已有的方法相比,本发明能够为生产管理者提供一组分布更宽广,且收敛性更好的Pareto非支配解。
[0174] 表4
[0175]
[0176] 综上,本发明提出的基于分解多目标进化算法的柔性作业车间鲁棒调度方法,由于采用了新型的子问题更新策略,利用外部存储器中的精英个体参与子代个体生成,以及使用改进的自适应变异算子和基于修复的交叉算子进行繁殖,从而可以更好地利用全局信息,并维护算法在“探索”和“利用”之间的平衡,提高了算法的收敛特性和分布性能。这些机制有效地提高了本发明的搜索能力,克服了传统的生产调度方法局部搜索能力较弱、易于陷入局部最优、调度效率低下的缺点,能够快速高效地实现柔性作业车间中的调度任务。此外,通过引入鲁棒性能指标,本发明能够处理柔性作业车间生产环境中存在的不确定因素,在保证完工时间较短、机器负载较为均衡等性能的同时,增强车间调度方案对不确定性的抗干扰能力。
[0177] 以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。