本发明涉及计算机执行制造系统领域,具体来说就是通过算法解决作业车间
调度的组合优化问题。
背景技术:
调度指给任务分配有限的资源,以优化目标函数。在调度领域,作业车间调度问题(Job-Shop Scheduling Problem,JSP)被认为是最难的组合优化问题之一,是复杂的设备制造系统和柔性制造系统领域中研究的重要课题。解决这个问题具有重要意义,因为即使改善一点效率也可能带来显著经济回报。
JSP是NP-hard问题。JSP的高度复杂性使得它难以在大多数情况下用合理时间找到最优解。许多启发式算法被提出用于解决JSP,包括基于优先权调度规则的算法、局部搜索算法、移动瓶颈算法、模拟退火算法和禁忌搜索算法。此外,仿生技术如粒子群算法、人工蜂群算法,也被广泛用于寻找调度问题的最少总完工时间。
各种针对JSP的重要方法都有其局限性:(1)转移瓶颈算法:可能导致不可行解(2)禁忌搜索算法:不同问题规模,单一搜索策略不会产生最优解;(3)针对多目标的柔性作业车间调度问题的粒子群算法:对于大数据集,不产生最优解;(4)并行化技术解决作业车间调度问题:需实现令牌方法,如果令牌丢失或令牌生成失败,则算法将失效;(5)多GPU集群执行分布式禁忌搜索算法:仅适用于柔性作业车间调度问题,不适用于并行机作业车间调度问题。
技术实现要素:
针对现有技术中存在的上述不足之处,本发明结合转移瓶颈算法(Shifting Bottleneck Procedure,SBP)和启发式禁忌搜索方法,提出了一种混合转移瓶颈算法(Hybrid Shifting Bottleneck Procedure,HSBP),并进一步利用GPU实现了并行禁忌搜索算法。减少了找到最优解的计算时间。
本发明的目的则是克服现有技术中存在的:转移瓶颈算法可能导致不可行解;搜索空间将产生近似解,而不是精确解;随着问题规模的扩大,搜索时间显著提高的问题。
本发明为实现上述目的所采用的技术方案是:一种求解并行机作业车间调度的混合启发式转移瓶颈算法,该算法包括以下步骤:
步骤1:设置已排序的机器集初始化JSP,建立相应的PDG,PDG包含所有的合取弧,不包含析取弧
步骤2:对所有未排序的机器使用拓扑排序算法,分解并行机JSP的PDG为一组SMS或者PMS子问题。
步骤3:求解每个SMS和PMS子问题,使用改进的Carlier算法求解SMS问题,使用Jackson算法求解PMS子问题。
步骤4:确定瓶颈机k,根据步骤3的结果确定瓶颈机k上的工件工序。更新M0=M0∪{k},更新PDG。
步骤5:对当前的PDG重新排序和优化。重新调度步骤四的瓶颈机k,使用基于GPU的禁忌搜索算法对PDG进行优化。
步骤6:重复步骤2至步骤5直到所有机器都被调度为止。
本发明的有益效果是:1.转移瓶颈算法可能导致不可行解,而混合转移瓶颈算法克服了这一缺点;2.避免了搜索结果不稳定,能找到最优解;3.减少了找到最优解的计算时间。且随着JSP问题规模的扩大,加速效果更明显。
附图说明
图1:表示该混合算法详细流程图。
图2:表示一个4*3的JSP实例的合取弧图。
图3:表示一个4*3JSP实例的DG模型图。
图4:表示该混合算法中禁忌搜索算法的框架图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下,结合附图对本发明进行详细说明。
一、JSP调度问题
JSP是一个机器调度和优化问题。JSP的特征:包括N个工件M台机器的有限集;每个工件包含一条工序链;每台机器同一时刻最多处理一个工序;每个工序需要在给定机器上不间断处理一段时间;目标是找到加工总时间最短的调度方案。
析取图(Disjunctive Graph,DG)模型可用于表示JSP,图G={V,C∪D}表示的一个示例如图2所示。DG模型的描述:DG模型中有n个工件,m台同样类型的机器;从1到N标记节点,N表示DG中总工序数量;弧(i,j)链接节点i和节点j,表示工序i必须在工序j之前加工;每条弧对应着工序i的加工时间。在析取图中,V表示工件的工序,C指工序之间加工的先后约束的合取弧集,D指每对工序必须在相同机器上加工的析取弧集。
JSP实例(n=3,m=4)的DG模型图,结合图3。其中,析取弧用虚线表示,合取弧用实线表示。虚线表示相同机器上工件可能的顺序,而实线表示每个工件的工序顺序。析取图中从虚拟开始节点到虚拟终止节点的最长路径长度等于调度的总完工时间。
二、并行机作业车间调度的框架
转移瓶颈算法(Shifting Bottleneck Procedure,SBP)是解决JSP的最佳方法之一,但原始的SBP不能处理并行机。通过嵌入元启发式思想,SBP将更高效。首先,建立一个局部析取图(partial disjunctive graph,PDG),PDG中定向析取弧链接排好序的机器,无向析取弧链接未排好序的机器。针对给定的PDG,并行机作业车间调度可以分解为一组不同释放时间的单机调度SMS(single-machine scheduling)或者并行机调度PMS(parallel-machine scheduling)子问题。分解后生成的SMS和PMS子问题的数量等于PDG中未排序的单台机器和并行机的数量。
三、本发明对原有SBP进行了四项改进来解决并行机作业车间调度问题:
(1)拓扑排序算法:分成SMS和PMS子问题。
(2)Carlier算法:求解SMS子问题
(3)Jackson算法:求解PMS子问题
(4)启发式算法:并行机禁忌搜索
四、所述的拓扑排序算法是用来分解并行机作业车间调度为一组SMS或者PMS子问题,其步骤如下:拓扑排序算法步骤:
(1)对PDG进行拓扑排序,并得到拓扑序列
(2)确定序列中的每一工序的释放和交货时间
(3)对涉及的机器分组工序
五、所述的Carlier算法是解决步骤2中拓扑排序算法得到的SMS子问题,它在可选的工件上充分利用Schrage算法,首先加工具有最高交货时间的工件。
本发明对Schrage算法的改进:考虑满足一定条件的长尾工件。设ri为释放时间,qi为交货时间,pi为处理时间:
在Schrage算法中,(1)如果ri<rj且qi>qj,工件i先于工件j加工在逻辑上是正确的。(2)如果ri<rj且qi<qj,则工件i和工件j谁先加工存在歧义,事实证明在这种情况下,工件j先于工件i加工的必要条件是qj-qi>m且pi>m,其中m=rj-t,t=max{c,ri},c为工件i加工之前的工件的完工时间。
本发明改进的Carlier算法其步骤为:
(1)对当前SMS实例应用Schrage算法,保存Schrage调度得到的结果;
(2)如果存在干扰工件w满足qw<qc,则干扰工件w在关键集之后加工,然后返回本步骤1;
(3)根据保存的结果,选择最小总完工时间的最佳Schrage调度。
六、所述Jackson算法是解决并行机调度PMS子问题。一个PMS问题定义为一组n个独立的单工序工件在机器的l个并行单元上调度,工件的每一工序可以在任意可选的单元调度。目标是得到每一工件的完工交货时间最小的调度。
本发明的Jackson算法的步骤为:
(1)在所有未被调度的工件上选择具有最高交货时间的工件A;
(2)调度工件A到具有最小可用时间的第l个并行机上。
七、所述的基于GPU的禁忌搜索算法,结合图4,是一种并行元启发式算法,本发明为了用更少的时间得到最优解,用并行编程实现了禁忌搜索算法,多个CPU通过互相发送和接收解的策略来协作。这种方法增加了找到全局最优值的概率,使多个禁忌搜索算法在多个CPU上同时执行,利用GPU的多核架构,这些搜索算法的计算速度将得到提高。
本发明基于GPU的禁忌搜索算法的步骤如下:一个agent首先运行禁忌搜索算法,然后通过发送和接收解与其他agent进行交互。每个agent都拥有一个精英集合,集合中的每个元素是一个高质量的解,是当前agent找到的最好的一些解。一个精英集合使agent能够跟踪高质量的解,这些解要么是自己发现的,要么是在通信过程中从其他agent得到的。
上述结合附图对本发明的实施例作了详细描述,应该理解上述只是示例性的,因此,本发明的保护范围应当由所附的权利要求书的内容确定。