一种基于ONBA的云制造任务最短生产时间调度方法
技术领域
本发明涉及计算;推算;计数的技术领域,特别涉及一种能提升工作效率、优化工作进程的基于ONBA的云制造任务最短生产时间调度方法。
背景技术
云制造是新型的制造业信息化模式与技术手段,是一种基于网络、面向服务的智慧化制造模式。云制造的产生和发展是基于信息化制造技术、云计算、物联网、大数据、高效能计算、智能科学等新兴技术的融合,其旨在采取包括云计算在内的当代信息技术前沿理念,支持制造业在广泛的网络资源环境下,为产品提供高附加值、低成本化和全球化的制造服务。目前,云制造的理论和应用已经成为学术界和工业界的热门话题,如制造资源感知和接入、互操作系统开发、需求匹配问题、物流调配和制造云管理等一些核心技术已经被广泛研究。
云制造任务调度的目的是给需要的任务分配相应的计算资源,将其划分为一些子任务然后安排给云制造平台上的企业进行加工,在特定的云环境下依据某种规则在多任务之间进行资源的平衡和调整,在满足条件的前提下使任务的完成时间尽量小且资源的利用率尽量高。
任务调度算法的优劣直接影响到云制造平台处理任务的能力,传统的调度算法可以完成对某一目标的优化且具有较好的完成期望,如粒子群算法、模拟退火算法以及遗传算法等经典的算法在云制造领域已经被广泛应用,但是这些算法还存在容易陷入局部最优、搜索精度不够等缺点;同时,目前大部分算法都没有考虑到云制造平台的线下物流问题,没有把物流因素加入到算法的考虑中,这会使得算法在实际应用时受到很多制约。
发明内容
本发明解决了现有技术中,云制造平台中任务调度算法容易陷入局部最优、搜索精度不够,且没有考虑到线下物流的因素,而导致算法在实际应用时受到极大制约的问题,本发明提供了一种优化的基于ONBA的云制造任务最短生产时间调度方法。
本发明所采用的技术方案是,一种基于ONBA的云制造任务最短生产时间调度方法,所述方法包括以下步骤:
步骤1:用户向云制造平台上传大型任务;
步骤2:云制造平台将大型任务分解,划分为m个加工请求J={J1,J2,J3...Jm},Ji∈J,Ji表示由单一工序完成的子任务;
步骤3:基于ONBA算法为每一道工序排序调度,选择对应的生产资源和生产厂商;
步骤4:基于ONBA算法确定每两道相邻工序之间的相互关系和相邻工序之间的物流时间关系。
优选地,所述步骤3中,生产任务Ji必须按照各自的生产工序P顺次生产,P={P1,P2,P3...Pn},每道生产工序在任意时刻最多只进行一个任务的生产工作;已知每个任务的生产工序、在每道生产工序的生产时间以及各道工序之间的物流时间的开销,在考虑物流时间影响的情况下,找到最优的生产任务顺序J,并按照此生产任务序列进行调度,使得批量云制造任务完成生产的总的时间开销达到最小。
优选地,所述步骤3包括以下步骤:
步骤3.1:综合生产厂商在加工成本、可靠性和可用性的特性,获得记录了任一子任务在每道工序上的时间花费的多维数组Time
m×n,以Time
ij表示任务J
i在第j道工序P
j上执行所花费的时间、以
与
分别表示任务J
i在第k道工序P
k上执行的开始时间和结束时间;
步骤3.2:任务J
i在工序P
k上执行完后,比较任务J
i在P
k上执行的终止时间与任务J
i-1在P
k+1上执行的终止时间,取较大值为任务J
i在执行P
k+1上执行的起始时间;当任务J
i在云制造车间中的第k道工序的生产时间为0,则
任务J
i在第k道工序上的开始时间即为其结束时间;当任务J
i在云制造车间中的第k道工序的生产时间不为0,则任务J
i在第k道工序的生产开始时间为第k道工序中前一道生产时间不为0的工序生产结束时间
加上该道工序到第k道工序的物流时间;即
其中,
为表示第k道工序前一道生产时间不为0的工序,
为工序
到工序i间的物流时间。
优选地,所述步骤4中,以logij记录生产节点i到生产节点j的物流时间开销。
优选地,所述步骤4包括以下步骤:
步骤4.1:初始化,设置ONBA算法种群数量、每个蝙蝠初始的位置和速度、最大迭代次数Gmax、脉冲发射频率f、响度Ai、收缩系数ρ和缩放因子,令迭代次数t=0;以xij为第i个粒子的在第j个维度的位置,其在服务组合过程中表示云制造任务Tj执行的次序编号;定义目标函数f(x);
步骤4.2:若t<G"ax,调整脉冲发射频率f,更新速度V与位置信息X;
步骤4.3:若rand(0,1)<P,则当前全局最佳位置
其中,
为第t次迭代的全局最优值,m
j为粒子在第j维度的平均值,r∈[0,1],u
ij为在(0,1)均匀分布的随机数,p为常数;
若rand(0,1)≥P,则以f
ij=f
min+(f
max-f
min)r、
更新参数,β
1=c
1r
1,β
2=c
2r
2,其中,f
max和f
min分别为脉冲发射频率的最大值和最小值,0<P<1,ω为粒子更新的惯性权重因子,c
1为粒子个体的学习因子,c
2为粒子群体的学习因子,r
1、r
2∈[0,1],p
i为第i个粒子在第t次迭代时自身的个体最优位置,g表示整个粒子群体当前时刻的群体最优位置;
步骤4.4:若rand(0,1)>r,
否则,进行下一步;其中,ε为在(0,1)满足正态分布的随机数,σ为缩放因子;
步骤4.5:通过蝙蝠随机飞行产生新的解;
步骤4.6:若rand(0,1)<A
i且f(x
i)<f(x
i-1),则接受新解,更新响度
其中,
为当前响度,α∈[0,1];
为脉冲发射率,
为一个在(0,1)之间均匀分布的数,γ>0;
步骤4.7:从种群中随机选择三个蝙蝠个体,以
和
产生新解,与之前的解作对比,找到当前的最佳解;其中,i≠p1≠p2≠p3,p1、p2、p3分别表示种群中的个体,
为缩放因子,
jr为粒子维度内的一个随机整数,cr为交叉概率;
步骤4.8:t=t+1,返回步骤4.2。
优选地,所述步骤4.3中,P=0.5。
优选地,所述步骤4.3中,p=0.5。
优选地,所述步骤4.3中,
c
1=c
1s+(c
1e-c
1s)*sin ω,c
2=c
2s+(c
2e-c
2s)*sinω,其中,r
3、r
4、r∈[0,1],G
max为最大迭代次数,ω
s和ω
e分别为惯性权重的初始值和最终值,t是当前迭代的次数,c
1s和c
2s为c
1和c
2的初始值,c
1e和c
2e为c
1和c
2的迭代最终值。
本发明提供了一种优化的基于ONBA的云制造任务最短生产时间调度方法,通过云制造平台对用户上传的将大型任务分解为若干个加工请求,基于ONBA算法为每一道工序排序调度,选择对应的生产资源和生产厂商,基于ONBA算法确定每两道相邻工序之间的相互关系和相邻工序之间的物流时间关系。本发明相较传统的算法,使得云制造平台中的任务调度算法在保留局部搜索能力优点的同时又能扩大全局搜索范围并保持种族的多样性,搜索精度高,既能求解质量较高的解又能扩大全局搜索范围并避免粒子早熟的缺点,考虑物流的因素保证算法在实际应用中的精确,不仅帮助云制造平台提升工作效率,还可以大大提升用户体验。
附图说明
图1为本发明的流程图;
图2为本发明在不同的云制造任务数的情况下,分别以MPSO、DE、ONBA、NBA算法对应求得的总的生产时间随迭代次数增加的趋势图,趋势图的任务数逐次增加,趋势图的横坐标为迭代次数,纵坐标为生产时间消耗。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种基于ONBA的云制造任务最短生产时间调度方法,本发明的新蝙蝠群算法(New bat algorithm based on two order oscillation,ONBA)是基于2010年提出的新蝙蝠算法(NBA),在算法中加入二阶振荡以及引入差分进化算法而改进的算法,不仅考虑了线上的信息资源的有效管理,还将线下各个子任务可能会分配到不同的企业进行加工从而产生的物流配送问题加入了算法模型中。
所述方法包括以下步骤。
步骤1:用户向云制造平台上传大型任务。
步骤2:云制造平台将大型任务分解,划分为m个加工请求J={J1,J2,J3...Jm},Ji∈J,Ji表示由单一工序完成的子任务。
本发明中,由于同一道工序可以由很多不同的生产厂家来完成,但是每个厂家完成的时间或者质量不同,且一道工序完成后接下去一道工序可能会在不同的加工地点,所以还需要考虑两道工序之间的物流关系,为每一道工序选择合适的生产资源和生产厂商来保证加工任务达到预期目标。
本发明中,关于生产方的调度基于ONBA算法实现,最短生产时间是该算法的约束条件,在最短生产时间的约束条件下使用ONBA算法对任务进行调度
步骤3:基于ONBA算法为每一道工序排序调度,选择对应的生产资源和生产厂商。
所述步骤3中,生产任务Ji必须按照各自的生产工序P顺次生产,P={P1,P2,P3...Pn},每道生产工序在任意时刻最多只进行一个任务的生产工作;已知每个任务的生产工序、在每道生产工序的生产时间以及各道工序之间的物流时间的开销,在考虑物流时间影响的情况下,找到最优的生产任务顺序J,并按照此生产任务序列进行调度,使得批量云制造任务完成生产的总的时间开销达到最小。
所述步骤3包括以下步骤:
步骤3.1:综合生产厂商在加工成本、可靠性和可用性的特性,获得记录了任一子任务在每道工序上的时间花费的多维数组Time
m×n,以Time
ij表示任务J
i在第j道工序P
j上执行所花费的时间、以
与
分别表示任务J
i在第k道工序P
k上执行的开始时间和结束时间;
步骤3.2:任务J
i在工序P
k上执行完后,比较任务J
i在P
k上执行的终止时间与任务J
i-1在P
k+1上执行的终止时间,取较大值为任务J
i在执行P
k+1上执行的起始时间;当任务J
i在云制造车间中的第k道工序的生产时间为0,则
任务J
i在第k道工序上的开始时间即为其结束时间;当任务J
i在云制造车间中的第k道工序的生产时间不为0,则任务J
i在第k道工序的生产开始时间为第k道工序中前一道生产时间不为0的工序生产结束时间
加上该道工序到第k道工序的物流时间;即
其中,
为表示第k道工序前一道生产时间不为0的工序,
为工序
到工序i间的物流时间。
本发明中,因为要达到生产时间最短的目标,云生产平台中通常存许多的加工供应商,这些供应商通常在加工成本,可靠性,可用性等方面各有特长如:有的加工商在加工某一道工序时加工成本较高但是可用性较低,但是加工另一道工序时可能成本较低,可靠性较高,不同的加工商加工不同的工序时各不相同。
本发明中,任务Ji在工序Pk上执行完后,需要在Pk+1上执行,但是每道工序同一时间内只能执行一个任务,所以此时任务Ji是否能在Pk+1上执行取决于Pk+1上现在是否有任务在执行,而任务是按照序列数组J来执行的,所以如果Pk+1上仍有任务在执行,那么必然是Ji-1,所以任务Ji在执行Pk+1上执行的起始时间是任务Ji在Pk上执行的终止时间与Ji-1在Pk+1上执行的终止时间的较大值。
本发明中,综合调度任务为,已知每个任务所需的生产工序和在每道生产工序的生产时间以及各道工序之间的物流时间的开销,在考虑物流时间影响的情况下,需要找到最优的生产任务顺序J,并按照此生产任务序列进行调度,使得批量云制造任务完成生产的总的时间开销达到最小。
步骤4:基于ONBA算法确定每两道相邻工序之间的相互关系和相邻工序之间的物流时间关系。
所述步骤4中,以logij记录生产节点i到生产节点j的物流时间开销。
本发明中,物流时间矩阵logm×m记录了生产节点之间的物流时间开销,其中logij代表了生产节点i到生产节点j的物流时间开销,对于同一类型的每个云制造生产任务,生产过程中的物流时间开销是一致的,但是两两生产工序之间物流时间一定程度上影响了生产任务之间的顺序;若对于某一任务而言,其中的云制造车间中的某道工序是不需要的,那么对应的物流时间即为上一道生产时间不为0的工序到生产下一道生产时间不为0的工序之间的物流时间。
所述步骤4包括以下步骤:
步骤4.1:初始化,设置ONBA算法种群数量、每个蝙蝠初始的位置和速度、最大迭代次数Gmax、脉冲发射频率f、响度Ai、收缩系数ρ和缩放因子,令迭代次数t=0;以xij为第i个粒子的在第j个维度的位置,其在服务组合过程中表示云制造任务Tj执行的次序编号;定义目标函数f(x);
步骤4.2:若t<Gmax,调整脉冲发射频率f,更新速度V与位置信息X;
步骤4.3:若rand(0,1)<P,则当前全局最佳位置
其中,
为第t次迭代的全局最优值,m
j为粒子在第j维度的平均值,r∈[0,1],u
ij为在(0,1)均匀分布的随机数,p为常数;
若rand(0,1)≥P,则以fij=fmin+(fmax-fmin)r、
更新参数,β1=c1r1,β2=c2r2,其中,fmax和fmin分别为脉冲发射频率的最大值和最小值,0<P<1,ω为粒子更新的惯性权重因子,c1为粒子个体的学习因子,c2为粒子群体的学习因子,r1、r2∈[0,1],pi为第i个粒子在第t次迭代时自身的个体最优位置,g表示整个粒子群体当前时刻的群体最优位置;
所述步骤4.3中,P=0.5。
所述步骤4.3中,p=0.5。
所述步骤4.3中,
c
1=c
1s+(c
1e-c
1s)*sin ω,c
2=c
2s+(c
2e-c
2s)*sinω,其中,r
3、r
4、r∈[0,1],G
max为最大迭代次数,ω
s和ω
e分别为惯性权重的初始值和最终值,t是当前迭代的次数,c
1s和c
2s为c
1和c
2的初始值,c
1e和c
2e为c
1和c
2的迭代最终值。
步骤4.4:若rand(0,1)>r,
否则,进行下一步;其中,ε为在(0,1)满足正态分布的随机数,σ为缩放因子;
步骤4.5:通过蝙蝠随机飞行产生新的解;
步骤4.6:若rand(0,1)<A
i且f(x
i)<f(x
i-1),则接受新解,更新响度
其中,
为当前响度,α∈[0,1];
为脉冲发射率,
为一个在(0,1)之间均匀分布的数,γ>0;
步骤4.7:从种群中随机选择三个蝙蝠个体,以
和
产生新解,与之前的解作对比,找到当前的最佳解;其中,i≠p1≠p2≠p3,p1、p2、p3分别表示种群中的个体,
为缩放因子,
jr为粒子维度内的一个随机整数,cr为交叉概率;
步骤4.8:t=t+1,返回步骤4.2。
本发明中,种群数量是算法开始时人为设定的个体总数,种群的规模越大越可能找到全局解,但是运行时间也会随着增长,因此选择一个合适的种群数量十分关键。
本发明中,由于NBA算法存在着寻优精度不高、迭代后期容易入粒子早熟等缺点,采用了二阶振荡机制和差分算法对NBA算法进行优化。其中,二阶振荡机制可以调节群组算法的全局和局部搜索能力,避免算法陷入局部最优,增强种群的自学习能力,丰富种群在搜索后期的粒子多样性,而差分算法基于其在寻优的过程中存在变异、交叉、选择等机制的优势,能够提高个体多样性,在提高粒子局部搜索能力和防止粒子早熟等方面具有很好的应用,更能确保搜索到最优解。
本发明中,物流时间属于下一环节的输入信息,从上一道工序到下一道工序的物流时间都是已知的,在云制造环境下,不同生产节点的工序直接都是通过物流配送相连接,而云制造车间生产管理系统在线上集中各类信息,结合物流时间和生产时间进行整体调度,最后的输出是结合物流时间和生产时间得到的最优的任务执行顺序。
本发明中,每个蝙蝠初始时所在的位置、速度都不一样,并且可以根据是否接近目标来改变调整响度、频率以及脉冲发射率。
本发明中,以rand(0,1)与P的比较为例,是指若一个0到1间的随机数小于P,则需要被更新;而fmax和fmin分别为脉冲发射频率的最大值和最小值,即开始时每个蝙蝠的频率被分配在频率最小值和最大值的区间内,r是一个在(0,1)之间服从均匀分布的随机向量,若P不满足要求,首先根据fmax和fmin来重新确定fij,然后根据fij来调整速度的大小。
本发明中,缩放因子σ可以为0.01。
本发明中,粒子在搜索目标的过程需要更新频率,以更好的接近目标,频率始终落入范围[f
min,f
max]内,f
ij使得粒子每次随机更新时都能落在频率范围内;
和
分别表示粒子在t+1和t时刻的速度值,
和
分别表示粒子在t+1和t时刻的具体位置。
本发明中,ε(和ε2用于保证算法前期的全局寻优能力和算法后期的收敛。
本发明中,步骤4.7是让粒子i的速度发生变异,变异的过程中用到了除i以外的随机3个个体的位置
来帮助粒子i实现速度的变异。
本发明中,令粒子唯独为D,jr为粒子维度内的一个随机正整数,即jr∈[1,D]。
本发明通过云制造平台对用户上传的将大型任务分解为若干个加工请求,基于ONBA算法为每一道工序排序调度,选择对应的生产资源和生产厂商,基于ONBA算法确定每两道相邻工序之间的相互关系和相邻工序之间的物流时间关系。本发明相较传统的算法,使得云制造平台中的任务调度算法在保留局部搜索能力优点的同时又能扩大全局搜索范围并保持种族的多样性,搜索精度高,既能求解质量较高的解又能扩大全局搜索范围并避免粒子早熟的缺点,考虑物流的因素保证算法在实际应用中的精确,不仅帮助云制造平台提升工作效率,还可以大大提升用户体验。