本发明涉及供应链技术领域,具体涉及一种协同制造方法及系统。
背景技术:
批调度问题源于集成电路芯片的测试阶段,是一个典型的组合优化问题。它广泛存在于现代化生产的各行各业,如:半导体制造业、金属加工业、铸造业等领域。与传统调度问题中一台机器只能加工一个工件不同,批处理机可以在机器容量限制范围内同时加工多个工件。合理有效的利用批处理机将显著提升企业的生产效率,提高企业的市场竞争力。因此,对批处理机调度问题进行研究具有很强的现实意义。
在以往的研究中,智能算法被广泛应用于解决此类组合优化问题,kashan等基于启发式算法提出了混合遗传算法(hgh)求解差异工件尺寸的相同平行批调度问题。chang等提出了一个模拟退火算法用于求解该类问题,实验结果显示所提的算法在求解时间和质量上均优于cplex软件的求解结果。jia和leung提出了最大最小蚁群算法求解工件具有不同尺寸的相同平行机调度问题,并通过实验验证了该算法的性能。该文中为最大化生产效益问题构建的改进遗传算法是建立在已有的遗传算法基础上的。遗传算法的步骤一般包括:(1)初始化种群;(2)计算适应度,记录最优解;(3)交叉变异;(4)更新产生下一代种群。通过重复以上步骤在整个空间内搜索最优解。
然而,在实施本发明实施例的过程中,发明人发现,以往文献主要集中研究了单机以及相同平行机的批调度问题,虽然近年来也有少数文献开始研究机器不相同的平行批调度问题,但它们往往只关注平行机在某一方面的不同,如:只考虑容量不同或只考虑速度不同。而实际生产环境中新老机器往往同时存在,由于设备性能不同,导致生产线上的批处理机不仅具有不同的容量,同时也具有不同的加工速度。此类批调度问题更加复杂,它需要同时考虑机器容量和加工速度对优化目标的影响。除此之外,在方法上,遗传算法也存在着局部收敛性差和容易早熟等缺点,特别是在某些特定的优化问题中无法提供稳定可靠的解决方案,不利于在当前复杂生产环境下提高生产效率。
技术实现要素:
本发明实施例的一个目的解决具有不同容量的同类平行机批调度问题,确定工件任务将分配至哪个机器,以及该机器上的工件的组批方式和加工顺序,以最小化制造跨度。基于问题所特有的性质,提出有效的算法,解决该组合优化问题,推动生产效率的提升。
第一方面,本发明实施例提供了一种基于改进遗传算法的不同容量的同类平行机批调度方法,包括:
步骤1、输入每个机器的容量和工件的加工时间,设定改进遗传算法参数,包括最大迭代次数tmax,全局最优解gbest,迭代次数t=1;
步骤2、初始化种群,考虑共有q个染色体,第h个染色体的基因定义为
步骤3、用启发式算法产生一个初始解,将该初始解作为种群中的第一个染色体‘
步骤4、对种群执行局部搜索策略,提高种群质量;
步骤5、计算种群中每个解的适应度,更新全局最优解,将最小适应度值赋给;
步骤6、从种群中随机选择两个解
步骤7、设定变量h=1,判断rand<0.5是否成立,其中rand为[0,1]之间的随机数,若成立,选择第一个父代解的第h个基因作为子代的第h个基因;否则,选择第二个父代解的第h个基因作为子代的第h个基因,令h=h+1,重复该步骤直至h>n,从而产生一个新的染色体;
步骤8、重复步骤7,产生q个子代解,计算子代解的适应度;
步骤9、将原种群与子代种群按照适应度非减排序,取原种群前ns个染色体和子代种群前q-ns个染色体组成一个新的种群;
步骤10、将新种群按照适应度非减排序,随机产生nm个染色体,替代新种群中的后nm个染色体,得到下一代种群,令t=t+1;
步骤11、判断t≤tmax是否成立,若成立,返回步骤4,否则,结束算法并输出全局最优解gbest,输出最优的加工任务分配和每个机器上的组批方式和加工顺序。
可选地,步骤3中所述用启发式算法产生一个初始解,包括:
步骤31、将所有工件按加工时间非增序进行排列,得到排序后的工件集合;
步骤32、将所有机器按加工速度非增序进行排列,若加工速度相同则按机器容量非增序进行排列;
步骤33、令j=1,cj[i]=0,ai=0,i=1,...,m,其中,cj[i]表示机器i上工件j的完工时间,ai表示机器i的空闲时间;
步骤34、计算
步骤35、选择cj[i]最小的机器,称之为机器min,令amin=cj[min],j=j+cmin;
步骤36、若j<n,则将工件j-cmin到工件j-1(共cmin个工件)分配到机器min上,执行步骤34;否则,将工件集合中未分配的所有工件分配到机器min上,执行步骤37;
步骤37、返回cmax=maxi∈m{ai},算法结束。
可选地,步骤4中所述对种群执行局部搜索策略,包括:
步骤41、将各机器上的批次按批加工时间非增序进行排列,各批次内的工件按加工时间非增序进行排列;
步骤42、将机器按完工时间(机器完工时间为机器上最后一个批次的完工时间)非增序进行排列,令i=1,h=m;
步骤43、选择第i台机器,称之为机器i;选择第h台机器,称之为机器h;
步骤44、若h>1,执行步骤45;否则,执行步骤48;
步骤45、选择机器i上任意批次b,选择机器h上任意批次f;
步骤46、若批次f中存在工件j,满足pj<pb并且pb≤pf,则交换工件j和批次b中的第一个工件,执行步骤47;否则,h=h-1,执行步骤44;
步骤47、将批次b和批次f内的工件按加工时间非增序进行排列,执行步骤45;
步骤48、结束搜索。
可选地,所述方法通过下述步骤计算个体适应度,包括:
步骤1’、对xk=(x1,x2,...,xh,...,xn),将第h个工件分配到第xh个机器,从而获得每个机器上的工件集合;
步骤2’、将每个机器上的工件集合中第y个未分配的工件暂时放入能容纳该工件的所有批中,并选出其中放入该工件后批剩余容量最小的批,把该工件分配到选定的批中;若当前所有批的剩余空间都不能容纳第y个未分配工件,则将该工件放入一个批容量为ci的新批中,令y=y+1;
步骤3’、重复步骤2’,直至把工件集合中所有的工件都分配到相应的批中,批的加工时间由批中工件最大加工时间决定。
第二方面,本发明实施例还提供了一种基于改进遗传算法的不同容量的同类平行机批调度系统,包括:
计算模块21,用于执行:
步骤1、输入每个机器的容量和工件的加工时间,设定改进遗传算法参数,包括最大迭代次数tmax,全局最优解gbest,迭代次数t=1;
步骤2、初始化种群,考虑共有q个染色体,第h个染色体的基因定义为
步骤3、用启发式算法产生一个初始解,将该初始解作为种群中的第一个染色体‘
步骤4、对种群执行局部搜索策略,提高种群质量;
步骤5、计算种群中每个解的适应度,更新全局最优解,将最小适应度值赋给;
步骤6、从种群中随机选择两个解
步骤7、设定变量h=1,判断rand<0.5是否成立,其中rand为[0,1]之间的随机数,若成立,选择第一个父代解的第h个基因作为子代的第h个基因;否则,选择第二个父代解的第h个基因作为子代的第h个基因,令h=h+1,重复该步骤直至h>n,从而产生一个新的染色体;
步骤8、重复步骤7,产生q个子代解,计算子代解的适应度;
步骤9、将原种群与子代种群按照适应度非减排序,取原种群前ns个染色体和子代种群前q-ns个染色体组成一个新的种群;
步骤10、将新种群按照适应度非减排序,随机产生nm个染色体,替代新种群中的后nm个染色体,得到下一代种群,令t=t+1;
输出模块22,用于后执行步骤11,包括:判断t≤tmax是否成立,若成立,返回步骤4,否则,结束算法并输出全局最优解gbest,输出最优的加工任务分配和每个机器上的组批方式和加工顺序。
可选地,所述计算模块21在执行步骤3中用启发式算法产生一个初始解包括如下步骤:
步骤31、将所有工件按加工时间非增序进行排列,得到排序后的工件集合;
步骤32、将所有机器按加工速度非增序进行排列,若加工速度相同则按机器容量非增序进行排列;
步骤33、令j=1,cj[i]=0,ai=0,i=1,...,m,其中,cj[i]表示机器i上工件j的完工时间,ai表示机器i的空闲时间;
步骤34、计算
步骤35、选择cj[i]最小的机器,称之为机器min,令amin=cj[min],j=j+cmin;
步骤36、若j<n,则将工件j-cmin到工件j-1(共cmin个工件)分配到机器min上,执行步骤34;否则,将工件集合中未分配的所有工件分配到机器min上,执行步骤37;
步骤37、返回cmax=maxi∈m{ai},算法结束。
可选地,所述计算模块21在执行步骤4中对种群执行局部搜索策略具体包括:
步骤41、将各机器上的批次按批加工时间非增序进行排列,各批次内的工件按加工时间非增序进行排列;
步骤42、将机器按完工时间(机器完工时间为机器上最后一个批次的完工时间)非增序进行排列,令i=1,h=m;
步骤43、选择第i台机器,称之为机器i;选择第h台机器,称之为机器h;
步骤44、若h>1,执行步骤45;否则,执行步骤48;
步骤45、选择机器i上任意批次b,选择机器h上任意批次f;
步骤46、若批次f中存在工件j,满足pj<pb并且pb≤pf,则交换工件j和批次b中的第一个工件,执行步骤47;否则,h=h-1,执行步骤44;
步骤47、将批次b和批次f内的工件按加工时间非增序进行排列,执行步骤45;
步骤48、结束搜索。
可选地,所述计算模块21还用于通过下述步骤计算个体适应度,包括:
步骤1’、对xk=(x1,x2,...,xh,...,xn),将第h个工件分配到第xh个机器,从而获得每个机器上的工件集合;
步骤2’、将每个机器上的工件集合中第y个未分配的工件暂时放入能容纳该工件的所有批中,并选出其中放入该工件后批剩余容量最小的批,把该工件分配到选定的批中;若当前所有批的剩余空间都不能容纳第y个未分配工件,则将该工件放入一个批容量为ci的新批中,令y=y+1;
步骤3’、重复步骤2’,直至把工件集合中所有的工件都分配到相应的批中,批的加工时间由批中工件最大加工时间决定。
本发明实施例针对不同容量限制的同类平行机批调度问题,通过改进的遗传算法,首先将工件以编码的方式,分配到各个机器上,然后依据问题的性质提出相应的分批和生产调度策略,得出相应个体的适应度值;再通过局部搜索策略,提高解的质量;基于解的适应度对种群执行交叉操作,通过重复迭代,实现对种群的不断更新,最终求的最优解。改进的遗传算法在收敛速度和收敛结果上,是一种效率很高的算法;通过该算法,解决了容量不同的同类平行机批调度问题,提高了企业的生产效率,降低了企业成本,提高了企业的服务水平。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明一实施例提供的不同容量的同类机批调度问题示意图;
图2是本发明一实施例提供的一种基于改进遗传算法的不同容量的同类平行机批调方法的流程示意图;
图3是本发明一实施例提供的一种基于改进遗传算法的不同容量的同类平行机批调系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明各个实施例主要解决具有不同容量的同类平行机批调度问题,确定工件任务将分配至哪个机器,以及该机器上的工件的组批方式和加工顺序,以最小化制造跨度。基于问题所特有的性质,提出有效的算法,解决该组合优化问题,推动生产效率的提升。
为便于理解,下面结合图1对本发明实施例所解决的问题进行详细描述。
如图1所示,具有不同容量的同类平行机批调度问题,目标为最小化制造跨度。该问题描述如下:给定一组包含n个工件的任务集合j={j1,j2,j3,···,jn}需要在m个平行批处理机上进行加工。不同的工件具有不同的加工时间和相同的单位尺寸,加工时间由pj(j=1,2,···,n)表示。问题假设如下:
(1)所有工件和机器在零时刻准备完毕,工件具有单位尺寸和不同的加工时间,各批处理机具有不同的容量和加工速度;
(2)所有工件是相容的,在满足机器容量约束的条件下可以将多个工件放入同一批中进行加工,批的加工时间由批中加工时间最长的工件以及加工机器所决定;
(3)批的加工过程不允许中断,中途不允许工件退出或加入。
基于此,本发明实施例提供了一种基于改进遗传算法的不同容量的同类平行机批调度方法,参见图2,包括:
步骤1、输入每个机器的容量和工件的加工时间,设定改进遗传算法参数,包括最大迭代次数tmax,全局最优解gbest,迭代次数t=1;
步骤2、初始化种群,考虑共有q个染色体,第h个染色体的基因定义为
步骤3、用启发式算法产生一个初始解,将该初始解作为种群中的第一个染色体‘
步骤4、对种群执行局部搜索策略,提高种群质量;
步骤5、计算种群中每个解的适应度,更新全局最优解,将最小适应度值赋给;
步骤6、从种群中随机选择两个解
步骤7、设定变量h=1,判断rand<0.5是否成立,其中rand为[0,1]之间的随机数,若成立,选择第一个父代解的第h个基因作为子代的第h个基因;否则,选择第二个父代解的第h个基因作为子代的第h个基因,令h=h+1,重复该步骤直至h>n,从而产生一个新的染色体;
步骤8、重复步骤7,产生q个子代解,计算子代解的适应度;
步骤9、将原种群与子代种群按照适应度非减排序,取原种群前ns个染色体和子代种群前q-ns个染色体组成一个新的种群;
步骤10、将新种群按照适应度非减排序,随机产生nm个染色体,替代新种群中的后nm个染色体,得到下一代种群,令t=t+1;
步骤11、判断t≤tmax是否成立,若成立,返回步骤4,否则,结束算法并输出全局最优解gbest,输出最优的加工任务分配和每个机器上的组批方式和加工顺序。
在具体实施时,步骤3中所述用启发式算法产生一个初始解x_1可以通过多种实施方式,其中一种可选的事实方式包括如下步骤:
步骤31、将所有工件按加工时间非增序进行排列,得到排序后的工件集合;
步骤32、将所有机器按加工速度非增序进行排列,若加工速度相同则按机器容量非增序进行排列;
步骤33、令j=1,cj[i]=0,ai=0,i=1,...,m,其中,cj[i]表示机器i上工件j的完工时间,ai表示机器i的空闲时间;
步骤34、计算
步骤35、选择cj[i]最小的机器,称之为机器min,令amin=cj[min],j=j+cmin;
步骤36、若j<n,则将工件j-cmin到工件j-1(共cmin个工件)分配到机器min上,执行步骤34;否则,将工件集合中未分配的所有工件分配到机器min上,执行步骤37;
步骤37、返回cmax=maxi∈m{ai},算法结束。
在具体实施时,步骤4中所述对种群执行局部搜索策略可以通过多种实施方式,其中一种可选的事实方式包括如下步骤:
步骤41、将各机器上的批次按批加工时间非增序进行排列,各批次内的工件按加工时间非增序进行排列;
步骤42、将机器按完工时间(机器完工时间为机器上最后一个批次的完工时间)非增序进行排列,令i=1,h=m;
步骤43、选择第i台机器,称之为机器i;选择第h台机器,称之为机器h;
步骤44、若h>1,执行步骤45;否则,执行步骤48;
步骤45、选择机器i上任意批次b,选择机器h上任意批次f;
步骤46、若批次f中存在工件j,满足pj<pb并且pb≤pf,则交换工件j和批次b中的第一个工件,执行步骤47;否则,h=h-1,执行步骤44;
步骤47、将批次b和批次f内的工件按加工时间非增序进行排列,执行步骤45;
步骤48、结束搜索。
在具体实施时,本发明实施例提供的方法可以通过下述步骤计算个体适应度,包括:
步骤1’、对xk=(x1,x2,...,xh,...,xn),将第h个工件分配到第xh个机器,从而获得每个机器上的工件集合;
步骤2’、将每个机器上的工件集合中第y个未分配的工件暂时放入能容纳该工件的所有批中,并选出其中放入该工件后批剩余容量最小的批,把该工件分配到选定的批中;若当前所有批的剩余空间都不能容纳第y个未分配工件,则将该工件放入一个批容量为ci的新批中,令y=y+1;
步骤3’、重复步骤2’,直至把工件集合中所有的工件都分配到相应的批中,批的加工时间由批中工件最大加工时间决定。
本发明实施例的有益效果如下:
1、本发明实施例针对不同容量限制的同类平行机批调度问题,通过改进的遗传算法,首先将工件以编码的方式,分配到各个机器上,然后依据问题的性质提出相应的分批和生产调度策略,得出相应个体的适应度值;再通过局部搜索策略,提高解的质量;基于解的适应度对种群执行交叉操作,通过重复迭代,实现对种群的不断更新,最终求的最优解。改进的遗传算法在收敛速度和收敛结果上,是一种效率很高的算法;通过该算法,解决了容量不同的同类平行机批调度问题,提高了企业的生产效率,降低了企业成本,提高了企业的服务水平。
2、本发明实施例在初始解产生时采用了启发式方法,保证了初始种群的质量;基于问题的性质提出了有效的局部搜索策略,在种群产生后对种群进行调整和改进,从而提高了交叉操作中父代解的质量,提高了算法的收敛能力和收敛速度,有利于算法跳出局部最优,保证了种群的多样性。
3、本发明实施例针对遗传算法局部收敛性不足和容易早熟的问题,提出了基于原种群,交叉基因和移民的种群更新策略,兼顾优秀个体的传承和种群多样性,解决了遗传算法容易早熟的问题,有效地提高了算法的搜索效率。
基于相同的构思,本发明另一实施例还提供了一种基于改进遗传算法的不同容量的同类平行机批调度系统,参见图3,包括:
计算模块21,用于执行:
步骤1、输入每个机器的容量和工件的加工时间,设定改进遗传算法参数,包括最大迭代次数tmax,全局最优解gbest,迭代次数t=1;
步骤2、初始化种群,考虑共有q个染色体,第h个染色体的基因定义为
步骤3、用启发式算法产生一个初始解,将该初始解作为种群中的第一个染色体‘
步骤4、对种群执行局部搜索策略,提高种群质量;
步骤5、计算种群中每个解的适应度,更新全局最优解,将最小适应度值赋给;
步骤6、从种群中随机选择两个解
步骤7、设定变量h=1,判断rand<0.5是否成立,其中rand为[0,1]之间的随机数,若成立,选择第一个父代解的第h个基因作为子代的第h个基因;否则,选择第二个父代解的第h个基因作为子代的第h个基因,令h=h+1,重复该步骤直至h>n,从而产生一个新的染色体;
步骤8、重复步骤7,产生q个子代解,计算子代解的适应度;
步骤9、将原种群与子代种群按照适应度非减排序,取原种群前ns个染色体和子代种群前q-ns个染色体组成一个新的种群;
步骤10、将新种群按照适应度非减排序,随机产生nm个染色体,替代新种群中的后nm个染色体,得到下一代种群,令t=t+1;
输出模块22,用于后执行步骤11,包括:判断t≤tmax是否成立,若成立,返回步骤4,否则,结束算法并输出全局最优解gbest,输出最优的加工任务分配和每个机器上的组批方式和加工顺序。
可选地,所述计算模块21在执行步骤3中用启发式算法产生一个初始解包括如下步骤:
步骤31、将所有工件按加工时间非增序进行排列,得到排序后的工件集合;
步骤32、将所有机器按加工速度非增序进行排列,若加工速度相同则按机器容量非增序进行排列;
步骤33、令j=1,cj[i]=0,ai=0,i=1,...,m,其中,cj[i]表示机器i上工件j的完工时间,ai表示机器i的空闲时间;
步骤34、计算
步骤35、选择cj[i]最小的机器,称之为机器min,令amin=cj[min],j=j+cmin;
步骤36、若j<n,则将工件j-cmin到工件j-1(共cmin个工件)分配到机器min上,执行步骤34;否则,将工件集合中未分配的所有工件分配到机器min上,执行步骤37;
步骤37、返回cmax=maxi∈m{ai},算法结束。
可选地,所述计算模块21在执行步骤4中对种群执行局部搜索策略具体包括:
步骤41、将各机器上的批次按批加工时间非增序进行排列,各批次内的工件按加工时间非增序进行排列;
步骤42、将机器按完工时间(机器完工时间为机器上最后一个批次的完工时间)非增序进行排列,令i=1,h=m;
步骤43、选择第i台机器,称之为机器i;选择第h台机器,称之为机器h;
步骤44、若h>1,执行步骤45;否则,执行步骤48;
步骤45、选择机器i上任意批次b,选择机器h上任意批次f;
步骤46、若批次f中存在工件j,满足pj<pb并且pb≤pf,则交换工件j和批次b中的第一个工件,执行步骤47;否则,h=h-1,执行步骤44;
步骤47、将批次b和批次f内的工件按加工时间非增序进行排列,执行步骤45;
步骤48、结束搜索。
可选地,所述计算模块21还用于通过下述步骤计算个体适应度,包括:
步骤1’、对xk=(x1,x2,...,xh,...,xn),将第h个工件分配到第xh个机器,从而获得每个机器上的工件集合;
步骤2’、将每个机器上的工件集合中第y个未分配的工件暂时放入能容纳该工件的所有批中,并选出其中放入该工件后批剩余容量最小的批,把该工件分配到选定的批中;若当前所有批的剩余空间都不能容纳第y个未分配工件,则将该工件放入一个批容量为ci的新批中,令y=y+1;
步骤3’、重复步骤2’,直至把工件集合中所有的工件都分配到相应的批中,批的加工时间由批中工件最大加工时间决定。
本发明实施例提供的系统能针对不同容量的同类平行机批调度问题,求得近似最优解,从而降低企业生产成本,提高企业服务水平。
本发明实施例还公开一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:第一方面所述的方法。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。